Desafío
Dada una cadena que describe una regla de corte y otra cadena, corte partes de la segunda cadena usando la regla descrita por la primera cadena.
Ambas cadenas consistirán en letras a-z
o A-Z
, cualquiera que elija (no tienen que estar representadas de la misma manera). La forma en que se modificará la segunda cadena se describe a continuación:
Algoritmo
Tome la primera secuencia e imagine llenar los espacios entre letras no adyacentes (crecientes) con =
; por ejemplo, abcfg
=> abc==fg
. Luego, alinee las dos cadenas y devuelva todos los caracteres de la primera cadena que no estén por encima de un signo igual. Por ejemplo, dado abcfg
y qrstuvw
como entradas:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Si el modificador es más corto después de rellenar con signos iguales, se deben incluir todos los caracteres finales en la segunda cadena. Si el modificador es más largo, los caracteres finales se ignoran.
No se garantiza que el modificador esté ordenado.
Casos de prueba
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Implementación de referencia (utilizada para generar casos de prueba) -> TIO
Reglas
- Se aplican lagunas estándar
- Puede tomar la entrada como dos cadenas, dos listas de caracteres, una matriz de caracteres, etc. (se acepta cualquier otro formato razonable)
- Puede generar una cadena o una lista de caracteres (o algún otro formato estándar para cadenas)
- Este es el código de golf , por lo que la respuesta más corta en bytes en cada idioma se declara ganador de su idioma. No se aceptarán respuestas.
- Cualquiera de las cadenas puede estar vacía.
¡Feliz golf!
Inspirado por los dos desafíos recientes de Kevin Cruijssen, "Allí, lo arreglé (con cinta / cuerda )"
There, I blew it up (with a segfault)
Respuestas:
JavaScript (ES6),
8180 bytesToma entrada en la sintaxis de curry
(modify)(modifier)
.Pruébalo en línea!
Comentado
fuente
Python 3 , 99 bytes
Pruébalo en línea!
fuente
05AB1E ,
2017 bytesPruébalo en línea!
Calcula la distancia ASCII entre cada carácter, anteponiendo tantos espacios si es positivo. La distancia negativa da como resultado la adición de 0 espacios, según la especificación. Después de eso, presiono todos los caracteres en los mismos índices en la cadena 2 que los espacios en la primera cadena manipulada.
90% seguro de que puedo perder otros 2-3 bytes al no usar espacios, pero presionando el carácter en el índice N. Todavía trabajando en esta variante en este momento ... Lo que mi "mejor idea" terminó como:
05AB1E , 18 bytes
Pruébalo en línea!
Siento que me falta algo, si ves mejoras
ε1‚Z}
,ʒ²g‹}
o0¸ì
lmk ...Ç¥ε1‚Z}ηO0¸ìè
tenía 13 años, pero cuando envuelven > |input_2|
ainput_2[n%|input_2|]
...fuente
IgÅ1«
, pero ¿tal vez hay una mejor manera?Stax , 15 bytes
Ejecutar y depurarlo
Esta es la representación ascii.
fuente
╟╣i
Jalea , 14 bytes
Un enlace diádico que acepta el modificador como una lista de caracteres a la izquierda y la lista de caracteres para modificar a la derecha que devuelve una lista de caracteres.
Pruébalo en línea!
¿Cómo?
fuente
¬
truco en mi respuesta. :) (técnicamente tenemos el mismo algoritmo, ¡pero lo hiciste más corto, bien hecho!)¬
, pero olvidé cuando hice una publicación de dedo gordo en un teléfono móvil de un intento de 13 bytes aún no listo.JavaScript (ES6), 79 bytes
Utiliza el mismo algoritmo para calcular la distancia entre letras que mi última respuesta .
Casos de prueba:
Mostrar fragmento de código
fuente
APL (Dyalog Classic) ,
353432 bytesPruébalo en línea!
fuente
K (ngn / k) ,
272425 bytesPruébalo en línea!
fuente
Haskell , 49 bytes
Pruébalo en línea!
fuente
Perl 5 , 45 bytes
Pruébalo en línea!
fuente
Ruby ,
6864 bytesPruébalo en línea!
fuente
Carbón ,
2928 bytesPruébalo en línea! El enlace es a la versión detallada del código. Según mi respuesta a There, lo arreglé con cinta adhesiva. Explicación:
Nota: Esto debe ser de 28 bytes, peroAnd
está roto en el momento de la escritura.fuente
Java 8, 117 bytes
Explicación:
Pruébalo en línea.
fuente