J'adore ce simple chiffre, c'est tellement amusant de lire des mots qui ne sont pas tout à fait lisibles par l'homme et de combler les lacunes ...
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Les règles sont super simples:
- Accepter du texte comme saisie (caractères ascii, lettres majuscules / minuscules et signes de ponctuation).
- Pour chaque voyelle, tournez-la à la voyelle suivante ou revenez au début.
- a => e
- e => i
- i => o
- o => u
- u => a
- Les voyelles majuscules restent majuscules, les minuscules restent minuscules.
- Afficher le texte après ces conversions.
- Pas besoin de supporter les accents.
- Tous les autres caractères doivent rester inchangés.
- Essayez de le faire dans le plus petit nombre d'octets.
- N'importe quelle vieille langue que tu aimes.
Cas de test
It was the best of times, it was the worst of times,
it was the age of wisdom, it was the age of foolishness,
it was the epoch of belief, it was the epoch of incredulity,
it was the season of light, it was the season of darkness,
it was the spring of hope, it was the winter of despair,
we had everything before us, we had nothing before us,
we were all going direct to heaven, we were all going direct the other way –
in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received,
for good or for evil, in the superlative degree of comparison only.
En dehors:
Ot wes thi bist uf tomis, ot wes thi wurst uf tomis,
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss,
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty,
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss,
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor,
wi hed ivirythong bifuri as, wi hed nuthong bifuri as,
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey –
on shurt, thi piroud wes su fer loki thi prisint piroud,
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid,
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.
Dans:
The quick brown fox jumps over the lazy dog.
En dehors:
Thi qaock bruwn fux jamps uvir thi lezy dug.
Dans:
Home is where the heart is.
En dehors:
Humi os whiri thi hiert os.
Dans:
Boaty McBoatface
En dehors:
Buety McBuetfeci
Dans:
AEIOUaeiou
En dehors:
EIOUAeioua
Dans:
Programming Puzzles And Code Golf
En dehors:
Prugremmong Pazzlis End Cudi Gulf
code-golf
text-processing
AJFaraday
la source
la source
Réponses:
Stax , 7 octets
Exécuter et déboguer
Essayez-le en ligne!
Explication (non emballée)
Peut-être capable de sauver plus, va continuer à essayer.
la source
MS-SQL, 51 octets
Fonctionne sur SQL 2017 ou supérieur:
La nouvelle fonction
TRANSLATE
effectue un remplacement de caractère individuel, elle est donc parfaitement adaptée à ce défi.La saisie s'effectue via une table préexistante t avec varchar colonne v , conformément à nos règles IO .
Dans ce cas, la table doit être créée à l'aide d'un classement sensible à la casse , soit en s'exécutant sur un serveur sensible à la casse, soit en utilisant le
COLLATE
mot clé (non comptabilisé dans le total des caractères):EDIT : SSMS peut couper la longue citation ci-dessus lors du renvoi du résultat dans une fenêtre "résultats en texte". Il s'agit d'un paramètre client et non d'un bogue dans mon programme .
Pour résoudre ce problème, allez à
Tools > Options > Query Results > SQL Server > Results to Text
et augmentez le "Nombre maximal de caractères affichés dans chaque colonne".la source
REPLACE
quelques astuces:REPLACE(TRANSLATE(v,'1234567890','xxxxxxxxxx'),'x','')
éliminer tous les chiffres d'une chaîne, par exemple. Encore long, mais beaucoup plus court que 10 imbriquésREPLACE
.Bash + coreutils , 24
Essayez-le en ligne!
la source
Haskell , 52 octets
Essayez-le en ligne!
Lynn m'a sauvé deux octets en soulignant qu'il
!!0
est plus court quehead
.Explication
Si vous n'avez jamais codé en Haskell, cela ressemblera probablement à un tas de charabia. Alors commençons par ungolf, puis décomposons-le:
D'abord nous avons une fonction
!
qui prend une chaînes
et un caractèrec
. Notre première correspondance de modèle accepte les entrées si la chaîne n'est pas vide. Si la chaîne n'est pas vide, nous comparons son premier caractère àc
. Si le premier caractère n'est pas égal à,c
nous le lançons et l'appelons à!
nouveau avec le reste de la chaîne etc
. S'il est égal, nous retournons le deuxième caractère de la chaîne.Notre correspondance de modèle suivante intercepte la chaîne dans tous les autres cas, c'est-à-dire si la chaîne est vide. Dans ce cas, nous venons de revenir
c
.Dans l’ensemble, cette fonction prend un caractère
c
et une chaînes
et renvoie le caractère après la première occurrence dec
ins
. Si on passe ça avecaeiouaAEIOUA
cela effectuera notre chiffrement sur un seul caractère. Pour rendre notre fonction entière, nous devons mapper cela à travers la chaîne.la source
La rétine ,
dix98 octetsEssayez-le en ligne!
Sauvé 1 octet grâce à Neil! Et un autre octet grâce à Martin!
La nouvelle version de rétine a des classes de voyelles, ce qui rend le résultat un peu plus court. La translittération utilise également la classe "autre". Donc, la
to
classe ressemble à "aeiouAEIOUA" tandis que lafrom
classe ressemble à "uaeiouAEIOUA"Cela ne pose aucun problème, car le deuxième
u
mappageA
ne sera jamais effectué car ilu
était déjà mappé sura
.la source
T`_o`uvUV
._
de départ le traiterait au pied de la lettre, mais il semblerait que ce ne soit pas le cas.Y
encore beaucoup utilisé , je vais donc tenter le coup demain.Perl 5 + -p,
2423 octetsEssayez-le en ligne
-1 octet grâce à @DomHastings
la source
-p
comme +1, mais nous considérons que cette réponse est en "Perl 5 +-p
".;
le délimiteur, vous pouvez enregistrer un octet!Python 3, 62 octets
Créez une table de traduction (dictionnaire) avec
str
lastr.maketrans
méthode statique de . Traduisez les caractères pertinents en leur caractère de destination.la source
x
paramètre. En python, les fonctions lambda n'ont pas besoin d'une instruction return.C,
8576676564 octetsPort de Kevin Cruijssen est Java réponse . Essayez-le en ligne ici .
Merci à Kevin Cruijssen pour avoir joué au golf 9 octets, à Christoph pour avoir joué au golf 11 octets et à ceilingcat pour avoir joué au golf 1 octet.
Version non-golfée:
la source
\0
. De plus, cela ne fonctionne pas quand il est compilé avec clang: tio.run/##S9ZNzknMS///…const char *res = strchr("AEIOU...", 0)
renvoie un pointeur sur le terminateur dans le littéral de chaîne.putchar(res[1])
lit la fin de la chaîne littérale. Avec gcc, il arrive apparemment de trouver un autre octet zéro et cela fonctionne, mais avec clang, cela donne un73 'I'
(probablementmain
le littéral de chaîne de, "C'était ...", mais je n'ai pas vérifié l'ASM). Donc,putchar
ne retourne pas 0, et nous finissons par commettre*c++
une erreur de segmentation quand nous lisons une page non mappée.f(char*c){for(;*c;)putchar(1[strchr("AEIOUAaeioua",*c++)?:c-2]);}
. C'est tout pour le moment je suppose.a[b]==*(a+b)==*(b+a)==b[a]
. Donc1[...]==(...)[1]
R , 43 octets
Essayez-le en ligne!
Voici ma solution dans un moyen
cat
de l’imprimer plus facilement: essayez-la en ligne!la source
Gelée , 11 octets
Essayez-le en ligne!
la source
Python 2 ,
796867 octets-1 octet grâce à @ArnoldPalmer
Essayez-le en ligne!
la source
JavaScript (ES6), 60 octets
Essayez-le en ligne!
la source
s=>s.replace(/./g,c=>'auoieaAUOIEA'.match(".(?=${c})")||c)
only.
=>unlya
Ruby
-p
, 31 octetsEssayez-le en ligne!
la source
Pyth, 17 octets
Essayez-le ici
la source
Japt 2.0,
2521 octetsJe me suis amusé à jouer au golf avec Shaggy.
Exécutez-le ici.
la source
S.p(f)
utilisé.Java 10,
9787 octets-10 octets après avoir été inspirés par la réponse JavaScript de @Arnauld (sa version de 60 octets) .
Essayez-le en ligne.
Explication:
la source
05AB1E ,
141311 octetsEssayez-le en ligne!
la source
|
et»
: Essayez-le en ligne: 11 octets .Retina 0.8.2 , 20 octets
Essayez-le en ligne! Le lien inclut des cas de test.
la source
APL + WIN, 55 octets
Invites pour la chaîne d'entrée:
la source
Oreillons, 38 octets
Normalement, Mumps n'ajoute pas de retour à la ligne car je ne voyais pas l'exigence de séparer l'entrée de la sortie. Cela semblait un peu bizarre au premier passage. Par exemple, la sortie du dernier cas de test ressemble à ceci:
Si vous voulez ajouter un retour chariot, ajoutez deux octets ainsi:
la source
Vim + tpope / vim-abolish , 30 octets
Solution alternative, également 30 octets:
Selon la méta , les réponses de vim peuvent utiliser des plugins sans pénalité d'octet. Ce n'est pas une réponse vim, mais un vim + abol réponse .
Abolish est un plugin extrêmement utile. Cette section du fichier README décrit joliment le fonctionnement de cette commande (la
Subvert
commande).la source
CJam ,
2919 octetsEssayez-le en ligne!
-10 octets grâce à @Peter Taylor
Explication:
la source
q
plutôt quel
de prendre l'entrée. Le premier cas de test semble être multiligne. Aussi, vous pouvez raccourcir"eioua"
à_1m<
. En fait, vous pouvez aller plus loin et jouer au golfq"aeioua"_eu+_1m<er
AutoHotkey , 24 octets
AuotHotkey remplace automatiquement les lettres de manière sensible à la casse.
la source
PHP, 90 octets
Essayez-le en ligne
Code
Explication
75 octets si exécuté avec
php -r
using$argv
la source
J , 33 octets
Essayez-le en ligne!
la source
str , 18 octets
Essayez-le en ligne!
Explication
la source
PHP, 38 octets
Assez simple, pas très créatif, utilise
strtr
pour remplacer les voyelles:Courez avec
echo '<input>' | php -nF <filename>
ou essayez-le en ligne .la source
argn
? Si c'est le cas, ce n'est pas valable. vous auriez besoin de passer la chaîne en tant qu'argument et de l'utiliser à la$argv1]
place.-F
indicateur, cela fonctionne avec une entrée sur la ligne de commande. D'après la documentation PHP sur les options :-F --process-file PHP file to execute for every input line. Added in PHP 5.
La définition de la variable d'essayer en ligne est simplement due au fait que certaines personnes n'ont pas installé PHP localement, et que je ne pouvais pas activer le-F
drapeau dans TIO.q / kdb +,
3633 octetsSolution:
Exemples:
Explication:
Déterminez un index des voyelles, ajoutez-en un pour passer au suivant et indexez-le. Pensez-vous que cette approche peut être améliorée de manière significative ...
Prime:
Mon ancienne solution ** de 36 octets (()) qui, à mon avis, est plutôt cool, mais il est nécessaire d’avancer sur les listes pour la rendre compétitive:
la source
Charbon de bois , 35 octets
Essayez-le en ligne!
Méthode naïve.
Explication:
la source
PHP , 76 octets.
Vérifiez-le!
C'était le plus court que j'ai pu faire cela en PHP.
la source