You are on page 1of 28

Sudoku Codifica amb menys de 400 bits l’estat d’una partida de sudoku.

Es
valorarà si el codi resultant és de menys de 300 bits.

NOTA: No cal saber jugar per fer l’exercici. Només cal saber que l’objectiu
és col·locar les xifres de l’1 al 9 a les caselles blanques per tal que
compleixin certes condicions.
Sudoku Tenim un tauler de 81 quadrats.
A cada quadrat podem tenir 10 coses diferents:
un nombre de l’1 al 9 o un espai en blanc que considerem que és un 0.

Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ...


23 = 8

Sudoku
10
24 = 16
Tenim un tauler de 81 quadrats. 25 = 32
A cada quadrat podem tenir 10 coses diferents: 26 = 64
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.
23 = 8

Sudoku Tenim un tauler de 81 quadrats.


A cada quadrat podem tenir 10 coses diferents:
24 = 16
25 = 32
26 = 64
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.

Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...
23 = 8

Sudoku Tenim un tauler de 81 quadrats.


A cada quadrat podem tenir 10 coses diferents:
24 = 16
25 = 32
26 = 64 100
un nombre de l’1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.

Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...

En aquest cas hem de codificar 41 nombres de dues xifres (de 0 a 99).


Per codificar 100 números necessitem 7 bits.
En total necessitem 41 * 7 = 287 bits
23 = 8

Sudoku
10
24 = 16
Tenim un tauler de 81 quadrats. 25 = 32
A cada quadrat podem tenir 10 coses diferents: 26 = 64 100
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.

Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...

En aquest cas hem de codificar 41 nombres de dues xifres (de 0 a 99).


Per codificar 100 números necessitem 7 bits.
En total necessitem 41 * 7 = 287 bits

Podriem condificar 40 de dues xifres i 1 de una xifra.

En total necessitariem 40 * 7 + 1 * 4 = 284


23 = 8

Sudoku Tenim un tauler de 81 quadrats.


A cada quadrat podem tenir 10 coses diferents:
24 = 16
25 = 32
26 = 64
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 1000
210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.

Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...

En aquest cas hem de codificar 41 nombres de dues xifres (de 0 a 99).


Per codificar 100 números necessitem 7 bits.
En total necessitem 41 * 7 = 287 bits

Considerem els quadrats de tres en tres. 539, 876, 412, 728 ...
23 = 8

Sudoku Tenim un tauler de 81 quadrats.


A cada quadrat podem tenir 10 coses diferents:
24 = 16
25 = 32
26 = 64
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 1000
210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits.

Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...

En aquest cas hem de codificar 41 nombres de dues xifres (de 0 a 99).


Per codificar 100 números necessitem 7 bits.
En total necessitem 41 * 7 = 287 bits

Considerem els quadrats de tres en tres. 539, 876, 412, 728 ...

En aquest cas hem de codificar 27 nombres de tres xifres (de 0 a 999).


Per codificar 1000 números necessitem 10 bits.
En total necessitem 27 * 10 = 270 bits
23 = 8

Sudoku Tenim un tauler de 81 quadrats.


A cada quadrat podem tenir 10 coses diferents:
24 = 16
25 = 32
26 = 64
un nombre de l'1 al 9 o un espai en blanc que considerem que és un 0. 27 = 128
28 = 256
29 = 512
Considerem cadascun dels 81 quadrats. 5, 3, 9, 8, 7, 6, 4, 1, 2, 7, 2, 8 ... 210 = 1024

Per codificar 10 números necessitem 4 bits.


En total necessitem 81 * 4 = 324 bits. Eficiencia
10/16= 0,625
Considerem els quadrats de dos en dos. 53, 98, 76, 41, 27, 28 ...

En aquest cas hem de codificar 41 nombres de dues xifres (de 0 a 99).


Per codificar 100 números necessitem 7 bits.
En total necessitem 41 * 7 = 287 bits 100/128= 0,781

Considerem els quadrats de tres en tres. 539, 876, 412, 728 ...

En aquest cas hem de codificar 27 nombres de tres xifres (de 0 a 999).


Per codificar 1000 números necessitem 10 bits. 1000/1024= 0,976
En total necessitem 27 * 10 = 270 bits
Sudoku Tenim un tauler de 81 quadrats.
A cada quadrat podem tenir 10 coses diferents:
un nombre de l’1 al 9 o un espai en blanc que considerem que és un 0.

Si considerem els quadrats de quatre en quatre aumentarem l’eficiencia?


Sudoku Tenim un tauler de 81 quadrats.
A cada quadrat podem tenir 10 coses diferents:
213 = 8192
214 = 16384
10000

un nombre de l’1 al 9 o un espai en blanc que considerem que és un 0.

Si considerem els quadrats de quatre en quatre aumentarem l’eficiencia?

5398, 7641, 2728 ...

Per codificar 10000 números necessitem 14 bits.

En total necessitem 21 * 14 = 294 bits.


Sudoku Tenim un tauler de 81 quadrats.
A cada quadrat podem tenir 10 coses diferents:
213 = 8192
214 = 16384
10000

un nombre de l’1 al 9 o un espai en blanc que considerem que és un 0.

Si considerem els quadrats de quatre en quatre aumentarem l’eficiencia?

5398, 7641, 2728 ...


Bits Eficiencia
Per codificar 10000 números necessitem 14 bits. 324 10/24= 0,625

En total necessitem 21 * 14 = 294 bits.

287 100/27= 0,781


Eficiencia
10000/214= 0,61

270 1000/210= 0,976


Escacs Una tauler d’escacs consisteix en una quadrícula de 8x8 i pot contenir com a
molt aquestes peces blanques: 1 rei, 1 reina, 2 torres, 2 alfils, 2 cavalls i 8
peons, així com les mateixes peces però negres. Codifica amb menys de 300
bits l’estat d’una partida qualsevol d’escacs.

Hem de considerar una partida ja començada, amb peces menjades.


S’han de cobrir tots els casos que ens podem trovar.

NOTA: No cal saber jugar a escacs per fer l’exercici.


Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres. (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de considerar una partida ja començada, amb peces menjades.


S’han de cobrir tots els casos que ens podem trovar.

Podem codificar:

La casella (fila i columna) i la peça que hi ha a aquesta casella


(els elements es guardan ”desordenats”)

Quina peça hi ha a cada casella On es trova cada peça

1,A: cap Rei blanc: 1,G


1,B: Torre blanca Reina blanca: 1,D
1,C: cap Torre 1 blanca: 1,B
1,D: Reina blanca Torre 2 blanca: 7,e
… …
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Guardem els
elements
desordenats
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Agafem les peçes desordenadament i ens hem de guardar de cada peça la fila, la
Guardem els columna i quina peça hi es.
elements
desordenats • Com tenim 8 files necessitem 3 bits
• Com tenim 8 files necessitem 3 bits
• Com tenim 32 peces necessitem 5 bits

Per cada peça necessitem 11 (= 3 + 3 + 5) bits

Com hi ha 32 peçes necessitem 32 * (3 + 3 + 5) = 352 bits


Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Quina peça hi ha a
cada casella

1,A: cap
1,B: Torre blanca
1,C: cap
1,D: Reina blanca

Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de predeterminar en quin ordre considerem les caselles (per exemple 1A, 1B, 1C,
1D … 8F, 8G, 8H) i com codifiquem cada peça.

• Com tenim 32 peces necessitem 5 bits

Quina peça hi ha a
cada casella • Podem considerar que tenim 16 peces de cada color.

1,A: cap També necessitem 5 bits: 4 bits per codificar les 16 peces i 1 bit per codificar el
1,B: Torre blanca color
1,C: cap
1,D: Reina blanca
… Necessitem 64 * 5 = 320 bits
Però realment tenim 32 peces diferents ?
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de predeterminar en quin ordre considerem les caselles (per exemple 1A, 1B, 1C,
1D … 8F, 8G, 8H) i com codifiquem cada peça.

• En realitat només tenim 12 peces diferents i per tant necessitem 4 bits


Rei Reina Torre Cavall Alfil Peó
Blanc 0001 0010 0011 0100 0101 0110
Quina peça hi ha a Negre 0111 1000 1001 1010 1011 1100
cada casella
• També podem considerar que tenim 6 peces de cada color. En aquest cas també
1,A: cap necessitem 4 bits: 3 per codificar les 6 peces i 1 per codificar el color
1,B: Torre blanca
1,C: cap Rei Reina Torre Cavall Alfil Peó

1,D: Reina blanca Blanc 0001 0010 0011 0100 0101 0110
… Negre 1001 1010 1011 1100 1101 1110

Necessitem 64 * 4 = 256 bits


Hem considerat tots el casos ? NO
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de predeterminar en quin ordre considerem les caselles (per exemple 1A, 1B, 1C,
1D … 8F, 8G, 8H) i com codifiquem cada peça.

• Tenim 12 peces diferents i la casella buida. Necessitem 4 bits


Rei Reina Torre Cavall Alfil Peó
Blanc 0001 0010 0011 0100 0101 0110 Casella
0000
buida
Quina peça hi ha a Negre 0111 1000 1001 1010 1011 1100
cada casella
• Si considerem que tenim 6 peces de cada color i la ”casella buida” també
1,A: cap necessitem 4 bits: 3 per codificar les 7 peces i 1 per codificar el color
1,B: Torre blanca
1,C: cap Rei Reina Torre Cavall Alfil Peó
Blanc 0001 0010 0011 0100 0101 0110 Casella
1,D: Reina blanca buida
0000
… Negre 1001 1010 1011 1100 1101 1110

Continuem necessitant 64 * 4 = 256 bits


Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de predeterminar en quin ordre considerem les caselles (per exemple 1A, 1B, 1C,
1D … 8F, 8G, 8H) i com codifiquem cada peça.

• Codificació: 0000 0011 0000 0010 0000 0000 0001 0000 …


Rei Reina Torre Cavall Alfil Peó
Casella
Podem codificar: Blanc 0001 0010 0011 0100 0101 0110
buida
0000
Quina peça hi ha a Negre 0111 1000 1001 1010 1011 1100
cada casella

1,A: cap • Codificació: 0000 0011 0000 0010 0000 0000 0001 0000 …
1,B: Torre blanca
1,C: cap Rei Reina Torre Cavall Alfil Peó
Blanc 0001 0010 0011 0100 0101 0110 Casella
1,D: Reina blanca buida
0000
… Negre 1001 1010 1011 1100 1101 1110

• Com en la fila 1 només hi ha peces blanques la codificació que veiem és la mateix


Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres. (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

On es trova cada peça

Rei blanc: 1,G 6


Reina blanca: 1,D 4
Torre blanca: 1,B 1
Torre blanca: 7,e 52
32
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres. (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Hem de predeterminar en quin ordre considerem les peces (per exemple el


que tenim a dalt) i com codifiquem on es trova cada peça. Per codificar la
posición tenim dues opcions:

• Guardar la coordenada (nombre, lletra). Són 8 nombres i 8 lletres.


Necessitem 6 bits: 3 + 3
Nombre 1 2 3 4 5 6 7 8
On es trova cada peça
Lletra A B C D E F G H
Rei blanc: 1,G 6 Codi 000 001 010 011 100 101 110 111
Reina blanca: 1,D 4
Torre blanca: 1,B 1 Codificació: 000110 000011 000001 110100 …
Torre blanca: 7,e 52
32
• Numerar les 64 caselles (del 0 al 63). Codificarles en binari.
Necessitem també 6 bits.
Necessitem
Codificació : 000110 000100 000010 110100 … 32 * 6 = 192 bits
Escacs Tenim un tauler de 64 quadrats.
Tenim 16 peces blanques (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)
Tenim 16 peces negres. (1 rei, 1 reina, 2 torres, 2 cavalls, 2 alfils i 8 peons)

Que passa quan a la partida es hem mengat algunes peces ?

Hem d’afegir un bit per dir si una peça es en joc o no.


Si és en lloc aquest bit serà 0 i sino será 1 (i les coordenades no importan)

Pert tant necessitarem 7 bits (6 + 1)


Nombre 1 2 3 4 5 6 7 8
On es trova cada peça
Lletra No és en
A B C D E F G H 1000000
joc
Rei blanc: 1,G 6 Codi 000 001 010 011 100 101 110 111
Reina blanca: 1,D 4
Torre blanca: 1,B 1
Torre blanca: 7,e 52 • Codificació: 0000110 0000011 0000001 0110100 … 1000000 1000000
32 Cavall blanc: 4,h
Cavall blanc: 7,c • Podem considerar que tenim 65 caselles (64 + 1). Les codifiquem en binari.
Alfil blanc: No és en joc Necessitem també 7 bits.
Alfil blanc: No és en joc
Necessitem
32 * 7 = 224 bits
Escacs
Quina peça hi ha a cada casella On es trova cada peça

1,A: cap Rei blanc: 1,G


1,B: Torre blanca Reina blanca: 1,D
1,C: cap Torre 1 blanca: 1,B
1,D: Reina blanca Torre 2 blanca: 7,e
… …

Necessitem Necessitem
64 * 4 = 256 bits 32 * 7 = 224 bits

0000 0011 0000 0010 0000 0000 0001 0000 … 0000110 0000011 0000001 0110100 …

Quina codificació és millor ?


Com de fàcil és trobar la posición d’una peça en concret ?
Com de fàcil es saber el contingut d’una casella ?
Quantes peces te cada jugador ?
Tarja TMG Des del 2001 els busos de Girona fan servir targes recarregables de viatges amb
un xip.

Aquest xip només te 1 KByte de memòria i dins aquesta memòria es guarda:

un número de sèrie de 32 bits,


el nombre de viatges que queden (fins un màxim de 512 viatges),
la data de caducitat (el dia que deixa de funcionar la targeta).

La resta de la memòria es dedica a guardar els últims viatges que s’han realitzat
amb la targeta:

línia (a Girona hi ha 12: L1, ..., L12),


data i hora del viatge (amb precisió de minuts),
si és un viatge normal o un transbord.

Com codificaries tu aquestes dades?


Quants viatges “recordarà” la targeta amb la teva codificació?
Hi ha alguna altra limitació de la teva codificació?

Aquest exercici no és tant d’ocupar el mínim espai si no de respondre mini-


problemes
Tarja TMG A la memoria tenim 1024 Bytes

• Número de sèrie de 32 bits à 4 Bytes

• El nombre de viatges que queden (fins un màxim de 512 viatges)

Hem de guardar 513 valors diferents


Necessitem 10 bits per guardarlo en Binari Natural à 2 Bytes

• Data caducitat (fins quan funciona). Considerem el format dd-mm-aaaa

Pel dia (dd) tenim 31 valors possibles


Necessitem 5 bits

23 = 8 Pel mes (mm) tenim 12 valors possibles


24 = 16
Necessitem 4 bits 5 + 4 + 7 = 16
25 = 32
26 = 64 à 2 Bytes
27 = 128
28 = 256 Per l’any hem de concretar quants valors possibles tenim
29 = 512 Podem codificar l’any a partir del 2001
210 = 1024
Amb 7 bits podem codificar 128 valors.
El 2001 el codifiquem com el 0 = 0000000
El 2128 el codifiquem com el 127 = 1111111
Tarja TMG A la memoria tenim 1024 Bytes i ens queden 1016 (=1024-8) Bytes per l’historial

• Línia. Hi ha 12. De l’1 a la 12 Necessitem 4 bits à 1 Byte

• Data Necessitem 16 bits à 2 Bytes

• Hora. Considerem el format hh-mm-ss

Per l’hora (hh) tenim 24 valors. Del 0 al 23. 5 bits per codificarla en b.n.
Pels minuts (mm) tenim 60 valors. Del 0 al 59. 6 bits per codificarlos en b.n.

En total necessitem 11 bits (5+6+6)


à 2 Bytes
• Viatge normal o transbord. Necessitem 1 bit.
23 = 8 à 1 Byte
24 = 16
25 = 32 Per cada viatge necessitem 6 Bytes. A l’historial podem tenir 169 viatges (1016/6)
26 = 64
27 = 128
28 = 256 Si aprofitem algun dels bits que no fem servir (línea u hora) només necessitem 5
29 = 512 Bytes. En aquest cas a l’historial podem tenir 203 viatges (1016/5)
210 = 1024

Considerar que necessitem exactament 32 bits (4+ 16 + 11 + 1), es a dir 4 Bytes. En


aquest cas a l’historial podem tenir 254 viatges (1016/4)

You might also like