F. Thompson Leighton. Introduction to parallel algorithms and architectures: arrays, trees, hypercubes. Morgan Kaufmann Pub. 1992. ( ver pag. 487)
c1 c2 c3 c4 c5,
onde
c1 codifica a cor: por exemplo: 0 vermelho
1 preto
c1 c2 codificam naipe: por ex: 00 copas
01 ouros
10 espada
11 paus
c3 c4 c5 + 7 codificam o numero da carta:
000 codifica 7
001 8
010 9
011 10
100 J
101 Q
110 K
111 A
Agora arranje o baralho usando cartas com valor 7 ou maior, comecando a primeira carta codificada por
1. 00001 (pela codificacao acima: é a carta 8 de copas)
sendo a primeira carta
c1 c2 c3 c4 c5,
a segunda carta sera' formada pelo codigo
c2 c3 c4 c5 c6 (isto e' repetindo os primeiros 4 bits da primeira)
com c6 = c1 + c3 (onde + é ou-exclusivo: 0+0=0
0+1=1
1+0=1
1+1=0)
a segunda carta sera' portanto
2. 00010 (isto e', 9 de copas)
A mesma regra e' usada para as cartas seguintes. Assim teremos a terceira carta e as demais:
3. 00100
4. 01001
5. 10010
6. 00101
7. 01011
8. 10110
9. 01100
10. 11001
11. 10011
12. 00111
13. 01111
14. 11111
15. 11110
16. 11100
17. 11000
18. 10001
19. 00011
20. 00110
21. 01101
22. 11011
23. 10111
24. 01110
25. 11101
26. 11010
27. 10101
28. 01010
29. 10100
30. 01000
31. 10000
00001 (repetindo o a primeira carta).
Sao usadas portanto 31 cartas (note que a carta 00000 nao e' usada: isto e' 7 de copas)
Dadas as cores de 5 cartas consecutivas do ciclo acima, temos a codificacao da primeira das 5. Para saber a segunda das 5, basta aplicar a regra.
Exemplo:
A segunda e terceira pessoaa levantaram mao (isto e' tem carta vermelha).
Entao o codigo e' 10011.
A primeira pessoa tem portanto espada (10) e valor 10 (011). Aplica-se a regra para saber a carta da segunda pessoa:
c6 = c1 + c3 = 0 + 1 = 1
portanto 00111: copas (00) e valor ACE.
E assim sucessivamente.