Wydrukuj wszystkie liczby od 0-100 we właściwej kolejności, używając duńskiego sposobu liczenia
Jak się liczą
- Podobnie jak angielski, mają dedykowane słowa dla 0-20, 30, 40 i 100
- Zamiast mówić
twenty-one
itwenty-two
, mówiąone and twenty
itwo and twenty
Począwszy od pięćdziesięciu mówią wielokrotności 10 jako 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
Na przykład 55 byłoby
five and half third times twenty
.
Oczekiwany wynik
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
Zasady
- Możesz użyć dowolnego separatora, aby oddzielić liczby
- Ze względu na literówkę w oryginalnej specyfikacji możesz użyć
forth
zamiastfourth
. - Możesz napisać funkcję lub napisać do standardowego wyjścia
- Obowiązują standardowe luki
- To jest codegolf; najkrótszy kod w bajtach wygrywa!
Odpowiedzi:
JavaScript (ES6),
347336326325308 bajtówPrzed uruchomieniem zamień
...
na wynik działania tego kodu:Lub możesz po prostu użyć nieskompresowanej wersji:
Nadal prawdopodobnie nie jest optymalny. 11 bajtów zapisanych częściowo przez @Titus.
źródło
(x%20>9?"half ":"")+[third,forth,fifth][x/20-2.5|0]
zamiast(x%20>9?"half "+[third,forth,fifth][x/20-2.5|0]:f(x/20|0))
third times twenty
Zamiastthree times twenty
)Fourier , 7028 bajtów
Nagroda trafi do odpowiedzi Paula Schmitza
Zostało to golfed programowo za pomocą issacg w programie golfa
Wypróbuj online!
źródło
JavaScript (ES6), nie konkuruje
Postanowiłem zrobić to, o co właściwie prosił tytuł, i policzyłem do 100 på dansk. Jest to oparte na odpowiedzi ETHproductions . Ma on 292 bajty (286, jeśli zamiast tego użyjesz alertu)
źródło
five and half third t
.Mathematica
251 238230 bajtówTeraz wyświetla dane wyjściowe w formacie listy, aby zaoszczędzić jeszcze 8 bajtów.
źródło
NumberExpand
jest również przydatny do dekompozycji liczby (w dowolnej bazie). `NumberExpand [943] -> {900,40,3}/// , 434 bajty
Wypróbuj online!
źródło
PHP,
397375372381386365 bajtówTo było zbyt śmieszne, aby je zignorować. Można ewentualnie zagrać w golfa dalej.
źródło
PHP,
333328321 bajtówWyrażenie @ ETHproductions przeniesione do PHP i grało w golfa. Dziwi mnie, że PHP może pokonać JavaScript bez żadnych wbudowanych funkcji .
Myślę, że najpotężniejsze wbudowane są niejawne typecasty:
ALE: Potrzebuję
$
s (21 z nich), aby powiedzieć PHP, że jest zmienna.Więc nadal nie jest jasne, skąd pochodzi 15 bajtów. Tak bardzo nie grałem w golfa. A może ja? ETH nadrobił zaległości.
źródło
C (gcc) ,
445426452449444439 bajtówWypróbuj online!
192227 bajtów wygolonych dzięki @ceilingcat, ale 26 bajtów zostało dodanych ponownie, 3, aby zapobiec segfaultowi (o [] naprawdę musi mieć 101 wpisów), a po ponownym sprawdzeniu reguł zauważyłem, że musimy wydrukować wszystkie liczby od 0 do 100, nie tylko zapewniają funkcję, która drukuje jeden numer.Nie golfowany:
źródło
Fourier, 7020 bajtów
To ulepszona wersja programu Beta Decays.
źródło
Haskell,
308291285 bajtówWersja do odczytu:
Również 285
Może nie wygląda to inaczej, ale reprezentuje godziny faktoryzacji, które ostatecznie zatoczyły koło. Myślę, że zrobiłem to wcześniej ...
źródło
format nil "~R"
który konwertuje liczby na ich tekst w języku angielskimPython 2,
359349345 bajtówWyjaśnienie:
Utwórz listę pierwszych 9 liczb.
Utwórz listę następnych 10 liczb.
Tworzenie listy zakończeń -
twenty
,thirty
,forty
,half third times twenty
itpDołącz pierwsze dwa listy z
zero
dopisywanie do listy każdego z numerów od 50 roku.
Wydrukuj listę
Nieskluczony kod:
źródło
in
; przenieśćq
się do jedynego miejsca, w którym jest używany; dofor i in f+['one hundred']:print i
Python 2, z num2words, 206 bajtów
Nawet z num2words zajmuje sporo bajtów!
To jest pełny program.
Oto wyśmiewana wersja ideone
(Przez wyśmiewane mam na myśli to, że ponieważ tłumacz online nie ma
num2words
, zastąpiłemw
golambda
wyglądającymnum2word
„s wyjście na liście)bez golfa i „czwartym” niż dozwolonym „czwartym” (co oszczędza bajt):
Zauważ, że separator używany przez
num2words(100)
spację jest spacja, podczas gdy dla innych liczb jest to „-”, więc nie musimy robić nic szczególnego w tym przypadku poza powstrzymaniem go przed „pięciokrotnością dwadzieścia”.Na bok
Jeśli wyzwaniem byłoby wygenerowanie liczb w języku duńskim, można pobrać plik lang_DK.py ze strony github i użyć:
dla 68 bajtów, co daje:
źródło
Bash (używając
rev
ised
),299276 bajtówUżywam nawiasów klamrowych bash. Jednak nawiasy klamrowe są rozszerzone w niewłaściwej kolejności, więc drukuję wszystkie słowa w odwróconej kolejności, a następnie ustalam kolejność liter za pomocą
rev
. Po tym nadal potrzebuję korekt, używającsed
:Trochę mniej nieczytelne:
źródło
JavaScript (ES6), 346 bajtów
Tylko niewielka pomysł na rozwiązanie ETHproductions': Wymień
f(..)
sięa[..]
, aby móc nazwaćf
rekurencyjnie do Concat wyjście.Nadal daleko od optymalnego ...
źródło
Java
87,512490 + 19 (import) bajtówWymaga importu
import java.util.*;
Nie golfowany:
Aby uruchomić, po prostu zadzwoń
<instance>.x();
. Zwraca teraz listę zawierającą wszystkie liczby.Wypróbuj tutaj!
źródło
PHP, 318 bajtów
pierwszy wybór z operatorem koalescencji Null? wyjątki.
ta wersja z 314 bajtami nie ma na końcu
źródło
05AB1E ,
127123120115 bajtówWypróbuj online!
źródło
atrament , 286 bajtów
Wypróbuj online!
Atrament ma sekwencje - za każdym razem wyglądają
{a|b|c}
i oceniają inną wartość, dopóki nie będzie następnej wartości, w której trzymają się ostatniej - dlatego{||teen}
wciąż wyświetla wynikiteen
po tym, jak nic nie wypuszcza za pierwszym razem dwa razy. Łącząc i zagnieżdżając je, możemy uzyskać bardzo zaawansowane wyniki, przy bardzo niewielkiej ilości rzeczywistych warunków.Sekwencja, która zaczyna się od
{&
zamiast po prostu,{
jest cyklem - te pętle i tak liczymy jednostki i jak na przemian „dziesiątej razy dwadzieścia” i „n razy dwadzieścia” dla dziesiątek.Śledzimy nazwę dziesiątek w zmiennej,
t
którą aktualizujemy tylko co dziesiąte przejście przez pętlę. W przebiegach, w których aktualizujemy zmienną, drukujemy tylko zmienną, w innych przebiegach używamy cykli do drukowania jednostki, a następnieand {t}
.Z kilkoma wyjątkami - poniżej dziesiątej pomijamy drukowanie dziesiątek (nie
three and zero
), a nastolatki są na tyle nieregularne, że otrzymują sekwencję dla siebie.c
jest oznaczonym zbiorem. Zebrania same w sobie nic nie robią, ale można je przekierować jako formę kontroli i śledzą, ile razy były odwiedzane - używamy tego odczytu do specjalnego przypadku nastolatków, aby wiedzieć, kiedy musimy zaktualizować zmienną tens i wiedzieć, kiedy przestać zapętlać, wszystko zawinąć i wydrukować sto.Wiem, że mogę uratować bajt, używając „czwartego” zamiast „czwartego”, ale decyduję się tego nie robić.
Bez golfa
źródło