El reto
Dadas dos cadenas que contienen solo letras minúsculas y sin espacios, el resultado debe ser la cadena más corta, seguida de un guión bajo, seguido de la cadena más larga con la primera instancia de un carácter eliminado para cada carácter que contiene que está en la cadena más corta.
Puede suponer que las cadenas siempre serán de diferentes longitudes.
Casos de prueba:
sale
salinewater
Result: sale_inwater (only the first 'a' in salinewater is removed)
jostling
juggle
Result: juggle_ostin (juggle is the shorter string)
juggle
juggler
Result: juggle_r (a 'g' is removed for every 'g' in the shorter string)
Reglas
Este es el código de golf, por lo que la respuesta más corta en bytes gana.
juggle juggler
?juggle_r
(eliminar para cada instancia de personaje) ojuggle_gr
(eliminar para cada personaje distinto)?Respuestas:
Pyth, 13 bytes
Pruébalo en línea.
fuente
JavaScript (ES6),
787569 BytesDescompostura
fuente
Haskell,
5655 bytes-1 byte gracias a @xnor
fuente
y\\x
para el0<1
guardia de lo contrario.filter(`notElem`x)y
es más corto quey\\x
con importaciónx
, no solo las primeras.Java 7, 262 bytes
Probablemente se pueda jugar un poco más simplemente usando matrices sin las listas.
Sin golf y casos de prueba:
Pruébalo aquí
Salida:
fuente
Java 8, 156 bytes
Esto probablemente se pueda jugar un poco más.
Sin golf y casos de prueba
fuente
Ruby, 65 bytes
sin golf
61 bytes (en caso de que el argumento sea una matriz de cadenas)
Gracias m-chrzan !
fuente
gsub!
no funciona aquí: se supone que debes eliminar la primera aparición de cada letra. Afortunadamente,sub!
que hace exactamente eso, es un byte más corto.a,b=b,a if a.size>b.size
intercambio de cadenas no es recursivo y le ahorra otro byte.->a{a.sort_by!(&:size);a[0].chars.map{|c|a[1].sub!c,""};a*?_}
PHP, 154 bytes
En lugar de
$s=preg_replace("#(.*?)".$x."(.*)#","$1$2",$s);
usted también puede usarif($z=strstr($s,$x))$s=strstr($s,$x,1).substr($z,1);
fuente
R, 161 bytes
Esto resultó ser mucho más largo de lo que esperaba, aunque la manipulación de cuerdas suele ser tediosa en R. Creo que esto debería ser fácil de jugar simplemente con otro enfoque.
Sin tope
fuente
Python 2,
8172 bytesPruébalo en línea
fuente
a,b=sorted(input(),key=len)
Scala, 78 bytes
Explicación:
fuente