Drunk Onkel (sorry ME und AUS für Region Lock) ist eine fiktive Figur aus Saturday Night Live. Er verwechselt oft Wörter mit anderen, die wie sie klingen. Für diese Herausforderung müssen Sie normale Sprache in betrunkene Sprache umwandeln.
Algorithmus
Das Übersetzen in Drunkspeak erfordert das Vertauschen der Wortreihenfolge im Text. Das Tauschen basiert auf der Ähnlichkeit zweier Wörter mit Trunkenheit . Die Ähnlichkeit der Trunkenheit ist definiert als die Anzahl der Buchstaben, die zwei Wörter an denselben Indizes haben . Doch zwei identische Wörter haben eine Trunkenheit Ähnlichkeit von -1 . Zum Beispiel tree
und friend
haben eine Trunkenheitsähnlichkeit von 2, weil beide ein 'r' bei Index 1 und ein 'e' bei Index 3 haben.
Alles, was Sie tun müssen, ist, die beiden Wörter im Text mit der höchsten Ähnlichkeit der Trunkenheit zu finden und sie dann auszutauschen. Sobald Sie zwei Begriffe vertauscht haben, bewegen sie sich nicht mehr. Dann schauen Sie sich die verbleibenden austauschbaren Begriffe an und tauschen die beiden aus, die die höchste Ähnlichkeit mit Trunkenheit aufweisen. Sie machen so lange weiter, bis Sie nicht mehr tauschen können. Dann geben Sie den aktualisierten Text aus (oder geben ihn für eine Funktion zurück).
Besonderheiten
- Der Einfachheit halber ist die Eingabe eine Liste von Wörtern, die aus Zeichen in [A-Za-z] bestehen.
- Jede Eingabe enthält mindestens ein Wort
- Schreiben Anpassung ist Groß- und Kleinschreibung:
A
Begegnungen mita
( Hinweis: Aufgrund dieser RegelDog
unddog
sind identisch und haben somit einen DS von -1) - Wenn mehrere Paare die höchste Trunkenheitsähnlichkeit aufweisen:
- Wählen Sie aus den Wörtern, die die Ähnlichkeit der Trunkenheit maximieren können, das Wort mit dem niedrigsten Index in der Liste aus
- Kombinieren Sie dieses Wort mit dem Wort mit dem niedrigsten Index, das die Ähnlichkeit der Trunkenheit maximiert
Beispiele
Drunk Uncle needs your help
(Titel)- S 1 : Betrunken <=> dein (DS: 1)
your Uncle needs Drunk help
- S 2 : braucht <=> Hilfe (DS: 1)
your Uncle help Drunk needs
- Ausgabe:
your Uncle help Drunk needs
- S 1 : Betrunken <=> dein (DS: 1)
I love fidget spinners
(langweiliges Beispiel)- S 1 : Ich liebe <=> (DS: 0)
love I fidget spinners
- S 2 : zappeln <=> Spinner (DS: 0)
love I spinners fidget
- S 1 : Ich liebe <=> (DS: 0)
dog eat dog ear
- S 1 : <=> Ohr essen (DS: 2)
dog ear dog eat
- S 2 : Hund <=> Hund (DS: -1)
dog ear dog eat
(dieser Schritt nur Formalität)
- S 1 : <=> Ohr essen (DS: 2)
Let me tell you a story
- S 1 : Lass mich <=> (DS: 1)
me Let tell you a story
- S 2 : Sag <=> dir (DS: 0)
me Let you tell a story
- S 3 : eine <=> Geschichte (DS: 0)
me Let you tell story a
- S 1 : Lass mich <=> (DS: 1)
Too many money and purple people
- S 1 : lila <=> Personen (DS: 4)
Too many money and people purple
- S 2 : viel <=> Geld (DS: 2)
Too money many and people purple
- S 3 : Zu <=> und (DS: 0)
and money many Too people purple
- S 1 : lila <=> Personen (DS: 4)
Lassen Sie mich wissen, ob es weitere Beispiele gibt, die ich behandeln soll.
quelle
Antworten:
JavaScript -
286279 BytesSie können es auf JSFiddle versuchen .
quelle
Python 3,
285277270267 Bytes, funktioniert nichtIch habe versucht, die Ausgabe an die Herausforderung anzupassen, nicht an die Testfälle, da einige der Testfälle der Herausforderung widersprechen.
Bearbeiten: Golf das "untere" Ding.
Bearbeiten: Split ("") in Split () geändert
Bearbeiten: Ich habe festgestellt, dass dies nicht alle Dinge vervollständigt, und obwohl ich möglicherweise eine vollständige Antwort gefunden habe, kann ich in der Zwischenzeit genauso gut hinzufügen, dass dies nur eine Iteration abschließt.
quelle
g = str.lower
oderg = lambda s: s.lower()
welche Sie dann so verwenden können ..split(' ')
kann durch ersetzt werden.split()
.