(Bedeutung: Englisch in Bleet umrechnen)
Wir preisen seit Jahren Ziegen als Gott.
Aber wenn wir Englisch nicht in Bleet, die Sprache des Ziegengottes, übersetzen können, können wir nicht mit ihnen kommunizieren.
Um mit ihnen zu kommunizieren, haben wir die Aktivitäten von Ziegen untersucht und dieses Muster gefunden, das den Kern der Sprache darstellt.
Sagen Sie "Bleet" für die Länge der einzelnen Wörter. Das bedeutet, dass die Anzahl der "e" (Länge-3) für Wörter länger als 3 Buchstaben sein sollte. Sie müssen "Bleet" für Wörter kürzer als "Blt" kürzen. Zum Beispiel wird 'be' zu 'bl', aber 'cat' und 'boat' werden zu 'blt' und 'blet'.
Offenbar ändern sie nicht-alphabetische Zeichen nicht in "Bleet". Unsere Untersuchung ergab, dass "Hallo, Welt!" Bleet heißt Bleet, Bleet! nicht "Bleeet Bleeet". Außerdem sind die Ziegen nicht so intelligent (keine Beleidigung), sodass sie anscheinend überhaupt keine Nicht-Ascii-Charaktere oder Diakritika verstehen.
Jetzt ist es an der Zeit, einen Übersetzer mit den Ziegengöttern zu kommunizieren.
Bleeeeet (Bedeutung: Beispiele)
Hello, World! => Bleet, Bleet!
lorem ipsum dolor sit amet. => Bleet Bleet Bleet Blt Blet.
We praise the Goat God! => Bl Bleeet Blt Blet Blt!
I have a pen => B Blet B Blt
0123456789_ => 0123456789_
0te_st1 => 0Bl_Bl1
it's
werdenBlt
oderBl't
oderBl'B
?Jimmy's
:Bleee't
), behandeln sie als Wort - Trennungen (Jimmy's
:Bleet'B
) oder behandeln sie als Teil von Wörtern (Jimmy's
:Bleeeet
). Wenn ich eine auswählen müsste, würde ich mich für die Worttrennungsoption entscheiden, da dies die 6 Antworten sind.Antworten:
Retina , 31 Bytes
Probieren Sie es online!
Erläuterung
Verwandle alle Buchstaben in
e
s.Schalten Sie die erste
e
in jedem Lauf inB
.Biegen Sie
Be
inBl
.Schalten Sie die letzte
e
in jedem Lauf int
.quelle
T1L
DieT
Bühne "umschließt" die Übersetzungspaare, so dass Sie alle Buchstaben so ane
l
, kein1
, aber ich bin mir nicht sicher, was du mit "wrap" meinst. Transliteration einfach wiederholt das letzte Zeichen in dem Zielmuster, also wenn es warT`lL`ef
, Sie Karte würdea
zue
und alle anderen Buchstabenf
, nicht abwechselnd zue
undf
.JavaScript (ES6),
797774 ByteAlternativer Ansatz, derzeit
83 bis78 Bytes:Das Beste, was ich rekursiv machen konnte, waren 88 Bytes:
quelle
'Blet'[i>1?2+!x[i+1]:i]
aber leider ist es gleich lang.PHP,
11588867775 Bytespreg_replace
mit Arrays (benötigt PHP 5.4 oder neuer)Laufen Sie mit
echo '<string>' | php -nR '<code>'
oder testen Sie es online .Nervenzusammenbruch
Revision 5: 9 Bytes mit der Regex-Kette von Martin Ender gespeichert .
(Das hat auch Fälle mit nicht-alphabetischen Wortzeichen = Ziffern / Unterstrichen behoben.)
quelle
Haskell ,
135128 BytesProbieren Sie es online! Verwendung
(""!) $ "some string"
. Ohne reguläre Ausdrücke erwies sich dies als ziemlich langwierig, vielleicht ist ein anderer Ansatz kürzer. Bearbeiten: 7 Bytes dank @nimi gespeichert!quelle
b
aufa
Sie können es sofort anwenden , wenn die resultierende Zeichenfolge Konstruktion und lassen Sie die letzte=<<
:b!(l:t)|...|1<3=a b++l:""!t;b!_=a b;(""!)
.Perl 5 , 47 Bytes
Mit derselben Technik wie bei Martin Enders Retina-Antwort wurden 15 Byte gespeichert . (Diese Antwort ist im Grunde genommen ein Teil seiner Antwort.)
46 Byte Code +
-p
Flag.Probieren Sie es online!
Ältere Versionen: 62 Bytes:
Und 68 Bytes:
quelle
PHP, 84 Bytes
PHP, 117 Bytes
quelle
-1+$l=...
\bl
nicht für nicht-alphabetische Wortzeichen:_we_
. Sie müssen eine explizite Behauptung:(?<!l)l
. Gleiches gilt füre\b
->e(?!e)
(+7 Byte)C,
1201511401111081051049290 BytesArbeiten für "It's Jimmy's Test" -> Bl'B Bleet'B Blet
Die Ausgabe ist jetzt ein Nebeneffekt, indem die ursprüngliche Zeichenfolge zerstört wird.
Ich denke, es ist zumindest jetzt richtig
quelle
Python 2.7,
129118114109959188 BytesNur eine
re.sub
KetteSchritt für Schritt
Eingabebeispiel: " Wir preisen den Ziegengott! "
Alias Sub, damit wir bei wiederholten Aufrufen Bytes sparen können
Ersetzen Sie alle Wortzeichen durch "e"
s("\w","e",i)
Ausgabe:
ee eeeeee eee eeee eee!
Ersetzen Sie alle "e", denen eine Wortgrenze (Wortanfang) vorausgeht, durch "B".
s(r"\be","B",s("\w","e",i))
Ausgabe:
Be Beeeee Bee Beee Bee!
Ersetze alles "Be" durch "Bl"
s("Be","Bl",s(r"\be","B",s("\w","e",i)))
Ausgabe:
Bl Bleeee Ble Blee Ble!
Ersetzen Sie alle "e", denen eine Wortgrenze folgt, durch "t".
s(r"e\b","t",s("Be","Bl",s(r"\be","B",s("\w","e",i))))
Ausgabe:
Bl Bleeet Blt Blet Blt!
quelle
return
durchprint
ein Byte sparen sollte.r
aus rohen Zeichenfolgen entfernen, wenn sie keine Rückschläge enthalten, wodurch weitere 3 Bytes gespart werdenr
) vereinfachen und brachte es auf 95 Bytes. Danke für den Vorschlag!Pip , 28 Bytes
Übernimmt die Eingabe als Befehlszeilenargument. Probieren Sie es online!
Erläuterung
Das hat Spaß gemacht - ich musste Regex-Modifikatoren und String-Interpolation verwenden.
quelle
Python 3, 271 Bytes
Mir ist bewusst, dass dies ziemlich lang ist, und ich begrüße Vorschläge zur Verkürzung der Länge.
quelle
x.append(y)
oder in Ihrem Falla(x,y)
können Siex+=y,
(Komma erforderlich)gestapelt , 57 Bytes
Probieren Sie es online! Nimmt die Eingabe vom oberen Rand des Stapels auf.
Sei a ( n ) = A136412 ( n - 2) = (5 × 4 n - 2 + 1) ÷ 3. Die Umwandlung von a ( n ) in die Base 4 ergibt:
Wenn
Blet
wir die Indizes 0..3 dem String zuordnen , erhalten wir:Wenn Sie jetzt voranstellen
B
, erhalten Sie die gewünschte Zeichenfolge in der angegebenen Länge. Meistens. Man muss nur die Sonderfälle für n ≤ 2 behandeln. In meinem Fall wird dies durch Subtrahieren ( n - 2 <1) als numerischer Boolescher Wert (1 für "wahr" und 0 für "falsch") gelöst .Zu den Einzelheiten der Antwort:
quelle
Python 2 ,
137114 BytesProbieren Sie es online!
quelle
Java 7, 201 Bytes
Ich bin nicht wirklich glücklich damit und kann sicherlich noch mehr golfen.
Erläuterung:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
s.split("")
Statts.toCharArray()
einige zu retten, glaube ichx=c&~32
funktioniert nicht mit einem String undx>64&x<91
beide funktionieren nicht mehr). Wenn Sie es mit der Aufteilung kürzer machen können, lassen Sie es mich wissen.05AB1E , 36 Bytes
Probieren Sie es online! oder als Testsuite
Erläuterung
Eingabe vorbereiten:
Dadurch wird eine Liste erstellt, beispielsweise
['hello', ', ', 'world', '!']
für die EingabeHello, World!
Liste durchlaufen:
quelle