Introducción
Las matrices también se pueden ver como un campo para una pelota que rebota. Por supuesto, esto suena muy vago, así que aquí hay un ejemplo de una 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]
El desafío es generar las matrices devueltas . Estos están hechos de patrones diagonales que rebotan en los bordes del campo. Este camino apunta hacia arriba . La ruta para la primera matriz rebotada (en la que la ruta se rebota directamente del egde) es:
[1, -, -, -, 5, -, -, -, 9]
[-, 8, -, 6, -, 4, -, 2, -]
[-, -, 3, -, -, -, 7, -, -]
De izquierda a derecha, esto resultaría en [1, 8, 3, 6, 5, 4, 7, 2, 9]
. Este es nuestro primer conjunto rebotado. La ruta para la segunda matriz rebotada:
[-, 2, -, -, -, 6, -, -, -]
[9, -, 7, -, 5, -, 3, -, 1]
[-, -, -, 4, -, -, -, 8, -]
Esto da como resultado [9, 2, 7, 4, 5, 6, 3, 8, 1]
. La ruta para el tercer conjunto rebotado es:
[-, -, 3, -, -, -, 7, -, -]
[-, 8, -, 6, -, 4, -, 2, -]
[1, -, -, -, 5, -, -, -, 9]
Esto da como resultado [1, 8, 3, 6, 5, 4, 7, 2, 9]
. Entonces las tres matrices devueltas son:
[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]
Tarea
Dado que al menos 1 matriz contiene solo enteros no negativos, con todas las matrices que tienen la misma longitud, genera todas las matrices devueltas.
Casos de prueba
Caso de prueba 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]
Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
Respuestas:
Pyth, 17 bytes
Explicación:
Probarlo aquí .
fuente
JavaScript (ES6), 70
PRUEBA
fuente
CJam,
3130 bytesEntrada y salida como una lista de matrices de estilo CJam.
Pruébalo aquí.
Definitivamente golfable ...
fuente
Jalea,
292524 bytes¡Gracias por @ Sp3000 por ayudarme a jugar golf en 5 bytes!
Pruébalo en línea!
fuente
Ruby (2.2.2p95), 124 bytes
Esto probablemente podría ser mucho mejor. ¡Descubriré cómo más tarde!
fuente
Japt,
55494139 bytesWow, eso fue muy complicado y muy divertido.
¡Pruébelo en línea!
Salidas en orden inverso a los ejemplos. Esto se romperá ligeramente en las entradas de más de 100 matrices; Esperemos que esto no haga mucha diferencia.
Versión no competitiva, 36 bytes
Había implementado estas dos funciones numéricas antes del desafío:
ò
- igual queo
, pero devuelve en[X..Y]
lugar de[X..Y)
ó
- igual queo
, pero devuelve en[X..X+Y)
lugar de[X..Y)
Pero debido a una ubicación incorrecta
0
, tenían errores y siempre devolvían matrices vacías. Esto ahora ha sido arreglado.¡Pruébelo en línea!
fuente
Python 2,
107106108105104 bytes(Se eliminaron algunos parens adicionales) (Ubicación de inicio incorrecta (ب_ب)) (ya tenía una lista de esa longitud)
Es legal tener la entrada como argumento para una función, ¿verdad? Esta es la primera vez que envío mi código de respuesta de golf.
fuente
APL, 33 caracteres
Suponga ⎕IO ← 0. La idea es que el movimiento de rebote se puede obtener mediante un simple desplazamiento hacia arriba de una matriz, si la matriz original se aumenta a lo largo de la primera dimensión con la matriz invertida con su primera y última fila afeitada. Gráficamente:
desde
En APL
reverse
yupward rotate
son el mismo símbolo:⊖
.fuente
⊃
en lugar de0⌷
.Clojure, 125 bytes
Wow, esto acumuló personajes bastante rápido.
Solo trato de guardar bytes
let
definiendo valores de uso frecuente.fuente
Jalea *, 15 bytes
Pruébalo en línea!
* Versión más nueva
fuente