Les Français épeler les chiffres d'une manière particulière.
- 1-16 sont "normaux"
- 17-19 sont épelés 10 + 7. 10 + 8, 10 + 9 .
- 20-69 sont "normaux" (OK, OK! Pas vraiment, mais ils sont dans ce défi)
- 70-79 sont 60 + 10, 60 + 11 ... 60 + 10 + 7, 60 + 10 + 8, 60 + 10 + 9 .
- 80-99 sont 4 * 20, 4 * 20 + 1, 4 * 20 + 2 ... 4 * 20 + 16, 4 * 20 + 10 + 7, 4 * 20 + 10 + 8, 4 * 20 + 10 + 9
Défi:
Prenez un entier positif dans l'intervalle [1.100] et exportez-le "à la française". Vous devez le produire exactement comme il est montré ci-dessous, avec *
et +
, ainsi 97
est-il 4*20+10+7
, pas [4 20 10 7]
ou quelque chose d'autre.
Cas de test:
1 - 1
.. - ..
16 - 16
17 - 10+7
18 - 10+8
19 - 10+9
20 - 20
21 - 21
.. - ..
69 - 69
70 - 60+10
71 - 60+11
72 - 60+12
77 - 60+10+7
78 - 60+10+8
79 - 60+10+9
80 - 4*20
81 - 4*20+1
82 - 4*20+2
.. - ..
90 - 4*20+10
91 - 4*20+11
96 - 4*20+16
97 - 4*20+10+7
98 - 4*20+10+8
99 - 4*20+10+9
100 - 100
code-golf
number
kolmogorov-complexity
Stewie Griffin
la source
la source
16
en10+7
bas. (En anglais, cela se produit entre12
et10+3
, avec un déguisement un peu plus morphologique.) J'ai toujours été un peu trop obsédé par le fait que différentes langues effectuent cette transition à des nombres différents.22
quand "dix-huit" est10+8
?Réponses:
Excel,
153149 octetsJe suis sûr que cela pourrait être mieux, j'ai eu du mal à trouver un moyen efficace de rendre compte de # 80.
edit: Consolidé les cas "normaux" afin de mieux sauvegarder 4 octets. N ° 80 est toujours nul.
Impossible de trouver une réponse précise ici, pas sûr des règles du code-golf tbh. Puis-je utiliser plusieurs cellules dans Excel et ajouter le nombre d'octets de chacune?
c'est à dire. Pour une entrée dans la cellule A1
A2: 11 octets
A3 (résultat): 125 octets
Pour un total de 136?
la source
IF(A1=80,,IF(MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,"+"&MOD(A1,20)))
enIFS(A1=80,,MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,1,"+"&MOD(A1,20))
)
fin, pouvez-vous faire la même chose dans Excel? Donc vous pouvez économiser 5 "octets" (il y a vraiment UCS2-Chars, donc si vous dites Byte == octet, vous devez le compter en double). Et vous devez modifier le,
en;
Retina ,
5248 octets4 octets économisés grâce à Neil
Essayez-le en ligne! ou vérifier toutes les entrées (fournies par Neil)
Explication
Nous traitons d’abord les traductions de 70, 80 et 90. Dans ces 3 premières étapes, un 7 au début suivi d’un autre caractère est remplacé par
60+1
. De même,9
est remplacé par81
, et8
par4*20+1
. Le remplacement de9
est essentiellement remplacé par "quatre vingt dix" et autres, de sorte que le8
est remplacé par le prochain remplacement, ce qui économise les octets sur l'écriture4*20+1
deux fois.Cela gère les cas de
17
,18
et19
, en remplaçant le1
dans chacun par10+
.Enfin, il ne devrait jamais y avoir de
+0
fin, alors supprimez-le s'il est présent.la source
7-9
, mais je ne pense pas que vous ayez besoin de ça: essayez-le en ligne!$1
est aussi long que?=
.Python 2 , 98 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
7371 octetsVersion bonus qui affiche les nombres tels qu'ils sont réellement épelés pour 2 octets supplémentaires:
la source
23
, par exemple, est censé produire23
, pas20+3
.(m=n%20)
m
est réinitialisé0
dans l'f(n-n%20)
appel. (C'est une variable globale)n<70|n>99
àn%100<70
. Aussi, pourriez-vous ajouter un compilateur test?R, 110 octets
la source
(i-r)/10
au lieu defloor(i/10)
. Eti>15
devrait êtrei>16
.PHP, 99 octets (je veux être la version heureuse)
un port direct de ETHproductions´ JS , 4 octets joués au golf . Imprime les numéros demandés par l'OP.
panne
Je veux avoir raison,
11498 octetsnouvelle approche inspirée par ETHproductions , imprime les nombres tels qu’ils sont épelés.
essayez-le en ligne .
panne
la source
Python 2,
130108 octets22 octets enregistrés grâce à @mathjunkie
Essayez-le en ligne!
la source
f=
parce que vous l'avez utilisé à l'intérieur du lambda.Lot,
220217 octetsPrend une entrée sur STDIN. Générer et supprimer les premiers
+
arrêts d'un octet sur un cas spécial 80. Édition: 3 octets sauvegardés grâce à @ ConorO'Brien.la source
@echo off
et en préfixant toutes les instructions, à l'exception de l'instruction de boucle hte avec@
Gelée , 55 octets
Essayez-le en ligne! ou voir une suite de tests
Sans doute, il y a un moyen plus court!
Comment?
la source
Pyth,
6156 octetsTestez-le en ligne!
Merci à Leaky Nun pour une amélioration de 5 octets!
Explication:
la source
*-Q100>Q69
→}/QTr6T
@]b}17 19
→}b}17 19
+"10+"eb
→j\+,Teb
Python3, 127 octets
Chaque élément de tableau contient sa représentation:
Le code ne crée pas réellement une fonction, mais un tableau - je ne sais pas si c'est autorisé. Sinon, je devrais créer 139 octets en ajoutant
f=[...].__getitem__
.la source
f=
, car les fonctions non nommées (c’est-à-dire les expressions qui correspondent à la fonction soumise) conviennent, à moins que le nom ne soit nécessaire pour quelque chose comme la récursion.Java 7,
9796109 octets+13 octets pour le cas de résolution de bugs
80
.. :(Explication:
Code de test:
Essayez-le ici.
la source