GolfScript (74 Zeichen)
Diese Implementierung verwendet eine magische Zeichenfolge mit nicht druckbaren Zeichen. In xxdAusgabeform ist es
0000000: 7b2e 313c 5c5b 7b36 3326 2741 4c15 c252 {.1<\[{63&'AL..R
0000010: d056 4c1e 8227 3235 3662 6173 6520 3862 .VL..'256base 8b
0000020: 6173 653d 7d25 7b2e 373d 2432 243d 7b3b ase=}%{.7=$2$={;
0000030: 7d2a 7d2a 5d31 3e31 2c2d 5b30 2e2e 5d2b }*}*]1>1,-[0..]+
0000040: 333c 7b2b 7d2f 7d3a 533b 3<{+}/}:S;
Ohne die Basisänderungen zum Komprimieren einer Liste von 3-Bit-Zahlen wäre dies der Fall
{.1<\[{63&[1 0 1 2 3 0 1 2 7 0 2 2 4 5 5 0 1 2 6 2 3 0 1 7 2 0 2]=}%{.7=$2$={;}*}*]1>1,-[0..]+3<{+}/}:S;
Online-Test
Es ist im Grunde ein Haufen langweiliger Loops, aber es gibt einen interessanten Trick:
.7=$2$=
Dies ist innerhalb einer Falte, deren Zweck es ist, Doppelbuchstaben zu behandeln. Benachbarte Buchstaben mit demselben Code werden zu einer Einheit zusammengefasst, auch wenn sie durch ein Hoder ein getrennt sind W. Dies kann jedoch nicht einfach durch Entfernen aller Hs und Ws aus der Zeichenfolge implementiert werden , da in dem (im wirklichen Leben zwar unwahrscheinlichen, aber nicht von der Spezifikation ausgeschlossenen) Fall, dass der erste Buchstabe ein Konsonant ist, Hoder Wder zweite Buchstabe ein Konsonant ist Wir müssen uns diesem Konsonanten nicht entziehen, wenn wir den ersten Buchstaben entfernen. (Ich habe einen Testfall hinzugefügt, WMder es geben sollte, W500um dies zu überprüfen).
Die Art und Weise, wie ich damit umgehe, besteht darin, einen Falz auszuführen und jeden Buchstaben außer dem ersten zu löschen (ein praktischer Nebeneffekt bei der Verwendung von Falz), der entweder gleich dem vorherigen oder gleich 7dem internen Code für Hund ist W.
Gegeben aund bauf dem Stapel, der naive Weg, um zu überprüfen, ob a == b || b == 7wäre
.2$=1$7=+
Es werden jedoch 2 Zeichen gespeichert, wenn eine berechnete Kopie des Stapels verwendet wird:
.7=$
Wenn bist gleich 7dann kopiert es a; sonst kopiert es b. Beim Vergleich mit erhalten awir also einen garantierten Wahrheitswert, wenn bdieser 7unabhängig vom Wert von war a. (Bevor Pedanten einwiegen, hat GolfScript keine NaNs).