Cetak semua angka dari 0-100 dalam urutan yang benar menggunakan cara berhitung Denmark
Bagaimana mereka menghitung
- Seperti bahasa Inggris, mereka memiliki kata-kata khusus untuk 0-20, 30, 40 dan 100
- Alih-alih mengatakan
twenty-one
dantwenty-two
, mereka mengatakanone and twenty
dantwo and twenty
Dimulai dengan lima puluh mereka mengatakan kelipatan 10 sebagai 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
Jadi misalnya, 55 akan
five and half third times twenty
.
Output yang diharapkan
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
Aturan
- Anda dapat menggunakan pemisah apa pun untuk memisahkan angka
- Karena kesalahan ketik pada spesifikasi asli, Anda dapat menggunakannya
forth
sebagai gantifourth
. - Anda dapat menulis fungsi atau menulis ke std-out
- Celah standar berlaku
- Ini adalah codegolf; kode terpendek dalam byte menang!
Jawaban:
JavaScript (ES6),
347336326325308 byteSebelum berjalan, ganti
...
dengan hasil menjalankan kode ini:Atau Anda bisa menggunakan versi yang tidak dikompresi:
Mungkin masih belum optimal. 11 byte disimpan sebagian oleh @Titus.
sumber
(x%20>9?"half ":"")+[third,forth,fifth][x/20-2.5|0]
alih-alih(x%20>9?"half "+[third,forth,fifth][x/20-2.5|0]:f(x/20|0))
third times twenty
bukannyathree times twenty
)Fourier , 7028 byte
Karunia akan diberikan untuk jawaban Paul Schmitz
Ini diprogram secara golf menggunakan program golf issacg
Cobalah online!
sumber
JavaScript (ES6), tidak bersaing
Saya memutuskan untuk melakukan apa yang sebenarnya diminta judulnya, dan menghitung hingga 100 psk dansk. Ini berdasarkan jawaban ETHproductions . Ini adalah 292 byte (286 jika Anda menggunakan lansiran)
sumber
five and half third t
.Mathematica
251 238230 byteIni sekarang menyajikan output dalam format daftar, untuk menyimpan 8 byte lebih banyak.
sumber
NumberExpand
juga berguna untuk mendekomposisi angka (dalam basis apa pun). `NumberExpand [943] -> {900,40,3}/// , 434 byte
Cobalah online!
sumber
PHP,
397375372381386365 byteIni terlalu lucu untuk diabaikan. Mungkin bisa bermain golf lebih lanjut.
sumber
PHP,
333328321 byteEkspresi @ ETHproductions porting ke PHP dan turun golf. Saya terkejut bahwa PHP dapat mengalahkan JavaScript tanpa builtin .
Saya kira builtin terkuat adalah typecasts implisit:
TAPI: Saya perlu
$
s (21 di antaranya) untuk memberi tahu PHP bahwa itu adalah variabel.Jadi masih belum jelas dari mana 15 byte sebenarnya berasal. Saya tidak bermain golf sebanyak itu. Atau apakah saya? ETH menyusul.
sumber
C (gcc) ,
445426452449444439 byteCobalah online!
192227 byte berkurang berkat @ceilingcat, tetapi 26 byte ditambahkan lagi, 3 untuk mencegah segfault (o [] benar-benar harus memiliki 101 entri), dan setelah memeriksa aturan lagi, saya perhatikan kami harus mencetak semua angka dari 0 hingga 100, tidak hanya menyediakan fungsi yang mencetak satu angka.Tidak Disatukan:
sumber
Fourier, 7020 byte
Ini adalah versi perbaikan dari program Peluruhan Beta.
sumber
Haskell,
308291285 bytesVersi yang dapat dibaca:
Juga 285
Itu mungkin tidak terlihat jauh berbeda, tetapi itu merupakan jam faktorisasi yang akhirnya membawa saya pada lingkaran penuh. Saya pikir saya telah melakukan ini sebelumnya ..
sumber
format nil "~R"
angka yang dikonversi ke representasi teks bahasa InggrisPython 2,
359349345 BytesPenjelasan:
Buat daftar 9 angka pertama.
Buat daftar 10 angka berikutnya.
Buat daftar akhiran -
twenty
,thirty
,forty
,half third times twenty
dllBergabung dengan dua daftar pertama dengan
zero
Append ke dalam daftar masing-masing dari nomor dari 50 dan seterusnya.
Cetak daftar
Kode tidak dikunci:
sumber
in
; pindahq
ke satu-satunya tempat itu digunakan; dofor i in f+['one hundred']:print i
Python 2, dengan num2words, 206 byte
Bahkan dengan num2words dibutuhkan beberapa byte!
Ini adalah program lengkap.
Berikut ini adalah versi mengejek pada ideone
(By mocked maksud saya karena penerjemah online tidak
num2words
saya gantiw
denganlambda
yang mencarinum2word
keluaran dalam daftar)ungolfed dan dengan 'keempat' daripada diizinkan 'sebagainya' (yang menghemat satu byte):
Perhatikan bahwa pemisah yang digunakan oleh
num2words(100)
adalah spasi, sedangkan untuk angka lainnya itu adalah "-", jadi kita tidak perlu melakukan sesuatu yang mewah untuk kasing itu selain menghentikannya menjadi "lima kali dua puluh".Ke samping
Jika tantangannya adalah untuk benar-benar menghasilkan angka dalam bahasa Denmark, seseorang dapat mengambil lang_DK.py dari halaman github dan menggunakan:
untuk 68 byte, menghasilkan:
sumber
Bash (menggunakan
rev
dansed
),299276 byteSaya menggunakan kawat gigi keriting bash-ekspansi. Namun kawat gigi diperluas dalam urutan yang salah, jadi saya mencetak semua kata dalam urutan terbalik dan kemudian memperbaiki urutan huruf menggunakan
rev
. Setelah itu, saya masih perlu beberapa penyesuaian menggunakansed
:Sedikit kurang terbaca:
sumber
JavaScript (ES6), 346 byte
Hanya ide kecil untuk solusi ETHproductions: Ganti
f(..)
dengana[..]
untuk dapat memanggilf
secara rekursif untuk menggabungkan output.Masih jauh dari optimal ...
sumber
Java
87,512490 + 19 (impor) bytePerlu impor
import java.util.*;
Tidak Disatukan:
Untuk menjalankan ini, cukup panggil
<instance>.x();
. Ini sekarang mengembalikan daftar yang berisi semua angka.Coba di sini!
sumber
PHP, 318 Bytes
pick pertama dengan operator penggabungan Null ?? pengecualian.
versi ini dengan 314 Bytes tanpa, pada akhirnya
sumber
05AB1E ,
127123120115 byteCobalah online!
sumber
tinta , 286 byte
Cobalah online!
Tinta memiliki urutan - mereka terlihat seperti
{a|b|c}
dan mengevaluasi ke nilai yang berbeda setiap kali, sampai tidak ada nilai berikutnya pada titik mana mereka tetap dengan yang terakhir - itu sebabnya{||teen}
terus mengeluarkanteen
setelah keluaran apa-apa dua kali pertama itu ditemui. Dengan menggabungkan dan menyarangkan ini, kita bisa menjadi sangat maju dengan sangat sedikit dalam kondisi yang sebenarnya.Urutan yang dimulai dengan
{&
bukan hanya{
siklus - lingkaran itu dan itulah cara kita menghitung satuan dan bagaimana kita bergantian antara "setengah kali ke dua puluh" dan "n kali dua puluh" untuk puluhan.Kami melacak nama untuk puluhan dalam variabel
t
yang hanya kami perbarui setiap kesepuluh melewati loop. Pada lintasan tempat kami memperbarui variabel, kami hanya mencetak variabel, pada lintasan lain kami menggunakan siklus untuk mencetak unit diikuti olehand {t}
.Dengan beberapa pengecualian - di bawah sepuluh kami lewati mencetak puluhan (tidak
three and zero
) dan remaja cukup tidak teratur sehingga mereka mendapatkan urutan semua untuk diri mereka sendiri.c
adalah kumpulan berlabel. Mengumpulkan sendiri tidak melakukan apa-apa, tetapi mereka dapat dialihkan ke sebagai bentuk aliran kontrol, dan mereka melacak berapa kali mereka telah dikunjungi - kami menggunakan readcount ini untuk kasus khusus para remaja, untuk mengetahui kapan kita perlu memperbarui variabel puluhan, dan untuk mengetahui kapan harus berhenti mengulang, bungkus semuanya dan cetak seratus.Saya tahu saya bisa menyimpan byte dengan menggunakan "sebagainya" daripada "keempat", tapi saya memilih untuk tidak melakukannya.
Tidak disatukan
sumber