Ihre Herausforderung besteht darin , ein Programm zu schreiben, mit dem Sie (Englisch) leetspeak / lolspeak / txtspk in normales Englisch übersetzen können. Ihr Programm sollte von der Standardeingabe und -ausgabe zur Standardausgabe lesen, es sei denn, Ihre Sprache unterstützt diese nicht.
Sie können eine Datei verwenden, die eine Liste von Wörtern in englischer Sprache enthält, die durch neue Zeilen getrennt sind. Es sollte aufgerufen werden W
und befindet sich im selben Verzeichnis wie Ihr Programm. (Auf GNU / Linux-Systemen und möglicherweise auch auf anderen können Sie W
einen Link /usr/share/dict/words
erstellen.) Die Liste muss nicht nur aus Kleinbuchstaben bestehen, sondern kann auch verwendet werden, um zu bestimmen, ob Wörter Großbuchstaben enthalten sollen.
Dies basiert auf einer jetzt gelöschten Frage von Nikos M., die hier zu finden ist . Dies ist kein Duplikat, da diese ursprüngliche Frage geschlossen wurde und keine Antworten erhielt, da es kein Gewinnkriterium gab und der Benutzer nicht bereit war, eine Frage einzutragen.
Wertung
Die Wertung ist etwas kompliziert!
Dein Ergebnis ist
(leet items + bonuses) * 10 / (code length)
Höchste Punktzahl gewinnt.
Ihr Programm muss nicht perfekt sein und kann es wahrscheinlich auch nicht, aber je genauer es ist, desto mehr Boni erhält es!
Da $
kann beides heißen s
und S
, Sie erhalten einen Bonus von 5 Punkten pro Leet Item für die Entscheidung, ob es einen Großbuchstaben haben soll (dh Großbuchstaben am Satzanfang).
Für das Implementieren von Eigennamen (Wörter, die immer Großbuchstaben haben) erhalten Sie einen weiteren Bonus von 5 Punkten pro Leet Item - so wie dies funktioniert, würden Sie die Wortliste durchsehen und die Ausgabe aktivieren, wenn nur eine großgeschriebene Version in der vorhanden ist Liste, und wenn beide Versionen vorhanden sind, raten Sie einfach.
Wenn ein Charakter zwei Bedeutungen hat (z. B. oder 1
bedeuten kann ), erhalten Sie 20 Punkte pro Leet-Element, wenn Sie nur die Übersetzungen des Elements auswählen, die echte englische Wörter ergeben - verwenden Sie dazu die Wortliste. Wenn mehr als eine Übersetzung eines Leet-Artikels ein echtes englisches Wort ergibt, können Sie beliebig eine der gültigen Übersetzungen auswählen und erhalten trotzdem den Bonus.L
I
Liste von Leet
Dies sind die Leet-Elemente, die Sie implementieren können. Sie müssen nicht alle implementieren, aber je mehr Sie hinzufügen, desto mehr Punkte erhalten Sie.
Sie können niemals Punkte erzielen, indem Sie einen Gegenstand oder Charakter in sich selbst übersetzen. Diese Regel überschreibt alle Fehler, die ich in der Liste gemacht habe.
Es ist verlockend, ein einfaches tr
oder zu tun s/.../.../g
. Die eigentliche Herausforderung besteht darin, anhand der Wortliste zu bestimmen, welche der mehreren Bedeutungen richtig sein kann und welche nicht.
Leet Items (jedes von diesen addiert 1 zu leet items
in der Formel)
$ -> s, S (-> c, c 5 -> s, S @ -> a, A 4 -> a, A 3 -> e, E 7 -> t, T + -> t, T # -> h, H die -> die 'd -> ed pwnd -> pwned pwnt -> pwned k, K -> OK kk -> OK 0 [Null] -> o, O y, Y -> warum 4 -> für txt -> text dafuq -> was zum f ** k / \, ^ -> a, A \ / -> v, V d00d -> Alter n00b -> newbie \ / \ / -> w, W 8 -> b, B | _ | -> u, u | - | -> h, h Я -> r, R j00 -> du joo -> du vv, VV -> w, W tomoz -> morgen | <-> k, K [), |) -> d, D <3 -> Liebe > <-> x, X 10100111001 -> leet (binäre Darstellung von 1337) 2 -> auch ur, UR -> your, you (keine Notwendigkeit, zwischen den beiden richtig zu unterscheiden) u, u -> du 8 -> -ate-, 8 x, X -> -ks -, - cks- z, Z -> s, S 1 -> ich, ich, ich, ich ! -> ich, ich! c, C -> siehe, C, Meer b, B -> sei, B, Biene [Akzentbuchstabe] -> [Nicht-Akzentbuchstabe] (Punktzahl 1 pro unterstütztem Akzentbuchstaben) &, 7 -> und, anned, ant (kann in der Mitte eines Wortes verwendet werden)
Härtere „Leet“: Score 30 Punkte für leet items
jeden
!!! 1 !! 1-> !!!!!!! (Einsen in eine Folge von Einsen in Einsen übersetzen) !!! eins! -> !!!!! ! elf-> !!!
Beispiele
Dies sind Beispiele dafür, was ein Programm, das alle oben genannten Leet-Zeichen und einige der Boni implementiert, möglicherweise leisten kann:
Beispielsatz: |-|3 15 $|_|(# @ n00b
=He is such a newbie
Leet-basierte Zensur: $#!+
=s**t
Extreme Leet: \/\/ 1 |< 1 P 3 [) 1 A
=Wikipedia
-xor Suffix: H4X0R
=hacker
Extremeres Leet: @1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x
=Always post your new questions in the sandbox
Beispiel Scoring
Bash, 10 Zeichen, 3 Elemente, keine Boni:
tr 137 let
Dies punktet ( 1 * 3 ) * 10 / 10 = 3
.
quelle
tr
oder zu bekämpfens/.../.../g
. Nur solche Dinge zu übersetzen, würde eine langweilige Herausforderung darstellen, daher müssen wir bessere Übersetzungen belohnen, die die Wortliste verwendensed
Drehbuch.)sed
Skript sage , meine ich mehr als eine einfaches/.../.../g
, sondern eine Datei, die vonsed
selbst analysiert und ausgeführt wird . So knapp die Sprache auch ist, es könnte sich um eine anständige Golfsprache handeln ...sed
Skripte sind ebenfalls in Ordnung und könnten sehr interessant sein. Aufgrund der kurzen Substitutionssyntax könnten sie hier sehr gut funktionieren. Sie können sie möglicherweise aus der Wortliste lesen, entweder mit GNU-Erweiterungen odersed
als Teil eines größeren Bash-ProgrammsAntworten:
Javascript (49 + 5635) * 10/2174 = 26,14
Online Demo:
Die Option "Reales Wörterbuch" funktioniert bei Dropbox nicht, funktioniert jedoch, wenn sie auf einem echten Webserver ausgeführt wird. Getestet in Visual Studio Development Server und Google Chrome.
https://dl.dropboxusercontent.com/u/141246873/leettranslator/index.html
Ergebnis:
49 Leet Items = 49
Kapitalisierungsbonus = 5 * 49 = 245
Wörterbuchsuchbonus = 20 * 49 = 980
Ausrufezeichenbonus * 3 = 90 * 49 = 4410
(Leet Items + Boni) * 10 / (Codelänge)
(49 + 5635) * 10/2174 = 26,14
Code:
Ungolfed:
Testergebnisse:
Anmerkungen:
Das Wörterbuch ist eine separate Javascript-Datei mit einem Objekt namens W, das alle Wörter enthält. Dies enthält nur die Wörter, die ich zum Ausführen der relevanten Tests benötige.
quelle
W.js
wenn es entfernt wurde)Haskell - Score 1.421421421: (37 Elemente + (21 Boni (Großschreibung) * 5)) * 10 / (999 Byte)
Dies ist meine endgültige Antwort.
Tests
Wenn das Programm in eine Datei mit dem Namen kompiliert wird
min-lt
, können Sie das folgende Shell-Skript schreibenwas wird dies drucken
quelle
-ks-
ich meinteks
in der Mitte eines Wortes. Ich werde es mir ansehen, sobald ich einen Hashell-Compilerhaskell-platform
Paket. Haben Sie ein Beispiel dafürks
?<insertnamehere> rocX
oderroX
Extended BrainFuck : 0,6757
Dies bedeutet also 15 Übersetzungen "$ (5 @ 437 + # 0821! &", Keine Boni und 222 Bytes (nicht erforderliche Zeilenvorschübe nicht enthalten). 15 * 10/222 = 0,6757
Verwendung:
EBF ist nicht wirklich zum Golfen geeignet, aber die Rle-Funktion, die Makros und die Print-String-Funktion machen das Komprimieren etwas einfacher als BrainFuck. Das Ende der kompilierten BrainFuck-Binärdatei sieht folgendermaßen aus:
quelle
~"OTLHEAND"
Ich könnte alle Zeichen einmal für 107 Bytes Objektcode gemacht, anstatt sie von 0 jedes Mal mit 354 zu machen, aber meine Antwort ist für die EBF-Codegröße optimiert :)Java: 1,236
So macht es die folgenden Transformationen
Die Punkteberechnung ist schwierig
((39 + (21 · 5)) · 10) / 1165 = 1,236
Code ohne Golf:
quelle
C # Score 45 * 10/2556 = 0,176
Das Programm kann fast alle Groß- und Kleinbuchstaben ausgeben. Da ich keine englische Wortliste verwende, wird der erste im Wörterbuch gefundene Schlüssel verwendet. ZB \ / \ / wird vav. Wenn char der erste Buchstabe eines Wortes ist, wird ToUpper angewendet.
Hier ist meine Testausgabe:
quelle