Drucken Sie alle Zahlen von 0-100 in der richtigen Reihenfolge nach dänischer Zählweise aus
Wie sie zählen
- Wie Englisch haben sie Wörter für 0-20, 30, 40 und 100 gewidmet
- Anstatt
twenty-one
und zutwenty-two
sagen, sagen sieone and twenty
undtwo and twenty
Beginnend mit fünfzig sagen sie ein Vielfaches von 10 als 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
So wäre zum Beispiel 55
five and half third times twenty
.
Erwartete Ausgabe
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
Regeln
- Sie können ein beliebiges Trennzeichen verwenden, um die Zahlen zu trennen
- Aufgrund eines Tippfehlers in der ursprünglichen Spezifikation können Sie
forth
anstelle von verwendenfourth
. - Sie können eine Funktion schreiben oder nach std-out schreiben
- Es gelten Standardlücken
- Das ist Codegolf; kürzester Code in Bytes gewinnen!
Antworten:
JavaScript (ES6),
347336326325308 ByteErsetzen Sie vor der
...
Ausführung den folgenden Code durch das Ergebnis der Ausführung:Oder Sie können einfach die unkomprimierte Version verwenden:
Immer noch wahrscheinlich nicht optimal. 11 Bytes zum Teil von @Titus gespeichert.
quelle
(x%20>9?"half ":"")+[third,forth,fifth][x/20-2.5|0]
statt(x%20>9?"half "+[third,forth,fifth][x/20-2.5|0]:f(x/20|0))
third times twenty
stattthree times twenty
)Fourier , 7028 Bytes
Das Kopfgeld geht an Paul Schmitz 'Antwort
Dies wurde golfed programmatisch issacg die mit Golf - Programm
Probieren Sie es online!
quelle
JavaScript (ES6), nicht konkurrierend
Ich entschloss mich zu tun, was der Titel eigentlich verlangte, und zählte bis 100 på dansk. Dies basiert auf der Antwort von ETHproductions . Es sind 292 Bytes (286, wenn Sie stattdessen alert verwenden)
quelle
five and half third t
.Mathematica
251 238230 BytesDadurch wird die Ausgabe jetzt im Format einer Liste angezeigt, um 8 weitere Bytes zu sparen.
quelle
NumberExpand
ist auch nützlich zum Zerlegen einer Zahl (in einer beliebigen Basis). `NumberExpand [943] -> {900,40,3}/// 434 Bytes
Probieren Sie es online!
quelle
PHP,
397375372381386365 BytesDas war zu lustig, um ignoriert zu werden. Es kann möglicherweise weiter golfen werden.
quelle
PHP,
333328321 Bytes@ ETHproductions 'Ausdruck wurde auf PHP portiert und abgespielt. Ich bin überrascht, dass PHP JavaScript ohne eingebaute Funktionen schlagen kann .
Ich denke, die mächtigsten Buildins sind die impliziten Typecasts:
ABER: Ich brauche
$
s (21 von ihnen), um PHP mitzuteilen, dass es eine Variable ist.Es ist also noch unklar, wo die 15 Bytes eigentlich herkommen. Ich habe nicht so viel Golf gespielt. Oder habe ich? Die ETH hat aufgeholt.
quelle
C (gcc) ,
445426452449444439 BytesProbieren Sie es online!
192227 Bytes wurden dank @ceilingcat abgeschnitten, aber 26 Bytes wurden erneut hinzugefügt, 3 um einen Segfault zu verhindern (o [] muss wirklich 101 Einträge haben), und als ich die Regeln erneut überprüfte, bemerkte ich, dass wir alle Zahlen ausdrucken mussten von 0 bis 100, nicht nur eine Funktion, die eine Zahl gedruckt.Ungolfed:
quelle
Fourier, 7020 Bytes
Dies ist eine verbesserte Version des Beta Decays-Programms.
quelle
Haskell,
308291285 BytesLesbare Version:
Auch 285
Es sieht vielleicht nicht viel anders aus, aber es repräsentiert Stunden der Faktorisierung, die mich schließlich dazu gebracht haben, den Kreis zu schließen. Ich glaube ich habe das schon mal gemacht ..
quelle
format nil "~R"
das Zahlen in ihre englische Textdarstellung konvertiertPython 2,
359349345 BytesErläuterung:
Erstellen Sie eine Liste der ersten 9 Zahlen.
Erstellen Sie eine Liste der nächsten 10 Zahlen.
Erstellen Sie eine Liste der Endungen -
twenty
,thirty
,forty
,half third times twenty
usw.Verbinden Sie die ersten beiden Listen mit
zero
Anhängen in die Liste jede der Zahlen von 50 ab.
Liste ausdrucken
Ungolfed-Code:
quelle
in
; bewegeq
dich an den einzigen Ort, an dem es benutzt wird; tunfor i in f+['one hundred']:print i
Python 2 mit num2words, 206 Bytes
Sogar mit num2words dauert es einige Bytes!
Dies ist ein volles Programm.
Hier ist eine verspottet Version auf ideone
(By verspottete meine ich , dass da das Online - Interpreter nicht hat
num2words
ich ersetztw
mit ein ,lambda
der nachschlägtnum2word
‚s in einer Liste ausgegeben)ungolfed und mit 'four' anstatt dem erlaubten 'forth' (was ein Byte spart):
Beachten Sie, dass das von verwendete Trennzeichen
num2words(100)
ein Leerzeichen ist, während es für die anderen Zahlen ein "-" ist, sodass wir für diesen Fall nichts Besonderes tun müssen, als zu verhindern, dass es "fünf mal zwanzig" ist.Beiseite
Wenn die Herausforderung darin bestünde, die Zahlen tatsächlich auf Dänisch zu produzieren, könnte man die Datei lang_DK.py von der Github-Seite nehmen und Folgendes verwenden:
für 68 Bytes ergibt sich:
quelle
Bash (mit
rev
undsed
),299276 BytesIch verwende die geschweifte Klammer-Erweiterung von Bash. Die geschweiften Klammern werden jedoch in der falschen Reihenfolge erweitert, sodass ich alle Wörter in umgekehrter Reihenfolge drucke und dann die Reihenfolge der Buchstaben mit festlege
rev
. Danach muss ich noch einige Anpassungen vornehmensed
:Ein bisschen weniger unleserlich:
quelle
JavaScript (ES6), 346 Byte
Nur eine kleine Idee zur Lösung von ETHproductions: Ersetzen Sie
f(..)
durcha[..]
, umf
rekursiv aufrufen zu können, um die Ausgabe zu verketten.Noch weit weg vom Optimum ...
quelle
Java
87,512490 + 19 (Import) BytesBenötigt einen Import
import java.util.*;
Ungolfed:
Um dies auszuführen, rufen Sie einfach an
<instance>.x();
. Dies gibt nun die Liste mit allen Nummern zurück.Probieren Sie es hier aus!
quelle
PHP, 318 Bytes
erste Wahl mit dem Null-Koaleszenz-Operator? die Ausnahmen.
Diese Version mit 314 Bytes ist ohne, am Ende
quelle
05AB1E ,
127123120115 BytesProbieren Sie es online!
quelle
Tinte , 286 Bytes
Probieren Sie es online!
Ink hat Sequenzen - sie aussehen
{a|b|c}
und zu bewerten , um einen anderen Wert jedes Mal, bis es keinen nächsten Wert , bei dem sie mit dem letzten Klebepunkt - das ist , warum{||teen}
hält ausgibt ,teen
nachdem er die Ausgabe nichts , um die ersten beiden Male es begegnet. Indem wir diese kombinieren und verschachteln, können wir mit sehr wenig tatsächlichen Bedingungen ziemlich weiterkommen.Eine Sequenz, die mit
{&
statt nur mit beginnt,{
ist ein Zyklus - diese Schleife, und so zählen wir Einheiten und wechseln zwischen "halb n mal zwanzig" und "n mal zwanzig" für die Zehn.Wir verfolgen den Namen der Zehner in einer Variablen,
t
die wir nur bei jedem zehnten Durchgang durch die Schleife aktualisieren. In den Durchläufen, in denen wir die Variable aktualisieren, drucken wir nur die Variable, in den anderen Durchläufen verwenden wir Zyklen, um die Einheit zu drucken, gefolgt vonand {t}
.Mit einer Handvoll Ausnahmen - unter zehn überspringen wir das Drucken der Zehner (Nein
three and zero
) und die Teenager sind unregelmäßig genug, dass sie eine Sequenz für sich selbst erhalten.c
ist eine etikettierte Versammlung. Versammlungen alleine tun nichts, aber sie können als Kontrollfluss umgeleitet werden, und sie verfolgen, wie oft sie besucht wurden - wir verwenden diese Anzahl, um den Teenagern einen Sonderfall zu geben, um zu wissen, wann Wir müssen die Zehnervariable aktualisieren und wissen, wann wir die Schleife beenden, alles einpacken und hundert drucken müssen.Ich weiß, dass ich ein Byte speichern könnte, indem ich "viert" anstelle von "viert" verwende, aber ich entscheide mich dagegen.
Ungolfed
quelle