Mágica baseada no Grafo de Bruijn


Referência:

F. Thompson Leighton. Introduction to parallel algorithms and architectures: arrays, trees, hypercubes. Morgan Kaufmann Pub. 1992. ( ver pag. 487)

Qual a mágica:

Um baralho (incompleto) é cortado quantas vezes quiser. Distribui-se uma carta cada a 5 pessoas. O mágico pede para quem tiver carta vermelha levantar mão. Diz em seguida o que cada um tem (valor da carta inclusive naipe).

Explicacao da magica (baseado em grafo de Bruijn):

Cada carta do baralho é codificada por um codigo de 5 bits:

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.


Last modified: Tue Mar 18 17:23:36 BRT 2014