Introdução
O XOR é um portão lógico digital que implementa um ou exclusivo. Na maioria das vezes, isso é mostrado como ^
. Os quatro resultados possíveis em binário:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Isso também pode ser visto como módulo 2 de adição no binário. Em decimal, precisamos converter o decimal em binário 35 = 100011
e 25 = 11001
. Para calcular o valor XOR, os colocamos um sobre o outro:
100011
11001 ^
--------
111010 = 58 in decimal
A tarefa : quando receber um valor inteiro N maior que 1, produza uma tabela XOR com o tamanho N + 1. Por exemplo, N = 5:
0 1 2 3 4 5
1 0 3 2 5 4
2 3 0 1 6 7
3 2 1 0 7 6
4 5 6 7 0 1
5 4 7 6 1 0
Você pode ver que existe um espaço na frente de cada número, porque o valor mais alto da tabela possui o comprimento 1. No entanto, se usarmos N = 9, obteremos a seguinte grade:
0 1 2 3 4 5 6 7 8 9
1 0 3 2 5 4 7 6 9 8
2 3 0 1 6 7 4 5 10 11
3 2 1 0 7 6 5 4 11 10
4 5 6 7 0 1 2 3 12 13
5 4 7 6 1 0 3 2 13 12
6 7 4 5 2 3 0 1 14 15
7 6 5 4 3 2 1 0 15 14
8 9 10 11 12 13 14 15 0 1
9 8 11 10 13 12 15 14 1 0
O valor mais alto tem o comprimento 2, portanto, o valor está alinhado à direita com o comprimento 3 (comprimento mais alto + 1).
Regras:
- O espaço em branco à esquerda não é obrigatório, apenas se usado (ou não) de forma consistente
- Você deve gerar uma tabela no formato mostrado acima.
- O preenchimento entre as colunas deve ser o menor possível
- Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
output an XOR table with the size N+1