Digamos que tengo algo de arte ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Fuente )
Pero quiero centrarme en el cable de este joystick, porque realmente quiero una imagen de un camino de jardín, que conduce a una puerta.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Podría copiar línea tras línea, podría usar un editor de texto con modo de selección de bloque, o ... ¡podría escribir un código!
Entonces, mi código necesita cinco argumentos:
- Una pieza de arte ASCII, una cadena separada por una nueva línea.
- El eje X de la esquina superior izquierda (1 indexado, desde la columna de la izquierda, entero positivo)
- El eje Y de la esquina superior izquierda (1 indexado, desde la fila superior, entero positivo)
- Ancho de la imagen resultante (entero positivo)
- Altura de la imagen resultante (entero positivo)
Casos de prueba
Imagen ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Sendero del jardín
- X: 10
- Y: 15
- Ancho: 5
- Altura: 7
Resultado:
,=.
-|=|-
| |
\ \
) )
/ /
( (
Icono de DB
- X: 3
- Y: 12
- Ancho: 6
- Altura: 4
Salida:
,-""-.
i-..-i
| |
`-..-'
Anciano alienígena
- X: 9
- Y: 1
- Ancho: 7
- Altura: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Firma
- X: 16
- Y: 19
- Ancho: 3
- Altura: 1
hjw
Reglas
- La salida se puede dar por cualquier método conveniente .
- Un programa completo o una función son aceptables.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Y
debe inclinarse15
, y en TC 2,X
debe ser3
Respuestas:
Lienzo , 1 byte
Pruébalo aquí!
Toma arte de altura, ancho, Y, X y ASCII como entradas, en ese orden.
Aunque casi todo lo relacionado con los objetos de arte ASCII en Canvas está indexado en 0,
@
por alguna razón está indexado en 1. ¯ \ _ (ツ) _ / ¯fuente
Python 2 ,
6462 bytesPruébalo en línea!
Si
X
yY
puede ser0
indexado:Python 2 , 56 bytes
Pruébalo en línea!
fuente
Carbón de leña , 7 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma coordenadas 0 indexadas. Explicación:
Imprima el arte ASCII.
Salta a la esquina superior izquierda del rectángulo deseado.
Recorte el lienzo al tamaño deseado.
fuente
Pip
-n
, 21 bytesPruébalo en línea!
O, si se permite la indexación 0 ...
Pip
-n
, 17 bytes :Pruébalo en línea!
Explicación
Toma los cinco argumentos como argumentos de línea de comandos.
Las soluciones anteriores también suponen que la entrada es un rectángulo perfecto, es decir, las líneas tienen la misma longitud. De lo contrario, se necesitan 2 bytes adicionales (use en
-l
lugar de-n
):fuente
05AB1E ,
2119 bytesPruébalo en línea!
O si
0-indexing is allowed
:05AB1E , 18 bytes
Pruébalo en línea!
fuente
[X1, X2]
y[Y1, Y2]
comov³ŸNåiy²ŸèJ=
Japt
-R
,1311 bytesIntentalo
2 bytes guardados gracias a Kamil Drakari
9 bytes si no fuera por el requisito innecesario de que las soluciones usen indexación basada en 1.
Explicación
fuente
t
, y otros 2 bytes por 0 indexación. Puede valer la pena esperar en el segundo puesto que OP no ha aclarado si la indexación 0 es aceptable o ha solucionado los casos de prueba.t
método también funciona en matrices.JavaScript (Node.js) ,
7069 bytes-1 Gracias @Shaggy por la
splice()
idea.Pruébalo en línea!
El arte ASCII dado es molesto tbh
fuente
J , 45 bytes
Pruébalo en línea!
Notas: J acepta hasta 2 argumentos, izquierdo y derecho. El argumento derecho es la cadena de arte ASCII, la izquierda, una lista de valores UHXW
Simulo la nueva línea y la llamada a la función tiene un código para convertir la cadena en una matriz.
fuente
V , 16 bytes
Pruébalo en línea!
Se espera que la entrada se rellene con espacios para ser un rectángulo perfecto. Además, la entrada 'Y' viene antes que la 'X'.
Hexdump:
fuente
C (gcc) ,
118109bytesLa entrada puede contener líneas irregulares: las nuevas líneas se imprimen si existen en el rango y.
Gracias a ceilingcat por la sugerencia.
Pruébalo en línea!
fuente
Jalea , 11 bytes
Pruébalo en línea!
Toma el arte ASCII como una cadena r multilínea de Python (para evitar problemas con las barras invertidas).
fuente
Haskell , 61 bytes
Pruébalo en línea!
Toma argumentos en orden:
x
,y
,w
,h
,s
.fuente
Bash + coreutils, 37
Curiosamente, GNU tail 8.28 (en Ubuntu 18.04) permite el
+NUM
formato, mientras que GNU tail 8.29 en TIO requiere 2 bytes adicionales para esto-n+NUM
.Pruébalo en línea!
Pensé que hacer todo esto
sed
podría ser más corto, pero a 50 bytes no:fuente
K4 , 31 bytes
Solución:
Ejemplos:
Explicación:
Tome la entrada indexada 1, genere las coordenadas x / y e indexe en arte ascii.
fuente
R , 62 bytes
Quizás una solución sorprendentemente corta para un desafío de texto en R, porque no necesitamos leer todo el texto en una matriz.
Pruébalo en línea!
fuente
\ / \ /> , 123 bytes
La entrada consiste en una sola línea de variables de entrada delimitados por espacios
x
,y
,w
, yh
, seguido por el arte ascii en la línea siguiente en adelante.Explicación
Este código usa la capacidad de \ / \ /> para auto modificarse colocando el arte ascii en el código mismo, que termina luciendo así:
Luego toma los caracteres en el rectángulo especificado fuera del código y lo genera.
fuente