Una vez tuve una hermosa matriz rectangular. Era muy simétrico, pero desafortunadamente se ha desmoronado y ahora solo tengo la esquina superior izquierda. Su tarea será reconstruir la matriz original.
Su programa recibirá una matriz bidimensional de enteros. Para facilitar el análisis, puede suponer que todos están entre 1 y 9. Su tarea es invertir las columnas de la matriz, sus filas y ambas, unir las esquinas resultantes y devolver la matriz resultante.
Puede suponer que las dimensiones de la matriz serán al menos 1x1.
Casos de prueba:
Input:
1 2 3
4 5 6
Output:
1 2 3 3 2 1
4 5 6 6 5 4
4 5 6 6 5 4
1 2 3 3 2 1
Input:
1
Output:
1 1
1 1
Input:
9
9
9
Output:
9 9
9 9
9 9
9 9
9 9
9 9
Este es el código de golf , ¡la menor cantidad de bytes gana!
WS⟦ι⟧‖M→↓
tal vez? 5 bytes para leer la entrada y 4 para reflejarla.╬
(o algún personaje similar) simplemente no puedo recordar cuál: cRespuestas:
Protón , 29 bytes
Pruébalo en línea!
Sin embargo, hay algunos otros enfoques interesantes:
Protón , 29 bytes
Pruébalo en línea!
Puede definir la subfunción espejo
g
en línea, porque Protón. Sin embargo, no es más corto.Protón , 36 bytes
Pruébalo en línea!
Esto debería ser de
(a=>zip(*(a+a[by-1])))*2
24 bytes, pero la función zip está completamente rota. Básicamente, lo refleja y comprime, y luego lo hace dos veces (puede multiplicar una función por un entero positivo para aplicar la función varias veces).fuente
Lona , 1 byte
Pruébalo aquí!
Salidas como una cadena multilínea
fuente
Haskell,
2524 bytesPruébalo en línea!
fuente
Python 3, 38 bytes
Pruébalo en línea!
Toma una lista de listas y devuelve una lista de listas.
Explicación:
fuente
Casco ,
76 bytesCasualmente, Erik había publicado exactamente el mismo código en la sala de chat de Husk aproximadamente un minuto antes de que publicara esto.
Pruébalo en línea!
Versión anterior, 7 bytes :
fuente
Retina , 13 bytes
Pruébalo en línea!
Explicación
En cada línea (
%
), haga coincidir el final de la línea ($
) e inserte el reverso ($^
) de toda la línea ($`
) e imprima el resultado con un salto de línea final (\
). Esto hace la reflexión a lo largo del eje vertical e imprime la primera mitad de la salida.Esto simplemente invierte toda la cadena, que es equivalente a una rotación de 180 °, o en nuestro caso (debido a la simetría horizontal) una reflexión a lo largo del eje horizontal. De esta manera, esto funciona es que
V
la expresión regular predeterminada (inversa) es(?m:^.*$)
, que normalmente coincide con cada línea de la cadena. Sin embargo, activamos la opción de línea únicas
, que también hace que los saltos de.
línea coincidan y, por lo tanto, esta expresión regular predeterminada coincide realmente con toda la cadena.El resultado de esto se imprime automáticamente al final del programa, dándonos la segunda mitad de la salida.
fuente
$
de la primera línea. ;) Agregaré una explicación más tarde.05AB1E , 2 bytes
Pruébalo en línea!
Crédito para el Sr. Xcoder señalando que las matrices de cadenas pueden contar como matrices 2D y Pavel por confirmarlo.
fuente
Jalea , 5 bytes
Pruébalo en línea!
fuente
m0Z$⁺
(por Hyper Neutrino).MATL , 5 bytes
Pruébalo en línea!
Explicación:
fuente
Octava ,
3329 bytes¡Gracias a @Giuseppe por jugar cuatro bytes!
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
62554946 bytesPruébalo en línea!
Como
Array.prototype.reverse()
invierte la matriz en su lugar, primero tengo que hacer una copia superficial en algún lugar.A=>(j=x=>[...x,...x.reverse()])(A).map(j)
No funciona.fuente
J , 12 bytes
Pruébalo en línea!
Explicación
fuente
awk, 88 bytes
fuente
Triangularidad , 31 bytes.
Pruébalo en línea!
Explicación
Al eliminar los caracteres que componen el relleno, esto es lo que hace el programa:
fuente
R , 57 bytes
Pruébalo en línea!
fuente
APL + WIN, 11 bytes
Solicita una matriz 2D de enteros.
fuente
Stax , 5 bytes
Ejecútelo y depúrelo en línea
:m
significa espejo, que esinput.concat(reverse(input))
.m
, en este contexto significa salida de cada línea después de aplicar ...Entonces, refleje la matriz de filas y luego refleje cada fila y salida.
fuente
Japt , 6 bytes
Pruébalo aquí
Explicación
fuente
Mathematica , 29 bytes
Pruébalo en línea!
fuente
SOGL V0.12 , 2 bytes
-1 byte gracias a dzaima.
Pruébalo aquí!
fuente
APL (Dyalog Classic) , 7 bytes
Pruébalo en línea!
fuente
Ruby , 35 bytes
Pruébalo en línea!
Una lambda que acepta una matriz 2D y devuelve una matriz 2D. Es sencillo, pero de todos modos aquí está la versión sin golf:
fuente
Java 8,
140131 bytesExplicación:
Pruébalo en línea.
fuente
J , 11 bytes
Función de prefijo tácito anónimo.
Pruébalo en línea!
|:
transponer@(…)
el resultado de:,
el argumento seguido por|.
su reverso^:2
y todo esto hecho dos vecesfuente
SNOBOL4 (CSNOBOL4) ,
119113 bytesPruébalo en línea!
Toma la entrada como cadenas en STDIN, sin espacios. Esto solo funciona porque los dígitos son
1-9
y fallarían de lo contrario.fuente
REVERSE
; el original solo admite aritmética de enteros también, por lo que puedo decir.C (gcc) ,
114111 bytesPruébalo en línea!
C (gcc) , 109 bytes (abusando de la facilidad de análisis)
Pruébalo en línea!
fuente
for(i=h+h;i-->0;puts(""))for(j=w+w;j-->0;)
printf("%d"
byte -1 adicional.Carbón de leña , 5 bytes
Pruébalo en línea!
Gracias a ASCII-only por un mejor formato de entrada.
fuente
[]
no lo convierte exactamente en 2D).Añadir ++ , 30 bytes
Pruébalo en línea!
El pie de página simplemente transforma la matriz anidada en el formato de la pregunta. Define una función
f
, que espera una matriz (matriz anidada) como argumento.fuente
Julia 0.6 ,
5549 bytesPruébalo en línea!
~(i)
es una función para crear un corte dei
abajo a1
.Asi que
~end
da la rebanadaend:-1:1
!(x)
es la función para hacer la reconstrucción de la matriz.fuente
V , 12 bytes
Pruébalo en línea!
Explicación:
fuente