Imprimez tous les nombres de 0 à 100 dans le bon ordre en utilisant la méthode de comptage danoise
Comment ils comptent
- Comme en anglais, ils ont des mots dédiés pour 0-20, 30, 40 et 100
- Au lieu de dire
twenty-one
ettwenty-two
, disent-ilsone and twenty
ettwo and twenty
A partir de cinquante on dit des multiples de 10 comme n * 20
50 = half third times twenty = half way to the 3rd multiple of 20 60 = three times twenty 70 = half fourth times twenty 80 = four times twenty 90 = half fifth times twenty
Ainsi, par exemple, 55 serait
five and half third times twenty
.
Production attendue
zero
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
one and twenty
two and twenty
three and twenty
four and twenty
five and twenty
six and twenty
seven and twenty
eight and twenty
nine and twenty
thirty
one and thirty
two and thirty
three and thirty
four and thirty
five and thirty
six and thirty
seven and thirty
eight and thirty
nine and thirty
forty
one and forty
two and forty
three and forty
four and forty
five and forty
six and forty
seven and forty
eight and forty
nine and forty
half third times twenty
one and half third times twenty
two and half third times twenty
three and half third times twenty
four and half third times twenty
five and half third times twenty
six and half third times twenty
seven and half third times twenty
eight and half third times twenty
nine and half third times twenty
three times twenty
one and three times twenty
two and three times twenty
three and three times twenty
four and three times twenty
five and three times twenty
six and three times twenty
seven and three times twenty
eight and three times twenty
nine and three times twenty
half fourth times twenty
one and half fourth times twenty
two and half fourth times twenty
three and half fourth times twenty
four and half fourth times twenty
five and half fourth times twenty
six and half fourth times twenty
seven and half fourth times twenty
eight and half fourth times twenty
nine and half fourth times twenty
four times twenty
one and four times twenty
two and four times twenty
three and four times twenty
four and four times twenty
five and four times twenty
six and four times twenty
seven and four times twenty
eight and four times twenty
nine and four times twenty
half fifth times twenty
one and half fifth times twenty
two and half fifth times twenty
three and half fifth times twenty
four and half fifth times twenty
five and half fifth times twenty
six and half fifth times twenty
seven and half fifth times twenty
eight and half fifth times twenty
nine and half fifth times twenty
one hundred
Règles
- Vous pouvez utiliser n'importe quel séparateur pour séparer les numéros
- En raison d'une faute de frappe dans la spécification d'origine, vous pouvez utiliser à la
forth
place defourth
. - Vous pouvez écrire une fonction ou écrire sur std-out
- Les failles standard s'appliquent
- C'est codegolf; le code le plus court en octets gagne!
Réponses:
JavaScript (ES6),
347336326325308 octetsAvant de lancer, remplacez le
...
par le résultat de l'exécution de ce code:Ou vous pouvez simplement utiliser la version non compressée:
Toujours pas optimale. 11 octets enregistrés en partie par @Titus.
la source
(x%20>9?"half ":"")+[third,forth,fifth][x/20-2.5|0]
au lieu de(x%20>9?"half "+[third,forth,fifth][x/20-2.5|0]:f(x/20|0))
third times twenty
place dethree times twenty
)Fourier , 7028 octets
La récompense ira à la réponse de Paul Schmitz
Cela a été joué au golf par programme en utilisant le programme de golf de issacg
Essayez-le en ligne!
la source
JavaScript (ES6), non en concurrence
J'ai décidé de faire ce que le titre demandait réellement et j'ai compté jusqu'à 100 på dansk. Ceci est basé sur la réponse d'ETHproductions . C'est 292 octets (286 si vous utilisez plutôt alert)
la source
five and half third t
.Mathematica
251 238230 octetsCela présente maintenant la sortie au format d’une liste, ce qui permet d’économiser 8 octets supplémentaires.
la source
NumberExpand
est également utile pour décomposer un nombre (dans n'importe quelle base). `NumberExpand [943] -> {900,40,3}/// , 434 octets
Essayez-le en ligne!
la source
PHP,
397375372381386365 octetsC'était trop drôle pour être ignoré. Il peut éventuellement être joué au golf plus loin.
la source
PHP,
333328321 octetsL'expression de @ ETHproductions a été enregistrée en PHP et a été rejetée. Je suis surpris que PHP puisse battre JavaScript sans aucun élément intégré .
Je suppose que les plus puissants sont les typecasts implicites:
MAIS: j’ai besoin de
$
s (21 d’entre eux) pour dire à PHP qu’il s’agit d’une variable.Donc, on ne sait toujours pas d'où proviennent réellement les 15 octets. Je n’ai pas joué autant au golf. Ou ai-je? ETH a rattrapé.
la source
C (gcc) ,
445426452449444439 octetsEssayez-le en ligne!
192227 octets supprimés grâce à @ceilingcat, mais 26 octets ont été ajoutés à nouveau, 3 pour éviter une erreur de segmentation (o [] doit vraiment avoir 101 entrées), et après avoir vérifié les règles à nouveau, j'ai remarqué que nous devions imprimer tous les nombres. de 0 à 100, ne fournit pas seulement une fonction imprimant un chiffre.Ungolfed:
la source
Fourier, 7020 octets
Ceci est une version améliorée du programme Beta Decays.
la source
Haskell,
308291285 octetsVersion lisible:
Aussi 285
Cela ne sera peut-être pas très différent, mais cela représente des heures de factorisation qui m'ont finalement amené à boucler la boucle. Je pense avoir déjà fait cela auparavant ..
la source
format nil "~R"
qui convertit les nombres en leur représentation en texte anglaisPython 2,
359349345 octetsExplication:
Créez une liste des 9 premiers chiffres.
Créez une liste des 10 prochains numéros.
Créer une liste des fins -
twenty
,thirty
,forty
,half third times twenty
etc.Joindre les deux premières listes avec
zero
Append à la liste chacun des numéros à partir de 50 partir.
Imprimer la liste
Code non golfé:
la source
in
; déplacez-vousq
dans le seul endroit où il est utilisé; fairefor i in f+['one hundred']:print i
Python 2, avec num2words, 206 octets
Même avec num2words, cela prend pas mal d'octets!
Ceci est un programme complet.
Voici une version moquée sur ideone
(Par moquée, je veux dire que puisque l’interprète en ligne ne l’a pas été,
num2words
je l’ai remplacéew
par unelambda
qui regardenum2word
la sortie dans une liste)non golfé et avec le «quatrième» plutôt que le «en avant» autorisé (qui enregistre un octet):
Notez que le séparateur utilisé par
num2words(100)
est un espace, alors que pour les autres nombres, il s'agit d'un "-", nous n'avons donc pas besoin de faire de fantaisie pour ce cas, sauf d'empêcher qu'il soit "cinq fois vingt".De côté
Si le défi était de produire les nombres en danois, on pourrait utiliser le fichier lang_DK.py de la page github et utiliser:
pour 68 octets, donnant:
la source
Bash (en utilisant
rev
etsed
),299276 octetsJ'utilise l'accolade-accolade de bash. Cependant, les accolades sont développées dans le mauvais ordre. J'imprime donc tous les mots dans l'ordre inverse, puis je fixe l'ordre des lettres à l'aide de
rev
. Après cela, il me faut encore quelques ajustements avecsed
:Un peu moins illisible:
la source
JavaScript (ES6), 346 octets
Seule une petite idée de la solution d'ETHproductions: Remplacer
f(..)
para[..]
pour pouvoir appeler def
manière récursive pour concaténer la sortie.Encore loin de l'optimum ...
la source
Java
87,512490 + 19 (importation) octetsBesoin d'une importation
import java.util.*;
Ungolfed:
Pour exécuter ceci, appelez simplement
<instance>.x();
. Ceci retourne maintenant la liste contenant tous les nombres.Essayez-le ici!
la source
PHP, 318 octets
premier choix avec l'opérateur coalescent Null ?? les exceptions.
cette version avec 314 octets est sans le, à la fin
la source
05AB1E ,
127123120115 octetsEssayez-le en ligne!
la source
encre , 286 octets
Essayez-le en ligne!
Ink a des séquences - elles ressemblent
{a|b|c}
et évaluent à une valeur différente à chaque fois, jusqu'à ce qu'il n'y ait plus de valeur à partir de laquelle elles se collent à la dernière - c'est pourquoi{||teen}
continueteen
d'afficher après la sortie rien les deux premières fois où il l'a rencontré. En combinant et en imbriquant ceux-ci, nous pouvons être assez avancés avec très peu de conditions réelles.Une séquence qui commence par
{&
au lieu de juste{
est un cycle - ces boucles et c'est ainsi que nous comptons les unités et que nous alternons entre "une demi-nième fois vingt" et "n fois vingt" pour les dizaines.Nous gardons trace du nom des dizaines dans une variable
t
que nous ne mettons à jour que tous les dix passages dans la boucle. Sur les passes où nous mettons à jour la variable, nous imprimons uniquement la variable, sur d’autres passes, nous utilisons des cycles pour imprimer l’unité suivie deand {t}
.À quelques exceptions près - au-dessous de dix, nous omettons d’imprimer les dizaines (non
three and zero
) et les adolescents sont suffisamment irréguliers pour obtenir une séquence complète.c
est un rassemblement étiqueté. Les rassemblements ne font rien par eux-mêmes, mais ils peuvent être utilisés comme une forme de flux de contrôle, et ils gardent une trace du nombre de fois qu'ils ont été visités. nous devons mettre à jour la variable des dizaines et savoir quand arrêter de boucler, tout envelopper et en imprimer cent.Je sais que je pourrais sauvegarder un octet en utilisant "en avant" au lieu de "quatrième", mais je choisis de ne pas le faire.
Ungolfed
la source