(Inspirado por este desafío )
Dadas dos cadenas de entrada, una de las cuales es exactamente un carácter más largo que el otro, organice las cadenas en el arte ASCII como si fueran dos mitades de una cremallera que solo tiene la mitad de la cremallera. La palabra más larga forma la parte inferior de la cremallera, y es el primer y último carácter de la porción combinada con cremallera. Dado que ese párrafo es difícil de entender, eche un vistazo a algunos ejemplos:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Observe cómo paragraph
(la palabra más larga) forma la cremallera inferior, y la g r a p h
porción encapsula la e r e d
porción de zippered
, y las porciones z i p p
y p a r a
se compensan entre sí.
Entrada
- Dos cadenas ASCII en cualquier formato conveniente , con una garantizada de longitud uniforme y la otra exactamente un carácter más largo.
- Ninguna cadena contendrá espacios en blanco, pero puede contener cualquier otro valor ASCII imprimible.
- Puede tomar la entrada en cualquier orden. Indique en su envío el orden de entrada.
Salida
La representación artística ASCII resultante de las palabras con cremallera, como se describió anteriormente, nuevamente en cualquier formato conveniente.
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).
Ejemplos
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
La cadena más corta siempre es uniformeRespuestas:
Japt ,
3128 bytes¡Pruébelo en línea! Toma la cuerda más corta primero.
Explicación
fuente
Carbón ,
3331 bytesPruébalo en línea! El enlace es a la versión detallada del código. Toma la cuerda más corta primero. Editar: guardado 2 bytes ajustando la detección del punto medio. Explicación:
Pase sobre cada cuerda a su vez.
Pase por cada carácter de la cadena a su vez.
Imprime el personaje y mueve un cuadrado extra a la derecha.
Para la primera mitad de la cadena, mueva el cursor hacia abajo o hacia arriba según corresponda.
Después de imprimir la primera cadena, salte al punto de inicio de la segunda cadena y reemplace la primera cadena con la segunda, de modo que se imprima para el segundo bucle. (El código se ejecuta en ambos bucles, pero la segunda vez no funciona).
fuente
Pyth , 35 bytes
Pruébalo en línea!
fuente
Jalea ,
2726 bytes-1 byte gracias a Erik the Outgolfer (use repeat,,
¡
para reemplazar if?
, y una cláusula else aprobada¹
)Un programa completo que imprime el resultado con espacios en blanco iniciales, como se permite en la pregunta (o un enlace diádico que devuelve una lista de caracteres).
Pruébalo en línea!
¿Cómo?
fuente
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 bytesPruébalo en línea!
fuente
V ,
473830272625 bytesFinalmente vencer a la respuesta actual de Jelly
Toma entrada con la palabra más larga en la parte superior
Explicación que viene, no creo que haya mucho más para el golf.
Pruébalo en línea!
Explicación
fuente
V , 79 bytes
Pruébalo en línea!
Lo siguiente debe leerse con mucho sarcasmo y comillas aéreas .
¿Por qué sigo haciéndome esto a mí mismo?
Hexdump:
fuente
Jalea , 28 bytes
Pruébalo en línea!
¡Woo Jelly está compitiendo en un desafío de cuerdas y arte ascii ! \ o /
fuente
Ṗ
no se agregará un espacio final sino un final1
. Y omitir cualquier cosa que tenga que ver con espacios elimina la alineación de las letras. En general, este algoritmo usa la indexación para que las letras lleguen a un índice particular en una columna y luego el resto se llena con espacios, por lo que creo que esto no se puede jugar más. Al menos me alegra que CJam no supere a Jelly. ;)05AB1E ,
2623 bytesPruébalo en línea!
Explicación
Con entrada de ejemplo =
ppcg, tests
fuente
C # (.NET Core) , 163 bytes
Pruébalo en línea!
Probablemente hay mucho golf por hacer aquí, pero aquí hay un intento inicial que no es de LINQ. Función Lambda que toma primero la palabra más larga y devuelve una cadena con la salida.
fuente
l=>s=>
) es decirFunc<input1, Func<input2, output>>
.Java 8, 216 bytes
Una lambda al curry: toma
String
y devuelve una lambda deString
aString
. El parámetro para el lambda externo es la cadena más corta.No poder indexar en
String
s con sintaxis de matriz es ... desafortunado.Lambda sin golf
Explicación
l
es la longitud de la entrada más corta yi
es un índice multipropósito, inicializado para referirse al primer carácter de la segunda mitad de la entrada más corta.o
acumula el resultado,p
finalmente almacena espacios para el relleno yn
es un alias para"\n"
.El primer bucle intercala las segundas mitades de las dos cadenas (excluyendo el último carácter de la entrada más larga) y se construye
p
con la cantidad adecuada de relleno para la línea media.La siguiente línea completa la línea media de salida.
Me gustaría disculparme con James Gosling por el segundo bucle. Agrega las líneas arriba y abajo de la línea media de adentro hacia afuera. Entrar en el ciclo,
i
esl - 1
, por lo que se antepone un carácter de relleno junto con el último carácter de la primera mitad de la cadena más corta.i
se disminuye para que el siguiente relleno (agregado al resultado) sea un carácter más corto. Por división entera, se agrega el mismo carácter de posición de la cadena más larga. Esto se repite y se devuelve el resultado completo.Cosas interesantes
La línea 13 solía ser
porque sin la cadena vacía,
+
agregó los valores de los caracteres y agregó una cadena numérica. Al expandir la asignación compuesta, la concatenación deo
yt.charAt(i)
se evalúa primero, lo que produce el resultado deseado sin necesidad de la cadena vacía, ahorrando 2 bytes. Esta es la primera vez que veo una asignación compuesta que se comporta de manera diferente a su expansión.fuente
Javascript (ES6),
140 137133 bytesMuy seguro de que esto se puede jugar más golf
fuente
`<newline>`+` `
puede combinar`<newline> `
? (No sé JS).Mathematica, 174 bytes
Entrada
fuente
TXR Lisp , 126 bytes
fuente
PHP,
149129 bytesEjecutar
-nr
o probarlo en línea .fuente
Perl 5 , 163 bytes
Pruébalo en línea!
Toma la cuerda más larga primero.
fuente