Introdução
As matrizes também podem ser vistas como um campo para uma bola quicando. Claro que isso parece muito vago, então aqui está um exemplo de uma entrada:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
O desafio é gerar as matrizes devolvidas . Eles são feitos de padrões diagonais que saltam nas bordas do campo. Este caminho está apontado para cima . O caminho para a primeira matriz devolvida (na qual o caminho é devolvido diretamente do egde) é:
[1, -, -, -, 5, -, -, -, 9]
[-, 8, -, 6, -, 4, -, 2, -]
[-, -, 3, -, -, -, 7, -, -]
Da esquerda para a direita, isso resultaria em [1, 8, 3, 6, 5, 4, 7, 2, 9]
. Esta é a nossa primeira matriz devolvida. O caminho para a segunda matriz devolvida:
[-, 2, -, -, -, 6, -, -, -]
[9, -, 7, -, 5, -, 3, -, 1]
[-, -, -, 4, -, -, -, 8, -]
Isso resulta em [9, 2, 7, 4, 5, 6, 3, 8, 1]
. O caminho para a terceira matriz devolvida é:
[-, -, 3, -, -, -, 7, -, -]
[-, 8, -, 6, -, 4, -, 2, -]
[1, -, -, -, 5, -, -, -, 9]
Isso resulta em [1, 8, 3, 6, 5, 4, 7, 2, 9]
. Portanto, as três matrizes devolvidas são:
[1, 8, 3, 6, 5, 4, 7, 2, 9]
[9, 2, 7, 4, 5, 6, 3, 8, 1]
[1, 8, 3, 6, 5, 4, 7, 2, 9]
Tarefa
Dado pelo menos 1 array contendo apenas números inteiros não negativos, com todas as matrizes tendo o mesmo comprimento, produza todas as matrizes devolvidas.
Casos de teste
Caso de teste 1:
Input: Output:
[1, 2, 3, 4, 5] [1, 7, 3, 9, 5]
[6, 7, 8, 9, 0] [6, 2, 8, 4, 0]
Input: Output:
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
Input: Output:
[0, 0, 0, 0, 0, 0, 0, 0] [0, 9, 0, 9, 0, 9, 0, 100]
[9, 9, 9, 9, 9, 9, 9, 100] [9, 0, 9, 0, 9, 0, 9, 0]
[0, 0, 0, 0, 0, 0, 0, 0] [0, 9, 0, 9, 0, 9, 0, 100]
Input: Output:
[0, 1, 2, 3, 4, 5] [0, 7, 14, 9, 4, 11]
[6, 7, 8, 9, 10, 11] [6, 1, 8, 15, 10, 5]
[12, 13, 14, 15, 16, 17] [12, 7, 2, 9, 16, 11]
Input: Output:
[0, 0, 0, 0, 0, 0] [0, 2, 2, 6, 2, 6]
[1, 2, 3, 4, 5, 6] [1, 0, 3, 2, 5, 2]
[2, 2, 2, 2, 2, 2] [2, 2, 0, 4, 2, 4]
[9, 8, 7, 6, 5, 4] [9, 2, 3, 0, 5, 2]
Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
fonte
Respostas:
Pitão, 17 bytes
Explicação:
Experimente aqui .
fonte
JavaScript (ES6), 70
TESTE
fonte
CJam,
3130 bytesEntrada e saída como uma lista de matrizes no estilo CJam.
Teste aqui.
Definitivamente jogável ...
fonte
Geléia,
292524 bytesObrigado pelo @ Sp3000 por me ajudar a jogar fora 5 bytes!
Experimente online!
fonte
Ruby (2.2.2p95), 124 bytes
Provavelmente isso poderia ser muito melhor. Eu vou descobrir o quanto mais tarde!
fonte
Japt,
55494139 bytesUau, isso foi realmente complicado e incrivelmente divertido.
Teste online!
Saídas na ordem inversa aos exemplos. Isso quebrará um pouco nas entradas de mais de 100 matrizes; espero que isso não faça muita diferença.
Versão não concorrente, 36 bytes
Eu havia implementado essas duas funções numéricas antes do desafio:
ò
- igual ao
, mas retorna em[X..Y]
vez de[X..Y)
ó
- igual ao
, mas retorna em[X..X+Y)
vez de[X..Y)
Mas devido a um local errado
0
, eles eram de buggy e sempre retornavam matrizes vazias. Isso foi consertado agora.Teste online!
fonte
Python 2,
107106108105104 bytes(Caiu algumas parênteses extras) (Localização inicial incorreta (ب_ب)) (já tinha uma lista desse tamanho)
É legal ter a entrada como argumento para uma função, certo? Esta é minha primeira vez enviando minha resposta de código de golfe.
fonte
APL, 33 caracteres
Suponha ⎕IO ← 0. A ideia é que o movimento de salto possa ser obtido com um simples deslocamento para cima de uma matriz, se a matriz original for aumentada ao longo da primeira dimensão com a matriz invertida com a primeira e a última linha raspada. Graficamente:
a partir de
Em APL
reverse
eupward rotate
são o mesmo símbolo:⊖
.fonte
⊃
em vez de0⌷
.Clojure, 125 bytes
Uau, este caracteres acumulados bastante rápido.
Apenas tentando salvar bytes,
let
definindo os valores usados com freqüência.fonte
Gelatina *, 15 bytes
Experimente online!
* Versão mais recente
fonte