Leet ke Terjemahan Bahasa Inggris

23

Tantangan Anda adalah menulis program untuk menerjemahkan (bahasa Inggris) leetspeak / lolspeak / txtspk ke dalam bahasa Inggris normal. Program Anda harus membaca dari input dan output standar ke output standar, kecuali bahasa Anda tidak mendukungnya.

Anda dapat menggunakan file yang berisi daftar kata-kata dalam bahasa Inggris, dipisahkan oleh baris baru. Itu harus dipanggil Wdan akan berlokasi di direktori yang sama dengan program Anda. (Pada sistem GNU / Linux dan mungkin yang lain, Anda dapat membuat Wtautan ke /usr/share/dict/words) Daftar ini tidak harus huruf besar semua, Anda dapat menggunakannya untuk menentukan apakah kata-kata harus memiliki huruf besar.

Ini didasarkan pada pertanyaan yang sekarang dihapus yang diposting oleh Nikos M. yang dapat ditemukan di sini . Ini bukan duplikat karena pertanyaan awal ini telah ditutup dan tidak menerima jawaban apa pun, karena tidak ada kriteria menang dan pengguna tidak mau memasukkannya.

Mencetak gol

Skornya sedikit rumit!

nilaimu adalah

(leet items + bonuses) * 10 / (code length)

Kemenangan skor tertinggi.

Program Anda tidak harus dan mungkin tidak bisa sempurna, tetapi semakin akurat, semakin banyak bonus yang didapat!

Karena $dapat berarti keduanya sdan S, Anda mendapatkan bonus 5 poin per item leet untuk memutuskan apakah itu harus memiliki huruf kapital (yaitu huruf kapital di awal kalimat).

Anda mendapatkan bonus lebih lanjut dari 5 poin per item leet untuk menerapkan kata benda yang tepat (kata-kata yang selalu memiliki huruf kapital) - cara kerjanya adalah bahwa Anda akan melihat melalui daftar kata, membuat output dikapitalisasi jika hanya versi huruf kapital hadir di daftar, dan jika kedua versi ada, tebak saja.

Jika karakter memiliki dua makna (mis. 1Bisa berarti Latau I), Anda mendapatkan 20 poin per item leet untuk hanya memilih terjemahan item yang membuat kata-kata bahasa Inggris nyata - gunakan daftar kata untuk ini. Jika lebih dari satu terjemahan item leet menghasilkan kata bahasa Inggris yang nyata, Anda dapat secara sewenang-wenang memilih salah satu terjemahan yang valid dan masih mendapatkan bonus.

Daftar Leet

Ini adalah item leet yang dapat Anda terapkan. Anda tidak harus menerapkan semuanya, tetapi semakin banyak Anda tambahkan, semakin banyak poin yang Anda dapatkan.

Anda tidak dapat mencetak poin dengan menerjemahkan item atau karakter ke dirinya sendiri. Aturan ini mengesampingkan kesalahan yang mungkin saya buat dalam daftar.

Sangat menggoda untuk melakukan hal yang sederhana tratau s/.../.../g. Tantangan sebenarnya adalah menentukan mana dari banyak makna yang bisa dan tidak bisa benar, menggunakan daftar kata.

Item Leet (masing-masing menambahkan 1 ke leet itemsdalam rumus)

$ -> s, S
(-> c, C
5 -> s, S
@ -> a, A
4 -> a, A
3 -> e, E
7 -> t, T
+ -> t, T
# -> h, H
teh -> itu
'd -> ed
pwnd -> pwned
pwnt -> pwned
k, K -> OK
kk -> OK
0 [nol] -> o, O
y, Y -> mengapa
4 -> untuk
txt -> teks
dafuq -> apa yang f ** k
/ \, ^ -> a, A
\ / -> v, V
d00d -> dude
n00b -> pemula
\ / \ / -> w, W
8 -> b, B
| _ | -> u, U
| - | -> h, H
Я -> r, R
j00 -> Anda
joo -> kamu
vv, VV -> w, W
tomoz -> besok
| <-> k, K
[), |) -> d, D
<3 -> cinta
> <-> x, X
10100111001 -> leet (representasi biner 1337)
2 -> juga
ur, UR -> Anda, Anda (tidak perlu membedakan keduanya dengan benar)
kamu, kamu -> kamu
8 -> -ate-, 8
x, X -> -ks -, - cks-
z, Z -> s, S
1 -> i, I, l, L
! -> saya, saya ,!
c, C -> see, C, sea
b, B -> be, B, bee
[surat beraksen] -> [formulir tidak beraksen] (skor 1 per huruf beraksen didukung)
&, 7 -> dan, anned, semut (dapat digunakan di tengah kata)

Harder "Leet": skor 30 poin untuk leet itemsmasing - masing

!!! 1 !! 1-> !!!!!!! (terjemahkan 1 dalam urutan! menjadi!)
!!! satu! -> !!!!!
! sebelas-> !!!

Contohnya

Ini adalah contoh dari apa yang bisa dilakukan oleh program yang menerapkan semua karakter leet di atas, dan beberapa bonus,:

Contoh kalimat: |-|3 15 $|_|(# @ n00b=He is such a newbie

Sensor berbasis leet: $#!+=s**t

Leet ekstrem: \/\/ 1 |< 1 P 3 [) 1 A=Wikipedia

-xor suffix: H4X0R=hacker

Leet yang lebih ekstrem: @1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x=Always post your new questions in the sandbox

Contoh Pemberian Skor

Bash, 10 karakter, 3 item, tidak ada bonus:

tr 137 let

Skor ini ( 1 * 3 ) * 10 / 10 = 3.

benar-benar manusiawi
sumber
Maaf saya tidak menangkap ini di kotak pasir, tetapi jika Anda mengalikan bonus dengan 10, mereka masih jauh lebih berharga daripada kata-kata itu sendiri. Apakah itu niat Anda?
Martin Ender
@ m.buettner Ini untuk bertempur hanya dengan menggunakan tratau s/.../.../g. Hanya menerjemahkan hal-hal seperti itu akan membuat tantangan yang membosankan, jadi kita perlu menghargai terjemahan yang lebih baik yang menggunakan daftar kata
Apakah serangkaian regexps panjang diizinkan? Saya akan senang melihat apakah mungkin (walaupun sulit) untuk melakukan ini bahkan dalam konteks sadar dalam kebanyakan regexps. (Atau mungkin sednaskah.)
Isiah Meadows
Ketika saya mengatakan sebuah sedskrip, maksud saya lebih dari sekadar sederhana s/.../.../g, tetapi sebuah file yang diuraikan dan dijalankan dengan sedsendirinya. Sekecil apa pun bahasanya, itu mungkin bahasa golf yang layak ...
Isiah
@impinball Regex benar-benar baik-baik saja, meskipun saya tidak tahu bagaimana Anda akan membuka daftar kata dan menguraikannya dengan bahasa regex saja. sedskrip juga baik dan bisa sangat menarik, mereka bisa melakukannya dengan sangat baik karena sintaksis substitusi pendek, Anda mungkin dapat membaca dari daftar kata, baik dengan ekstensi GNU atau dengan menggunakan sedsebagai bagian dari program Bash yang lebih besar

Jawaban:

11

Javascript (49 + 5635) * 10/2174 = 26.14

Demo Online:

Opsi "Kamus nyata" tidak berfungsi di drop box tetapi akan berfungsi jika dijalankan di server web nyata. Diuji di server pengembangan studio visual dan google chrome.

https://dl.dropboxusercontent.com/u/141246873/leettranslator/index.html

Skor:

49 item leet = 49

Bonus kapitalisasi = 5 * 49 = 245

bonus pencarian kamus = 20 * 49 = 980

seru seru * 3 = 90 * 49 = 4410

(item leet + bonus) * 10 / (panjang kode)

(49 + 5635) * 10/2174 = 26.14

Kode:

function IsInDict(e) { return W[e] } function translate(e) { words = e.split(" "); res = ""; for (var t in words) { ex = ""; function n(e, r, i) { var s = false; for (var o = 1; o <= e.length; o++) { var u = e.substring(0, o) === "!" || i; var a = et[e.substring(0, o)]; var f = e.substring(o); if (a) { s = true; if (f.length === 0) { if (u) { ex = r + a; words[t] = "" } } else n(f, r + a, u) } } if (i && !s && r) { ex = r; words[t] = e.split("").reverse().join("") } } n(words[t].split("").reverse().join(""), "", false); mes = []; function r(e, t) { for (var n = 1; n <= e.length; n++) { var i = tokens[e.substring(0, n)]; var s = e.substring(n); if (i) { mFound = true; if (s.length === 0) for (var o in i) { mes.push(t + i[o]) } else for (var o in i) r(s, t + i[o]) } } if (e.length > 1) r(e.substring(1), t + e.substring(0, 1)); else { mes.push(t + e) } } m = ""; if (words[t] !== "") { r(words[t].toLowerCase(), ""); if (mes.length === 1) m = mes[0]; else { sl = []; for (var i in mes) { if (IsInDict(mes[i].slice(-1) === "." ? mes[i].substring(0, mes[i].length - 1) : mes[i])) { sl.push(mes[i]) } } if (sl.length > 0) m = sl[0]; else m = mes[0] } if (res === "") { m = cap(m) } if (res.slice(-1) === ".") { m = cap(m) } } res += " " + m; if (ex !== "") res += ex } return res.trim() } function cap(e) { return e.charAt(0).toUpperCase() + e.slice(1) } tokens = { $: ["s"], "(": ["c"], 5: ["s"], "@": ["a"], 4: ["a", "for"], 3: ["e"], "+": ["t"], "#": ["h"], teh: ["the"], "'d": ["ed"], pwnd: ["pwned"], pwnt: ["pwned"], k: ["ok"], kk: ["ok"], 0: ["o"], y: ["why"], txt: ["text"], dafuq: ["what the f**k"], "/\\": ["a"], "^": ["a"], "\\/": ["v"], d00d: ["dude"], n00b: ["newbie"], "\\/\\/": ["w"], 8: ["b", "ate"], "|_|": ["u"], "|-|": ["h"], "Я": ["r"], j00: ["you"], joo: ["you"], vv: ["w"], tomoz: ["tomorrow"], "|<": ["k"], "[)": ["d"], "|)": ["d"], "<3": ["love"], "><": ["x"], 10100111001: ["leet"], 2: ["to", "too"], ur: ["your", "you're"], u: ["you"], x: ["ks", "cks"], z: ["s"], 1: ["i", "l"], "!": ["i"], c: ["see", "sea"], b: ["be", "bee"], "&": ["and", "anned", "ant"], 7: ["and", "anned", "ant", "t"] }; et = { eno: "!", nevele: "!!", 1: "!", "!": "!" }

Tidak Disatukan:

            tokens={
            '$':['s'],'(':['c'],'5':['s'],'@':['a'],'4':['a','for'],'3':['e'],'+':['t'],'#':['h'],'teh':['the'],"'d":['ed'],'pwnd':['pwned'],
            'pwnt':['pwned'],'k':['ok'],'kk':['ok'],'0':['o'],'y':['why'],'txt':['text'],'dafuq':['what the f**k'],
            '/\\':['a'],'^':['a'],'\\/':['v'],'d00d':['dude'],'n00b':['newbie'],
            '\\/\\/':['w'],'8':['b','ate'],'|_|':['u'],'|-|':['h'],'Я':['r'],'j00':['you'],
            'joo':['you'],'vv':['w'],'tomoz':['tomorrow'],'|<':['k'],'[)':['d'],'|)':['d'],'<3':['love'],
            '><':['x'],'10100111001':['leet'],'2':['to','too'],'ur':["your","you're"],
            'u':['you'],'x':['ks','cks'],'z':['s'],'1':['i','l'],'!':['i'],'c':['see','sea'],
            'b':['be','bee'],'&':['and','anned','ant'],'7':['and','anned','ant','t']}
            var excTokens = {'eno':'!','nevele':'!!','1':'!','!':'!'}

            function IsInDict(word)
            {
                return (W[word]);
            }

            function translate(input) {
                var words = input.split(" ");
                var result = "";
                for (var i in words) {
                    var exclamations = "";
                    function parseExclamations(s, prev, exclamationFound) {
                        var matchFound = false;
                        for (var j = 1; j <= s.length; j++) {
                            var hasExclamation = (s.substring(0, j) === "!") || exclamationFound;
                            var currentToken = excTokens[s.substring(0, j)];
                            var remaining = s.substring(j);
                            if (currentToken) {
                                matchFound = true;
                                if (remaining.length === 0) {
                                    if (hasExclamation) {
                                        exclamations = prev + currentToken;
                                        words[i] = "";//word only had exclamations in it so dont parse the rest of it
                                    }
                                }
                                else
                                    parseExclamations(remaining, prev + currentToken, hasExclamation);
                            }
                        }
                        if (exclamationFound && !matchFound && prev) {
                            exclamations = prev;
                            words[i] = s.split("").reverse().join("");//reverse back again
                        }
                    }
                    var reverseWord = words[i].split("").reverse().join("");
                    parseExclamations(reverseWord, "", false);

                    var matches = []
                    function parse(s, prev) {
                        for (var j = 1; j <= s.length; j++) {
                            var currentTokenArray = tokens[s.substring(0, j)];
                            var remaining = s.substring(j);
                            if (currentTokenArray) {
                                matchFound = true;
                                if (remaining.length === 0)
                                    for (var k in currentTokenArray) {
                                        matches.push(prev + currentTokenArray[k]);
                                    }
                                else
                                    for (var k in currentTokenArray)
                                        parse(remaining, prev + currentTokenArray[k]);
                            }
                        }

                        if (s.length > 1)
                            parse(s.substring(1), prev + s.substring(0, 1));
                        else {
                            matches.push(prev + s);
                        }
                    }

                    var match = "";
                    if (words[i] !== "") {
                        parse(words[i].toLowerCase(), "");

                        //check the dictionary
                        if (matches.length === 1)
                            match = matches[0];
                        else {
                            var shortlist = [];
                            for (var j in matches) {
                                //check dictionary. allow for a full stop at the end of the word
                                var isInDict = IsInDict(matches[j].slice(-1) === "." ? matches[j].substring(0, matches[j].length - 1) : matches[j]);
                                if (isInDict) {
                                    shortlist.push(matches[j]);
                                }
                            }

                            if (shortlist.length > 0)
                                match = shortlist[0];
                            else
                                match = matches[0];
                        }
                        if (result === "") {
                            match = cap(match);
                        }
                        if (result.slice(-1) === ".") {
                            match = cap(match);
                        }
                    }
                    result += " " + match;

                    if (exclamations !== "")
                        result += exclamations;
                }

                return result.trim();
            }

            function cap(string) {
                return string.charAt(0).toUpperCase() + string.slice(1);
            }

Hasil tes:

  • | - | 3 15 $ | _ | (# @ n00b ====> Dia adalah pemula
  • @ 1 // 4Y5 p0 $ + ur n3VV qu35710nz 1n $ $ 80x ====> Selalu kirim pertanyaan baru Anda di kotak pasir
  • !!! 1 !! 1 ====> !!!!!!!
  • !!!satu! ====> !!!!!
  • ! sebelas ====> !!!
  • teh !!! 1 !! 1 ====> The !!!!!!!
  • teh !!! ====> The !!!!!
  • teh! sebelas ====> The !!!
  • teh !!! 1 !! 1 ====> The !!!!!!!
  • qu35710nz! 1! ====> Pertanyaan !!!
  • +357 +357. 735+ ====> Tes uji. Uji
  • & 31! 73 # 4 (KER $ WR0 + 3 83773R L! K3 + #! 5 7 # @ N 2D @ Y ====> Dan peretas elit menulis lebih baik seperti ini daripada hari ini

Catatan:

Kamus adalah file javascript terpisah dengan objek bernama W yang berisi semua kata. Ini hanya berisi kata-kata yang saya butuhkan untuk menjalankan tes yang relevan.

rans
sumber
Jika Anda menjalankannya melalui Closure Compiler hanya 1640 karakter yang membuat skor Anda menjadi 34.
AMK
apa yang dilakukan file ini? dl.dropboxusercontent.com/u/141246873/leettranslator/… apakah hanya untuk mendapatkan kamus dari web? (mis. dapat menjalankan program menggunakan W.jsjika dihapus)
@professorfish thats js lib eksternal dengan kamus di dalamnya (kata hingga sepuluh huruf). Ini hanya digunakan jika opsi 'kamus nyata' dipilih pada demo. Ini hanya untuk demo dengan kamus yang lebih baik dan bukan bagian dari jawaban resmi saya.
rdans
6

Haskell - Skor 1,421421421: (37 item + (21 bonus (kapitalisasi) * 5)) * 10 / (999 bytes)

Ini jawaban terakhir saya.

import System.Environment
import Text.Parsec
import Text.Parsec.String
s=string
r=return
t=try
o=oneOf
(>|)=(<|>)
a p l u=b[p]l u
b (p:q) l u=e(foldl(>|)(s p)$map(s)q)l u
c p l u=e(o p)l u
d p q=t$s p>>r q
e p l u=t$do{p;r l}>|do{s". ";p;r$". "++u}
f p q=t$do{between(t$s" ")(t$s" ")(o p);r q}
g::Parser String
g=do{s<-many$c"$5""s""S">|c"@4^""a""A">|c"3""e""E">|c"7+""t""T">|c"#""h""H">|d"teh""the">|d"'d""ed">|d"pwnd""pwned">|d"pwnt""pwned">|c"kK""ok""OK">|d"kk""OK">|d"n00b""newbie">|f"yY""why">|d"4""for">|d"txt""text">|d"dafuq""what the f**k">|b["\\/\\/","vv","VV"]"w""W">|a"/\\""a""A">|d"d00d""dude">|c"0""o""O">|a"\\/""v""V">|c"8""b""B">|a"|_|""u""U">|a"|-|""h""H">|c"Я""r""R">|b["j00","joo"]"you""you">|d"tomoz""tomorrow">|a"|<""k""K">|b["[)","|)"]"d""D">|d"<3""love">|a"><""x""X">|c"1!""i""I">|d"10100111001""leet">|c"2""too""to">|d"ur""your">|d"UR""you're">|f"uU""you">|c"xX""ks""cks">|d"&""and">|do{c<-anyChar;return [c]};return$concat s}
main=getArgs>>=putStrLn.show.(parse g"").concat

Tes

Ketika program dikompilasi ke file bernama min-lt, Anda dapat menulis skrip shell berikut

#!/bin/bash
./min-lt "|-|3 15 $|_|(# @ n00b"
./min-lt "\$#!+"
./min-lt "\/\/ 1 |< 1 P 3 [) 1 A"
./min-lt "H4X0R"
./min-lt "@1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x"
./min-lt "+357 +357. 735+"

yang akan mencetak ini

Right "he is su(h a newbie"
Right "shit"
Right "w i k i P e d i A"
Right "HaksoR"
Right "aiwaYs post your new questionz in the sandboks"
Right "test test. Test"
gxtaillon
sumber
oleh -ks-saya berarti ksdi tengah kata. Saya akan melihat ini segera setelah saya menemukan kompiler
Cukup instal haskell-platformpaket. Apakah Anda punya contoh untuk ks?
gxtaillon
<insertnamehere> rocXatauroX
Saya sudah mengujinya, itu berfungsi
1
Memperbarui jawaban saya dengan skor dan penanganan terjemahan kata yang lebih baik.
gxtaillon
6

Extended BrainFuck : 0,6757

{a[-])&d}{c(-(-}{d)$t(-}:r:i:t$t,(-$i+$r+)$i($t 6+(-$i 5--)+$i 3+(--&c-(--
(3-(5-&c&c&c-&c--5-((-&d)$r.&d|"A"&a|"B"&a|"T"&a|"S"&a|"A"&a|"E"&a|"TO"&a
|"L"&a|"O"&a|"T"&a|"C"&a|"AND"&a|"S"&a|"H"&a|"I"(-))$i(-)$r(-)$t,(-$i+$r+))

Jadi ini artinya 15 terjemahan "$ (5 @ 437 + # 0821! &", Tidak ada bonus dan ia memiliki 222 byte (tidak termasuk umpan baris yang sempurna). 15 * 10/222 = 0,6757

Pemakaian:

%> beef ebf.bf < leet.ebf > leet.bf
%> echo '& 31337 #4(KER$ WR0+3 83773R L!K3 +#!5 7#@N 2D@Y' | beef  leet.bf
AND ELEET HACKERS WROTE BETTER LIKE THIS THAN TODAY
%>

EBF tidak benar-benar dibuat untuk bermain golf tetapi fitur rle, makro dan fitur string cetak membuatnya agak lebih mudah untuk dikompres daripada BrainFuck. Biner BrainFuck akhir yang dikompilasi terlihat seperti ini:

>>,[-<+<+>>]<[>++++++[-<------>]+<+++[--[-[--[--[---[-----[-[-[-[-[-[--[-[--------[[-]
>[-]<<.>]>[->++++++++[-<++++++++>]<+.[-]]<]>[->++++++++[-<++++++++>]<++.[-]]<]>[->++++
+++++[-<+++++++++>]<+++.[-]]<]>[->+++++++++[-<+++++++++>]<++.[-]]<]>[->++++++++[-<++++
++++>]<+.[-]]<]>[->++++++++[-<+++++++++>]<---.[-]]<]>[->+++++++++[-<+++++++++>]<+++.--
---.[-]]<]>[->++++++++[-<+++++++++>]<++++.[-]]<]>[->+++++++++[-<+++++++++>]<--.[-]]<]>
[->+++++++++[-<+++++++++>]<+++.[-]]<]>[->++++++++[-<++++++++>]<+++.[-]]<]>[->++++++++[
-<++++++++>]<+.+++++++++++++.----------.[-]]<]>[->+++++++++[-<+++++++++>]<++.[-]]<]>[-
>++++++++[-<+++++++++>]<.[-]]<]>[->++++++++[-<+++++++++>]<+.[-]]<[-]<[-]>>,[-<+<+>>]<]
Sylwester
sumber
1
Kode BF yang dikompilasi tampaknya berfungsi dengan baik, terlihat cukup pendek untuk program BF
@professorfish Menggunakan ~"OTLHEAND"Saya bisa membuat semua karakter sekali untuk 107 byte kode objek daripada membuat mereka dari 0 setiap kali menggunakan 354, tapi jawaban saya dioptimalkan untuk ukuran kode EBF :)
Sylwester
2

Jawa: 1.236

import java.util.*;public class L{static H<String,String>c;static H<String,String>w;static{c=new H();c.p("1","i");c.p("!","i");c.p("$","s");c.p("5","s");c.p("@","a");c.p("4","a");c.p("3","e");c.p("7","t");c.p("+","t");c.p("#","h");c.p("'d","ed");c.p("0","o");c.p("zero","o");c.p("\\/\\/","w");c.p("/\\","a");c.p("\\/","v");c.p("|<","k");c.p("[)","d");c.p("8","b");c.p("|_|","u");c.p("|-|","h");c.p("Я","r");c.p("(","c");c.p("VV","w");c.p("&","and");c.p("2","to");w=new H();w.p("@","a");w.p("teh","the");w.p("pwnd","pwned");w.p("pwnt","pwned");w.p("k","ok");w.p("kk","ok");w.p("y","why");w.p("Y","why");w.p("4","for");w.p("txt","text");w.p("dafuq","what the f**k");w.p("d00d","dude");w.p("n00b","newbie");w.p("j00","you");w.p("joo","you");}public static void main(String[]a){System.out.println(new L().C(a));}String C(String[]o){String x=T(o);for(String d:o){if(w.containsKey(d))x=x.replace(d,w.get(d));else{String r=d;for(String y:c.keySet()){if(d.contains(y))r=r.replace(y,c.get(y));}x=x.replace(d,r);}}return x;}String T(String[]l){String s="";for(String w:l)s+=" "+w;return s;}}class H<T1,T2>extends LinkedHashMap<T1,T2>{T2 p(T1 k,T2 v){return super.put(k,v);}}

Jadi ia melakukan transformasi berikut

+357 +357. 735+
test test. test
|-|3 15 $|_|(# @ n00b
he is such a newbie
$#!+
shit
\/\/ 1 |< 1 P 3 [) 1 A
w i k i P e d i A
@1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x
aiwaYs post ur new questionz in the sandbox
& 31337 #4(KER$ WR0+3 83773R L!K3 +#!5 7#@N 2D@Y
and eieet hacKERs WRote betteR LiKe this thaN toDaY

Perhitungan skor rumit

  • (item leet + bonus) * 10 / (panjang kode)
  • panjang kode = 1165 leet
  • item leet = 39 (unik)
  • bonus = 21 (tidak tahu bagaimana cara menghitung sehingga disalin MomemtumMori) (Mohon saran)

((39 + (21 * 5)) * 10) / 1165 = 1.236

Hapus kode Golf:

import java.util.*;

public class L {
    static H<String, String> c;
    static H<String, String> w;

    static {
        c = new H();
        c.p("1", "i");
        c.p("!", "i");
        c.p("$", "s");
        c.p("5", "s");
        c.p("@", "a");
        c.p("4", "a");
        c.p("3", "e");
        c.p("7", "t");
        c.p("+", "t");
        c.p("#", "h");
        c.p("'d", "ed");
        c.p("0", "o");
        c.p("zero", "o");
        c.p("\\/\\/", "w");
        c.p("/\\", "a");
        c.p("\\/", "v");
        c.p("|<", "k");
        c.p("[)", "d");
        c.p("8", "b");
        c.p("|_|", "u");
        c.p("|-|", "h");
        c.p("Я", "r");
        c.p("(", "c");
        c.p("VV", "w");
        c.p("&", "and");
        c.p("2", "to");
        w = new H();
        w.p("@", "a");
        w.p("teh", "the");
        w.p("pwnd", "pwned");
        w.p("pwnt", "pwned");
        w.p("k", "ok");
        w.p("kk", "ok");
        w.p("y", "why");
        w.p("Y", "why");
        w.p("4", "for");
        w.p("txt", "text");
        w.p("dafuq", "what the f**k");
        w.p("d00d", "dude");
        w.p("n00b", "newbie");
        w.p("j00", "you");
        w.p("joo", "you");
    }

    public static void main(String[] a) {
        System.out.println(new L().C(a));
    }

    String C(String[] o) {
        String x = T(o);
        for (String d : o) {
            if (w.containsKey(d)) x = x.replace(d, w.get(d));
            else {
                String r = d;
                for (String y : c.keySet()) {
                    if (d.contains(y)) r = r.replace(y, c.get(y));
                }
                x = x.replace(d, r);
            }
        }
        return x;
    }

    String T(String[] l) {
        String s = "";
        for (String w : l) s += " " + w;
        return s;
    }
}

class H<T1, T2> extends LinkedHashMap<T1, T2> {
    T2 p(T1 k, T2 v) {
        return super.put(k, v);
    }
}
Uday Shankar
sumber
2
Maukah Anda melepaskannya? : D
Knerd
0

C # skor 45 * 10/2556 = 0,176

Program dapat menampilkan hampir semua huruf besar dan kecil. Karena saya tidak menggunakan daftar kata bahasa Inggris maka kunci pertama yang ditemukan dalam Kamus digunakan. Misalnya \ / \ / menjadi vav. Jika char adalah huruf pertama dari sebuah kata, ToUpper diterapkan.

using System;
using System.Collections.Generic;
class L
{
Dictionary<string, string> D;        
public L() 
{ 
D = new Dictionary<string, string>();
M();
}
public void M()
{
D.Add("$", "s,S");
D.Add("(", "c,C");
D.Add("5", "s,S");
D.Add("@", "a,A");
D.Add("4", "a,A,for");
D.Add("3", "e,E");
D.Add("7", "t,T,and,anned,ant");
D.Add("+", "t,T");
D.Add("#", "h,H");
D.Add("teh", "the");
D.Add("'d", "ed");
D.Add("pwnd", "pwned");
D.Add("pwnt", "pwned");
D.Add("k", "OK");
D.Add("K", "OK");
D.Add("kk", "OK");
D.Add("0", "o,O");
D.Add("y", "why");
D.Add("Y", "why");
D.Add("txt", "text");
D.Add("dafuq", "what the f**k");
D.Add("\\/\\/", "w,W");
D.Add("/\\", "a,A");
D.Add("^", "a,A");
D.Add("\\/", "v,V");
D.Add("d00d", "dude");
D.Add("n00b", "newbie");       
D.Add("8", "b,B,ate,8");
D.Add("|_|", "u,U");
D.Add("|-|", "h,H");
D.Add("j00", "you");
//Я      -> r,R
D.Add("joo", "you");
D.Add("vv", "w,W");
D.Add("VV", "w,W");
D.Add("tomoz", "tomorrow");
D.Add("|<", "k,K");
D.Add("[)", "d,D");
D.Add("|)", "d,D");
D.Add("<3", "love");
D.Add("><", "x,X");
D.Add("2", "to,too");
//10100111001       -> leet (binary representation of 1337)
D.Add("ur", "your,you're");
D.Add("UR", "your,you're");
D.Add("u", "you");
D.Add("U", "you");
D.Add("x", "ks,cks");
D.Add("X", "ks,cks");
D.Add("z", "s,S");
D.Add("Z", "s,S");
D.Add("1", "i,I,l,L");
D.Add("!", "i,I,!");
D.Add("c", "see,C,sea");
D.Add("C", "see,C,sea");
D.Add("b", "be,B,bee");
D.Add("B", "be,B,bee");
//[accented letter] -> [non-accented form] (score 1 per accented letter supported)
D.Add("&", "and,anned,ant");
}

int P(string K, out List<string> V)
{
V = new List<string>();
string v,comma=",";
if(D.TryGetValue(K,out v))
{
string[] vv = v.Split(comma.ToCharArray());
foreach(string s in vv)
{
V.Add(s);
}
}
return V.Count;
}

public string E(string X)
{
string e ="";
string S = " ",t,k="";
string[] W = X.Split(S.ToCharArray());
int n = 0,x=0,m=0;
List<string> V=new List<string>();
bool F = false;
foreach(string s in W)
{
n = s.Length;
F = false;
for (int i = 0; i < n; i++)
{
m = 0;
for (int j = 1; j < n - i+1; j++)
{
k = s.Substring(i, j);
x = P(k, out V);
if (x > 0)
{
t = V[0];
if (t.Length == 1 && i == 0)
t = t.ToUpper();
e += t;
m = t.Length;
F = true;
break;
}
}
if (m > 0) i += (m - 1);
}
e += S;
}
return e;
}
static void Main(string[] a)
{
string t = Console.ReadLine();
L x = new L();
t = x.E(t);
Console.WriteLine(t);
Console.ReadLine();
}
}

Inilah hasil pengujian saya:

$ -> S 
( -> C 
5 -> S 
@ -> A 
4 -> A 
3 -> E 
7 -> T 
+ -> T 
# -> H 
teh -> the 
'd -> ed 
pwnd -> pwned 
pwnt -> pwned 
k -> OK 
K -> OK 
0 -> O 
y -> why 
Y -> why 
4 -> A 
txt -> text 
dafuq -> what the f**k 
/\ -> A 
^ -> A 
\/ -> V 
d00d -> dude 
n00b -> newbie 
\/\/ -> Vav 
8 -> B 
|_| -> U 
|-| -> H 
j00 -> you 
joo -> you 
vv -> W 
VV -> W 
tomoz -> tomorrow 
|< -> K 
[) -> D 
|) -> D 
<3 -> love 
>< -> X 
2 -> to 
ur -> you 
UR -> you 
u -> you 
U -> you 
8 -> B 
x -> ks 
X -> ks 
z -> S 
Z -> S 
1 -> I 
! -> I 
c -> see 
C -> see 
b -> be 
B -> be 
bacchusbeale
sumber