O desafio
Dadas duas cadeias contendo apenas letras minúsculas e sem espaços, o resultado deve ser a cadeia mais curta, seguida por um sublinhado, seguida pela cadeia mais longa com a primeira instância de um caractere removido para cada caractere contido na cadeia mais curta.
Você pode assumir que as strings sempre terão comprimentos diferentes.
Casos de teste:
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)
Regras
Isso é código-golfe, então a resposta mais curta em bytes vence!
juggle juggler
?juggle_r
(remover para cada instância de caractere) oujuggle_gr
(remover para cada caractere distinto)?Respostas:
Pitão, 13 bytes
Experimente online.
fonte
JavaScript (ES6),
787569 bytesDemolir
fonte
Haskell,
5655 bytes-1 byte graças a @xnor
fonte
y\\x
-o à0<1
outra proteção.filter(`notElem`x)y
é menor do quey\\x
com importaçãox
, não apenas os primeiros.Java 7, 262 bytes
Provavelmente pode ser jogado mais usando apenas matrizes sem as listas.
Casos não testados e de teste:
Experimente aqui.
Resultado:
fonte
Java 8, 156 bytes
Provavelmente isso pode ser jogado um pouco mais.
Casos não testados e de teste
fonte
Ruby, 65 bytes
destroçado
61 bytes (caso o argumento seja uma matriz de cadeias)
Obrigado, m-chrzan !
fonte
gsub!
não funciona aqui - você deve remover a primeira ocorrência de cada letra. Felizmente, osub!
que faz exatamente isso, é um byte mais curto.a,b=b,a if a.size>b.size
a troca das seqüências não é recursivo e economiza outro byte.->a{a.sort_by!(&:size);a[0].chars.map{|c|a[1].sub!c,""};a*?_}
PHP, 154 bytes
Em vez de
$s=preg_replace("#(.*?)".$x."(.*)#","$1$2",$s);
você também pode usarif($z=strstr($s,$x))$s=strstr($s,$x,1).substr($z,1);
fonte
R, 161 bytes
Isso acabou sendo muito mais longo do que eu esperava, embora a manipulação de cordas seja geralmente entediante em R. Eu sinto que isso deve ser facilmente jogável com o uso de outra abordagem.
Ungofled
fonte
Python 2,
8172 bytesExperimente online
fonte
a,b=sorted(input(),key=len)
Scala, 78 bytes
Explicação:
fonte