Info
Os números de 1 a 9 representam uma célula na vizinhança de Moore , com 5 sendo a célula central. Então:
123
456
789
1={-1,-1} 2={-1, 0} 3={-1, 1}
4={ 0,-1} 5={ 0, 0} 6={ 0, 1}
7={ 1,-1} 8={ 1, 0} 9={ 1, 1}
O desafio
Você pode receber entradas via STDIN, ARGV ou argumento de função e retornar o resultado ou imprimi-lo em STDOUT. A entrada é uma grade N x N (topologia do toro, ou seja, se x ou y é <1 então x ou y = N e se x ou y> N, em seguida x ou y = 1), e seu programa deve gerar uma interação dessa grade substituindo cada célula pelo valor na célula de Moore's Neighbourhood.
Exemplo de grade de entrada (2 x 2):
13
79
Resultado:
97
31
Explicação:
Começando na posição 1,1, temos o valor 1, já que o valor 1 = {- 1, -1}, temos que recuperar 1 + (- 1), 1 + (- 1) = 0,0. E como é um toro 0,0, envolvemos em N. Então, recuperamos o valor da célula na posição 1,1 (1) com o valor da célula na posição 2,2 (9).
Para a próxima célula 1,2, temos o valor 3 (= -1, 1), então 1 + (- 1), 2 + (1) = 0,3. Envolve cerca de 2,1, que é o valor 7.
O próximo valor da célula em 2,1 é 7 (= 1, -1), então 2+ (1), 1 + (- 1) = 3,0. Envolve cerca de 1,2, que é o valor 3.
O próximo valor de célula em 2,2 é 9 (= 1, 1), então 2+ (1), 2 + (1) = 3,3. Envolve em torno de 1,1, que é o valor 1.
Mais exemplos
Grade de entrada (3 x 3):
123
456
789
Saída esperada:
987
654
321
Grade de entrada (5 x 5):
77497
81982
32236
96336
67811
Saída esperada:
28728
37337
11923
73369
77433
Notas Finais
Se você tiver alguma dúvida, não hesite em comentar. Este é um desafio de código de golfe, o código mais curto vence!
Respostas:
APL (33)
APL foi feito para isso. Essa é uma função que pega a grade de entrada como uma matriz N por N e retorna a grade de saída como uma matriz N por N.
Teste:
fonte
Python, 174
Python era não feito para isso ... APL foi!
fonte
Python, 105
Pega e retorna uma lista de listas:
Pega e retorna uma sequência (148 caracteres):
fonte
MATLAB - 121 bytes
O MATLAB foi um pouco menos feito para isso que o APL, mas um pouco mais feito para isso que o Python. ;)
Saída de teste
fonte