Votre défi est d' écrire un programme pour traduire (anglais) leetspeak / lolspeak / txtspk en anglais normal. Votre programme doit lire depuis l'entrée et la sortie standard vers la sortie standard, sauf si votre langue ne les prend pas en charge.
Vous pouvez utiliser un fichier contenant une liste de mots en anglais, séparés par de nouvelles lignes. Il doit être appelé W
et sera situé dans le même répertoire que votre programme. (Sur les systèmes GNU / Linux et éventuellement d'autres, vous pouvez créer W
un lien vers /usr/share/dict/words
) La liste ne doit pas être entièrement en minuscules, vous pouvez l'utiliser pour déterminer si les mots doivent avoir des majuscules.
Ceci est basé sur une question maintenant supprimée publiée par Nikos M. qui peut être trouvée ici . Ce n'est pas un doublon car cette question d'origine a été fermée et n'a reçu aucune réponse, car il n'y avait pas de critère de gain et l'utilisateur n'était pas disposé à en mettre un.
Notation
Le score est un peu compliqué!
Ton score est
(leet items + bonuses) * 10 / (code length)
Le score le plus élevé l'emporte.
Votre programme ne doit pas être et ne peut probablement pas être parfait, mais plus il est précis, plus il reçoit de bonus!
Puisque $
peut signifier les deux s
et S
, vous obtenez un bonus de 5 points par élément de leet pour décider s'il doit avoir une majuscule (c'est-à-dire des majuscules au début des phrases).
Vous obtenez un bonus supplémentaire de 5 points par élément de leet pour la mise en œuvre de noms propres (mots qui ont toujours des majuscules) - la façon dont cela fonctionne est que vous parcourez la liste de mots, mettez la sortie en majuscule si seule une version en majuscule est présente dans le liste, et si les deux versions sont là, devinez.
Si un personnage a deux significations (par exemple, 1
peut signifier L
ou I
), vous obtenez 20 points par élément de leet pour ne choisir que les traductions de l'élément qui font de vrais mots anglais - utilisez la liste de mots pour cela. Si plus d'une traduction d'un élément leet fait un vrai mot anglais, vous pouvez choisir arbitrairement l'une des traductions valides et toujours obtenir le bonus.
Liste de Leet
Ce sont les éléments leet que vous pouvez implémenter. Vous n'êtes pas obligé de tous les implémenter, mais plus vous en ajoutez, plus vous obtenez de points.
Vous ne pouvez jamais marquer de points en traduisant un objet ou un personnage en lui-même. Cette règle annule toutes les erreurs que j'ai pu commettre dans la liste.
Il est tentant de faire un simple tr
ou s/.../.../g
. Le vrai défi est de déterminer laquelle des multiples significations pourrait et ne pourrait pas être correcte, en utilisant la liste de mots.
Articles Leet (chacun d'eux ajoute 1 à leet items
dans la formule)
$ -> s, S (-> c, C 5 -> s, S @ -> a, A 4 -> a, A 3 -> e, E 7 -> t, T + -> t, T # -> h, H teh -> le 'd -> ed pwnd -> pwned pwnt -> pwned k, K -> OK kk -> OK 0 [zéro] -> o, O y, Y -> pourquoi 4 -> pour txt -> texte dafuq -> ce que le f ** k / \, ^ -> a, A \ / -> v, V d00d -> mec n00b -> débutant \ / \ / -> w, W 8 -> b, B | _ | -> u, U | - | -> h, H Я -> r, R j00 -> vous joo -> toi vv, VV -> w, W tomoz -> demain | <-> k, K [), |) -> d, D <3 -> amour > <-> x, X 10100111001 -> leet (représentation binaire de 1337) 2 -> aussi ur, UR -> votre, vous êtes (pas besoin de distinguer correctement les deux) u, U -> toi 8 -> -ate-, 8 x, X -> -ks -, - cks- z, Z -> s, S 1 -> i, I, l, L ! -> je, je,! c, C -> voir, C, mer b, B -> être, B, abeille [lettre accentuée] -> [forme non accentuée] (note 1 par lettre accentuée prise en charge) &, 7 -> et, anned, ant (peut être utilisé au milieu d'un mot)
Harder "Leet": marquez 30 points pour leet items
chacun
!!! 1 !! 1-> !!!!!!! (traduisez 1 dans une séquence de! en!) !!! un! -> !!!!! ! eleven-> !!!
Exemples
Ce sont des exemples de ce qu'un programme qui implémente tous les caractères leet ci-dessus, et certains des bonus, pourrait faire:
Exemple de phrase: |-|3 15 $|_|(# @ n00b
=He is such a newbie
Censure basée sur leet: $#!+
=s**t
Leet extrême: \/\/ 1 |< 1 P 3 [) 1 A
=Wikipedia
-xor suffixe: H4X0R
=hacker
Leet plus extrême: @1\/\/4Y5 p0$+ ur n3VV qu35710nz 1n teh $&80x
=Always post your new questions in the sandbox
Exemple de notation
Bash, 10 personnages, 3 objets, pas de bonus:
tr 137 let
Ce scores ( 1 * 3 ) * 10 / 10 = 3
.
la source
tr
ous/.../.../g
. Le simple fait de traduire des choses de ce genre constituerait un défi ennuyeux, nous devons donc récompenser de meilleures traductions qui utilisent la liste de motssed
script.)sed
script, je veux dire plus qu'un simples/.../.../g
, mais un fichier qui est analysé et exécuté parsed
lui-même. Aussi laconique que soit la langue, elle pourrait être une langue décente pour le golf ...sed
les scripts sont également très bien et pourraient être très intéressants, ils pourraient très bien faire cela en raison de la courte syntaxe de substitution, vous pourriez être en mesure de lire à partir de la liste de mots, soit avec des extensions GNU ou en utilisantsed
dans le cadre d'un programme Bash plus largeRéponses:
Javascript (49 + 5635) * 10/2174 = 26,14
Démo en ligne:
L'option "Vrai dictionnaire" ne fonctionne pas sur la boîte de dépôt mais elle fonctionnera si elle est exécutée sur un vrai serveur Web. Testé sur le serveur de développement Visual Studio et Google Chrome.
https://dl.dropboxusercontent.com/u/141246873/leettranslator/index.html
But:
49 objets leet = 49
Bonus de capitalisation = 5 * 49 = 245
bonus de recherche de dictionnaire = 20 * 49 = 980
bonus d'exclamation * 3 = 90 * 49 = 4410
(objets leet + bonus) * 10 / (longueur du code)
(49 + 5635) * 10/2174 = 26,14
Code:
Non golfé:
Résultats de test:
Remarques:
Le dictionnaire est un fichier javascript séparé avec un objet appelé W contenant tous les mots. Cela contient juste les mots dont j'avais besoin pour exécuter les tests pertinents.
la source
W.js
s'il est supprimé)Haskell - Score 1,421421421: (37 éléments + (21 bonus (capitalisation) * 5)) * 10 / (999 octets)
Ceci est ma réponse finale.
Les tests
Lorsque le programme est compilé dans un fichier nommé
min-lt
, vous pouvez écrire le script shell suivantqui imprimera ce
la source
-ks-
je voulais direks
au milieu d'un mot. Je vais y jeter un œil dès que je trouverai un compilateur haskellhaskell-platform
paquet. Avez-vous un exemple pourks
?<insertnamehere> rocX
ouroX
BrainFuck étendu : 0,6757
Cela fait donc 15 traductions "$ (5 @ 437 + # 0821! &", Pas de bonus et il a 222 octets (sauts de ligne non inclus non inclus). 15 * 10/222 = 0,6757
Usage:
EBF n'est pas vraiment fait pour le golf, mais sa fonction Rle, ses macros et sa fonction de chaîne d'impression le rendent un peu plus facile à compresser que BrainFuck. Le binaire BrainFuck compilé à la fin ressemble à ceci:
la source
~"OTLHEAND"
J'ai pu créer tous les caractères une fois pour un code objet de 107 octets au lieu de les faire à partir de 0 à chaque fois en utilisant 354, mais ma réponse est optimisée pour la taille du code EBF :)Java: 1.236
Il fait donc les transformations suivantes
Le calcul du score est délicat
((39 + (21 * 5)) * 10) / 1165 = 1,236
Code non golfé:
la source
Score C # 45 * 10/2556 = 0,176
Le programme peut sortir presque toutes les lettres minuscules et majuscules. Comme je n'utilise pas de liste de mots anglais, la première clé trouvée dans le dictionnaire est utilisée. Par exemple, \ / \ / devient vav. Si char est la première lettre d'un mot, ToUpper est appliqué.
Voici ma sortie de test:
la source