Tujuan golf kode ini adalah untuk mengkonversi bilangan bulat menjadi kata-kata bahasa Inggris.
Program meminta input. Jika input ini bukan bilangan bulat, cetak NaN
. Jika bilangan bulat, konversikan ke kata-kata bahasa Inggris dan cetak kata-kata ini. Input minimum: 0 (nol). Input maksimum: 9000 (sembilan ribu).
Jadi, 5
return five
(case tidak masalah), dan 500
return five hundred
atau five-hundred
(strip tidak masalah).
Beberapa aturan lain:
A one
sebelum hundred
atau thousand
opsional: one hundred
benar, tetapi hundred
juga (jika inputnya 100
tentu saja).
Kata and
dalam misalnya one hundred and forty five
juga opsional.
Ruang putih penting. Jadi, untuk 500
, five-hundred
atau five hundred
benar, tetapi fivehundred
tidak.
Semoga berhasil!
Jawaban:
Perl 281 byte
Baris baru ditambahkan untuk kewarasan horisontal. Di atas dapat digunakan secara interaktif, atau dengan memberikan nilai melalui stdin.
Bekerja dengan benar untuk semua nilai integer pada rentang [0, 19999] , nilai di luar rentang ini menunjukkan perilaku yang tidak ditentukan. Nilai-nilai non-integer akan terpotong ke nol, dan dengan demikian, hanya nilai-nilai yang benar-benar non-numerik yang akan dilaporkan
NaN
.Penggunaan sampel:
Output sampel:
sumber
NaN
."JavaScript (375)
Mungkin upaya yang mengerikan, tapi toh, begini ...
Cukup dicetak (sebagai fungsi):
Konversi sampel (perhatikan bahwa output bahkan
NaN
keluar di luar batas, yaitu input yang tidak valid):sumber
+1
itu cukup sulit untuk dilakukan lebih baik dalam bahasa seperti javascript. (Anda dapat menghapus ruangN(s,z) {return
untuk menghemat 1 char)O
tali. Saya akan memperbaikinya ..Mathematica
6057Pemakaian:
Edit:
sumber
Lisp,
7256 karakterSaya menyadari 1) bahwa ini sudah tua, dan 2) bahwa ia sepenuhnya bergantung pada perpustakaan standar untuk berfungsi, tetapi kenyataan bahwa Anda dapat membuat sistem pencetakan c-lisp untuk melakukan hal semacam ini selalu membuat saya terkesan. Juga, ini sebenarnya mengambil input dari pengguna, mengubahnya, dan mencetaknya.
Totalnya 72 karakter.
:junk-allowed
menyebabkan parse-integer mengembalikan nol pada kegagalan alih-alih meningkatkan kesalahan.~:[if-nil~;if-non-nill]
bersyarat didasarkan pada nihil, menangani NaN bila perlu~:*
mendukung interpretasi argumen untuk mengkonsumsi kembali input~r
mencetak nomor sebagai string kata bahasa Inggris, seperti yang diminta, kecuali dengan tanda baca yang benarMencicipi:
Info Lisp terutama dari Practical Common Lisp .
Edit, golf dengan baik hingga 56 karakter
Versi ini bekerja agak berbeda. Alih-alih membaca baris dan mengonversinya, ia meminta pembaca lisp untuk menginterpretasikan input sebagai ekspresi-lisp, mencoba menggunakannya sebagai angka, dan jika ada kesalahan yang dihasilkan, mengabaikannya menghasilkan nihil untuk memberi makan string format bersyarat. Ini mungkin contoh pertama yang saya lihat tentang program pembuatan program yang benar-benar singkat ... Menyenangkan!
(read)
Meminta pembaca lisp / pengurai untuk membaca satu ekspresi dari input standar dan mengubahnya menjadi objek yang sesuai(floor)
mencoba mengubah tipe numerik apa pun menjadi bilangan bulat rendah terdekat, tipe non-numerik menyebabkannya menimbulkan kesalahan(ignore-errors ...)
melakukan apa yang tertulis di kaleng, menangkap dan mengabaikan kesalahan apa pun dalam ekspresi terlampir, mengembalikan nol untuk memberi makan cabang NaN dari string formatsumber
PHP,
327310308 bytemengambil angka sebagai parameter, berfungsi untuk 0 <= n <= 12999
kerusakan
sumber
SAS, 70 karakter
The
window
dandisplay
pernyataan membuka SAS command prompt. Input untukn
go on line 1. Ini mengambil keuntungan dari format SASwords.
yang akan mencetak angka sebagai kata atau serangkaian kata dengan "dan", "", dan "-" yang sesuai.sumber
PHP
777 karakter
Ini jelas merupakan upaya yang mengerikan, tetapi Anda tidak dapat menuduh saya memanfaatkan celah apa pun, ditambah lagi itu adalah angka yang sangat beruntung. Terima kasih kepada ProgramFOX untuk tipnya.
Tangan panjang
sumber
array('zero','one','two')
.['zero','one','two']
(php 5.4+). Dan jika Anda tidak keberatanE_NOTICE
,[zero,one,two]
akan berhasil juga.Python 2.x - 378
Derivatif jawaban Fireflys, meskipun dengan mengubah
P
untuk memasukkan jutaan atau triliunan, dll. Dapat secara rekursif digunakan untuk berbagai angka positif. Ini juga mendukung nilai hingga 999.999Uji sampel (input adalah
<<<
, output>>>
):Meskipun, jika seseorang dapat menjelaskan masalah "buffer underflow" aneh yang saya miliki, itu akan membengkak ...
sumber
print divmod(-2,1000) #-> (-1, 998)
-1*1000
dan "sisa" dari998
.SmileBASIC,
365Tiga Ratus Empat Puluh Tujuh byteAda spasi tambahan jika satu atau dua digit terakhir adalah 0.
sumber
MOO - 55 karakter
player:tell($string_utils:english_number(read(player)))
Atau, jika saya tidak perlu mencetak ke "stdout" - 42 karakter:
$string_utils:english_number(read(player))
Catatan: kode ini tidak mencetak prompt apa pun ke output standar dan mencetak
zero
bukannyaNaN
saat input bukan angka.Sebagai bonus, kode ini dapat menangani nomor apa pun dalam batasan bahasa moo (
2147483647
--2147483648
).sumber
Bahasa Wolfram
2740 byteMemanfaatkan fungsi asli
IntegerName
,,Di atas meminta input pengguna. Implementasi saat ini mengembalikan "NaN" jika pengguna memasukkan apa pun selain bilangan bulat.
Beberapa contoh (dengan input yang telah ditetapkan sebelumnya) :
sumber
Python 2 , 333 byte
Cobalah online!
Ini bagus untuk 1 hingga 999.999, inklusif.
sumber
Pyth,
239242 byteInput adalah bilangan bulat dalam rentang [0-999.999]. Cobalah online di sini . Penjelasan tertunda.
Versi sebelumnya, operasi yang sangat mirip, tetapi tidak mendukung 0:
Penjelasan dari versi sebelumnya:
sumber