Die Herausforderung
Bei zwei Zeichenfolgen, die nur Kleinbuchstaben und keine Leerzeichen enthalten, sollte das Ergebnis die kürzere Zeichenfolge sein, gefolgt von einem Unterstrich, gefolgt von der längeren Zeichenfolge, wobei die erste Instanz eines Zeichens für jedes Zeichen entfernt wird, das in der kürzeren Zeichenfolge enthalten ist.
Sie können davon ausgehen, dass die Zeichenfolgen immer unterschiedlich lang sind.
Testfälle:
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)
Regeln
Dies ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes!
juggle juggler
sein?juggle_r
(für jede Zeicheninstanzjuggle_gr
entfernen ) oder (für jedes einzelne Zeichen entfernen)?Antworten:
Pyth, 13 Bytes
Probieren Sie es online aus.
quelle
JavaScript (ES6),
787569 BytesNervenzusammenbruch
quelle
Haskell,
5655 Bytes-1 Byte dank @xnor
quelle
y\\x
für den0<1
ansonsten Schutz binden .filter(`notElem`x)y
ist kürzer alsy\\x
beim Importx
, nicht nur die ersten.Java 7, 262 Bytes
Kann wahrscheinlich noch mehr Golf gespielt werden, indem nur Arrays ohne die Listen verwendet werden.
Ungolfed & Testfälle:
Probieren Sie es hier aus.
Ausgabe:
quelle
Java 8, 156 Bytes
Dies kann wahrscheinlich noch mehr Golf gespielt werden.
Ungolfed & Testfälle
quelle
Ruby, 65 Bytes
ungolfed
61 Bytes (falls das Argument ein Array von Zeichenfolgen ist)
Danke, m-chrzan !
quelle
gsub!
funktioniert hier nicht - Sie sollten das erste Vorkommen jedes Buchstabens entfernen. Glücklicherweise ist dassub!
, was genau das tut, ein Byte kürzer.a,b=b,a if a.size>b.size
Austauschen der Zeichenfolgen ist jedoch nicht rekursiv und spart Ihnen ein weiteres Byte.->a{a.sort_by!(&:size);a[0].chars.map{|c|a[1].sub!c,""};a*?_}
PHP, 154 Bytes
Anstelle von können
$s=preg_replace("#(.*?)".$x."(.*)#","$1$2",$s);
Sie auch verwendenif($z=strstr($s,$x))$s=strstr($s,$x,1).substr($z,1);
quelle
R, 161 Bytes
Dies stellte sich als viel länger heraus, als ich erwartet hatte, obwohl die Manipulation von Saiten in R normalerweise mühsam ist. Ich bin der Meinung, dass dies leicht zu spielen sein sollte, wenn man nur einen anderen Ansatz verwendet.
Ungofled
quelle
Python 2,
8172 BytesProbieren Sie es online aus
quelle
a,b=sorted(input(),key=len)
Scala, 78 Bytes
Erläuterung:
quelle