Dados dos entradas - una de ellas una cadena no vacía imprimible ASCII (incluyendo el espacio, excluyendo nueva línea), el otro es uno de dos valores distintos, consistentes de su elección ( 1 / 0
, l / r
, left / right
, etc.) - salida de un avión arte ASCII banner de la cadena, apuntando hacia la izquierda o hacia la derecha. Por coherencia, usaré left
y a lo right
largo de esta descripción del desafío.
El plano es |-DI>-/
( left
) o \-<ID-|
( right
). Como el banner es claro, consiste en los caracteres de la cadena de entrada separados por espacios, ya sea de izquierda a derecha ( left
) o de derecha a izquierda ( right
), y rodeados por un cuadro de la forma
/--/
---< <
\--\
o
\--\
> >---
/--/
Nota Debe haber un espacio entre el inicio / final del mensaje y los >
, <
caracteres.
Por ejemplo, aquí está el mensaje HAPPY BIRTHDAY!
y la dirección left
:
/-------------------------------/
|-DI>-/---< H A P P Y B I R T H D A Y ! <
\-------------------------------\
Aquí está el mensaje PPCG
y la dirección right
. Tenga en cuenta que las letras aparecen "al revés" cuando se ven desde este lado del banner:
\---------\
> G C P P >---\-<ID-|
/---------/
Reglas
- Las nuevas líneas iniciales o finales o espacios en blanco son opcionales, siempre que los caracteres se alineen correctamente.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- 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).
eval
- Ingrese un programa que genere un plano orientado a la izquierda para la izquierda, y un programa que genere un plano orientado a la derecha para la derecha.Respuestas:
JavaScript (ES6),
141138 bytesLa cadena y la dirección se ingresan mediante la sintaxis de curry.
'/\n|-DI>-/---< '
por izquierda,'/\n|-DI<-\\---> '
por derecha.Mostrar fragmento de código
fuente
eval
... solo proporcione las fuentes de función izquierda y derecha como sus dos valores de su elección. (Pensé que había un meta en esto, pero no puedo encontrarlo.)eval
"truco" sería esta laguna en el espíritu, incluso si no se indica explícitamente. Sin embargo, esta respuesta aquí es un poco inteligente.eval
como una respuesta seria . Una solución para desafíos futuros como este podría ser incluir entradas como parte del recuento de bytes.Perl 5 , 149 +1 (-p) = 150 bytes
Pruébalo en línea!
Entrada de dos líneas. Primero es el mensaje. El segundo es 0 para la izquierda, 1 para la derecha.
fuente
V ,
73, 65 bytesPruébalo en línea!
No es el mejor puntaje, pero eso se debe a que casi la mitad de esto proviene de revertir la salida.
Hexdump:
Toma la cadena como entrada al búfer y la dirección como
0
a la izquierda y1
a la derecha como argumentos de línea de comando.fuente
05AB1E , 63 bytes
Pruébalo en línea!
Basado en errores que pueden corregirse en el futuro.
fuente
0
de la segunda línea a a1
.Carbón ,
44403935 bytesPruébalo en línea! El enlace es a la versión detallada del código. La primera entrada es 1 para la derecha y 0 para la izquierda, la segunda es la cadena de banner. Editar:
guardado 1 byte usandoReflectButterfly(:Up)
comoactualmente tiene un error de posicionamiento del cursor, pero guardé otros 4 bytes invirtiendo la dirección de impresión, y ahora no importa cuál use.ReflectButterfly(:Down)
3834versión de 32 bytes si se permitió duplicar el banner:Pruébalo en línea! El enlace es a la versión detallada del código. La primera entrada es 0 para la derecha y 1 para la izquierda. Explicación:
Imprime el avión.
Imprima la mitad superior del cuadro (observe el espacio final).
Si la segunda entrada no es cero, invierta la dirección de impresión, de lo contrario, refleje el plano y el cuadro.
Imprima el mensaje con espacio adicional (espacio final de la nota). El cursor está en el extremo más alejado del cuadro del plano, por lo que el mensaje debe invertirse.
Reflexiona para obtener la mitad inferior de la caja.
fuente
Jalea ,
6865 bytesPruébalo en línea!
Toma 1 para la derecha, 0 para la izquierda.
-3 bytes gracias a @JonathanAllan ( grr que siempre olvido
AB+
hace lo mismo queB+@A
)fuente
³K“|-DI>-/---< “ < ”j
guarda un byte;LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡
ahorra otros 2 de la misma manera.Carbón , 56 bytes
-8 bytes gracias a totalmente humano y Erik the Outgolfer!
Pruébalo en línea!
La solución de los casos que Dzaima mencionó tuvo un alto costo en el recuento de bytes. 36 bytes si se nos permite invertir caracteres como
<
y/
.fuente
' '.join(s)
funciona. ¿Seguramente eso se puede usar en carbón?Join
funciona en cadenas.' '.join
en Charcoal. Les daré crédito a los dos.SOGL V0.12 ,
554743 bytesPruébalo aquí!
0 para izquierda y 1 para derecha
fuente
Python 2 ,
137136133 bytesPruébalo en línea!
1
por derecha y0
por izquierdafuente
1-2*d
con-d|1
(negard
xor1
).*list('></\\<>')[d::2]
PHP, 175 bytes
Ejecute con
-nr
, primer argumento =0
para mirar hacia la derecha o1
hacia la izquierda y segundo argumento = textoo intente en línea .
fuente
Perl 5 , 126 bytes
Código de 124 bytes + 2 para
-pl
.Pruébalo en línea!
fuente
Corea , 51 bytes
Pruébalo en línea!
Explicación
El programa se compone de algunas partes:
1: Inicialización
2: texto sin formato
El siguiente texto se envía al campo de contenido:
3: postamble
fuente
Excel VBA, 198 Bytes
Función de ventana inmediata anónima VBE que toma la entrada como cadena desde
[A1]
e int desde el rango[B1]
donde1
indica que el plano está a la izquierda e0
indica que el plano está a la derecha.fuente
Hojas de cálculo de Google, 210 bytes
Función de hoja de trabajo anónima que toma la entrada de entrada como cadena desde [A1] e int desde el rango [B1] donde 1 indica que el plano está a la izquierda y 0 indica que el plano está a la derecha.
fuente