En este desafío, ¡tienes que llevar el arte ASCII (que generalmente es 2D) a 3D!
¿Cómo?
Me gusta esto,
X X DD
X D D
X X DD
a...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Entonces, ¿cómo hacemos eso ?
Dado el arte ascii y N
, repito esta N
vez.
- para cada personaje (lo llamaremos
A
): - dejar
B
ser el personaje que es exactamente 1 correcto y 1 arriba deA
- si
B
es un espacio o no está definido: - establecer
B
aA
.
Especificaciones
- La primera entrada puede ser una cadena con caracteres de nueva línea o una lista de cadenas que representan el arte 2D ASCII.
- Puede usarlo
%END%
para etiquetar el final de la entrada, pero esto no es obligatorio. - La segunda entrada será
N
. Será un número entero positivo. - Todas las líneas de las cadenas tendrán la misma longitud.
Ejemplos
Entrada: ("###\n###",1)
Salida:
###
####
###
Reglas
Se aplican reglas básicas de código de golf .
Además, si tiene preguntas, asegúrese de preguntar en los comentarios.
Respuestas:
Perl, 81 bytes
Código de 75 bytes + 6 para
-i -n0
.Tenga en cuenta que los
\e
caracteres son ASCII\x1b
pero\e
se utilizan para facilitar la prueba.Tenga en cuenta que esta solución utiliza secuencias de escape ANSI y requiere un terminal compatible, además de utilizar el
-i
argumento de la línea de comandos para pasar el número de 'dimensiones' que desea.Uso:
En un terminal compatible con Linux, ejecute
PS1=
primero para asegurarse de que su solicitud no sobrescriba la imagen mostrada.fuente
CJam,
2524 bytesUn bloque sin nombre que espera una lista de cadenas y el número de repeticiones en la pila y deja una nueva lista de cadenas en su lugar.
Pruébalo aquí. (Incluye un contenedor de prueba que lee la cadena de STDIN para mayor comodidad).
Explicación
fuente
S
funciona para el espacio inicial? Además, ¿está permitido usar variables (que podrían haberse sobrescrito) en una función?S
no funciona, porque en su lugarf
estaría mapeando esa cadena. Re funciones, creo que sí, en lenguajes "normales", también hay muchas presentaciones de funciones que se basan en globales que no son manipuladas entre invocaciones.APL, 49 bytes
Entrada: vector de vectores de caracteres. Ejemplo:
Cómo funciona:
↑⍵
convierte el argumento en una matriz de caracteres⎕UCS
de char a entero(32∘≠×⊣)
sustituir los espacios (32) con ceros...⍣⍺⊣
aplicar ⍺ (el argumento izquierdo) multiplicado por la función de la izquierdas←0⍪⍵,0
borde con ceros arriba y a la derecha el argumento1⊖¯1⌽
gire 1 hacia arriba y 1 hacia la derechas+(s=0)×
suma al original la versión desplazada pero solo encima de los ceros del original32⌈
convierte los ceros en 32s⎕UCS
de entero a charfuente
MATL , 24 bytes
El formato de entrada es
Entonces el otro ejemplo es
La salida contiene espacios en blanco adicionales, lo que está permitido por el desafío.
Pruébalo en línea!
Si una matriz de caracteres 2D es aceptable como entrada (le he pedido al OP dos veces ...), la primera
c
se puede eliminar, por lo que 23 bytes :El formato de entrada en este caso es (todas las cadenas tienen la misma longitud, lo que puede requerir el relleno derecho con espacios):
Pruébalo en línea!
Explicación
fuente
Convexo , 23 bytes
El recuento de bytes supone la codificación CP-1252.
Un bloque sin nombre que espera una lista de cadenas y el número de repeticiones en la pila y deja una nueva lista de cadenas en su lugar.
Pruébalo en línea!
Este es un puerto directo de mi respuesta de CJam a Convex (que se basa en gran medida en CJam). La única diferencia es que Convex usa en
Ë
lugar deer
transliteración, ahorrando un byte. Gracias a GamrCorps por informarme al respecto.fuente
Pyth,
5433 bytesBanco de pruebas.
fuente
;
?;
no es lo habitual;
en lenguajes de programación.;
es una variable;
en lambdas ...I
,.?
,V
,F
,;
, (declaraciones explícitas) muy inferior, y ellos serán reemplazados por?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 bytes
Acepta y devuelve una serie de cadenas, antepone una fila adicional para la salida, asegura que cada fila contenga al menos un espacio, las divide en caracteres, realiza un bucle aunque intenta copiar los caracteres en la fila superior y la columna a la derecha, luego recursivamente se llama a sí mismo para completar el ciclo.
fuente
Python 2, 116 bytes
Voy a jugar al golf más pronto.
fuente
lambda
no es más corto?e
allí. Además,exec
es una declaración, por lo que no puede estar en una lambda.Ruby, 95 bytes
Cada uno
<Esc>
es un carácter ESC literal (0x1b
).Uso
Asigne el lambda a una variable, por ejemplo
func
.Sin golf
La
forward
secuencia de escape\e[1C
, mueve el cursor hacia adelante (derecha) 1 espacio y\e[<n>A
sube lasn
líneas. Básicamente, lo que hace este código es imprimir las "capas" de atrás hacia adelante, reemplazando espacios con laforward
secuencia para evitar sobrescribir las otras capas con un espacio.fuente
f=
antes->
en la versión de golf. Eliminarlo por -2 bytes.