Deskripsi tantangan yang singkat dan manis:
Berdasarkan ide dari beberapa pertanyaan lain di situs ini, tantangan Anda adalah menulis kode paling kreatif dalam program apa pun yang mengambil input angka yang ditulis dalam bahasa Inggris dan mengubahnya menjadi bentuk integer.
Spesifikasi benar-benar kering, panjang dan menyeluruh:
- Program Anda akan menerima input bilangan bulat dalam bahasa Inggris kecil antara
zero
dannine hundred ninety-nine thousand nine hundred ninety-nine
inklusif. - Ini harus menampilkan hanya bentuk bilangan bulat antara
0
dan999999
dan tidak ada yang lain (tanpa spasi). - Input TIDAK akan berisi
,
atauand
, seperti padaone thousand, two hundred
ataufive hundred and thirty-two
. - Ketika puluhan dan satu tempat sama-sama bukan nol dan puluhan tempat lebih besar dari
1
, mereka akan dipisahkan oleh karakter HYPHEN-MINUS-
bukannya spasi. Ditto untuk sepuluh ribu dan ribuan tempat. Sebagai contohsix hundred fifty-four thousand three hundred twenty-one
,. - Program mungkin memiliki perilaku yang tidak ditentukan untuk input lainnya.
Beberapa contoh program yang berperilaku baik:
zero
-> 0
fifteen
-> 15
ninety
-> 90
seven hundred four
-> 704
sixty-nine thousand four hundred eleven
-> 69411
five hundred twenty thousand two
->520002
popularity-contest
Abraham
sumber
sumber
Jawaban:
Applescript
Mash-up konyol dan konyol yang mungkin membuat marah beberapa orang Cupertino / Mountain View, tapi saya pikir ini kreatif, konyol mash-up.
Menggunakan teks OSX untuk berbicara untuk mengucapkan nomor teks, dan pencarian audio google untuk mendengarkannya dan mengubahnya menjadi bilangan bulat.
Persyaratan
Timing waktu mungkin perlu disesuaikan tergantung pada waktu buka krom Anda dan waktu pencarian google.
Input contoh:
Contoh output:
sumber
Bash,
936455 karakter *Dalam
bsd-games
paket fantastis yang tersedia di sebagian besar sistem operasi Linux, ada mainan command-line kecil bernamanumber
. Itu mengubah angka menjadi teks bahasa Inggris, yaitu, ia melakukan kebalikan dari pertanyaan ini. Ini benar-benar kebalikannya: semua aturan dalam pertanyaan diikuti olehnumber
. Hampir terlalu bagus untuk menjadi kebetulan.Tentu saja,
number
tidak menjawab pertanyaan itu. Kami ingin sebaliknya. Saya memikirkan hal ini sebentar, mencoba string parsing dan semua itu, kemudian menyadari bahwa saya bisa memanggilnumber
semua nomor 999.999 dan melihat apakah ada sesuatu yang cocok dengan input. Jika demikian, baris pertama yang cocok memiliki dua kali jumlah baris yang saya cari (number
mencetak garis titik setelah setiap angka). Sederhana seperti itu. Jadi, tanpa basa-basi lagi, inilah kode lengkap untuk entri saya:Bahkan sirkuit pendek, sehingga mengkonversi "dua" cukup cepat, dan bahkan angka yang lebih tinggi biasanya diterjemahkan dalam waktu kurang dari satu detik di kotak saya. Berikut ini contoh yang dijalankan:
Tentu saja, Anda harus sudah
number
menginstal agar ini berfungsi.*: Ya, saya tahu, ini bukan
code-golf
tantangan, tapi kekurangannya adalah satu-satunya kualitas dari entri saya, jadi ... :)sumber
number
secara terbalik adalah hal paling kreatif tentang jawaban ini. Golfinessnya juga bagus :)Javascript
Apakah kamu menyukai beberapa
eval()
?Jalankan skrip ini di konsol browser Anda.
Sunting: Terima kasih atas umpan baliknya. Bug diperbaiki (lagi).
sumber
twelve
saat kembali23
."twenty"
.seven thousand three hundred thirty five
beri aku10335
Python
Hanya untuk membuat bola bergulir.
sumber
Perl + CPAN
Mengapa menemukan kembali roda, ketika sudah dilakukan?
Program ini membaca string bahasa Inggris dari input standar (atau dari satu atau lebih file yang ditentukan sebagai argumen baris perintah), satu per baris, dan mencetak angka yang sesuai ke output standar.
Saya telah menguji kode ini menggunakan input sampel dari tantangan, dan juga paket uji lengkap yang terdiri dari angka 0 hingga 999999 yang dikonversi ke teks menggunakan
number
utilitas bsd-games (terima kasih, Mengembara Nauta!), Dan kode ini mengurai dengan benar mereka semua. Sebagai bonus, ia juga memahami input seperti misalnyaminus seven
(−7),four and twenty
(24),four score and seven
(87),one gross
(144),a baker's dozen
(13),eleventy-one
(111) dangoogol
(10 100 ).( Catatan: Selain interpreter Perl itu sendiri, program ini juga memerlukan modul CPAN Lingua :: EN :: Words2Nums . Berikut adalah beberapa instruksi untuk menginstal modul CPAN . Pengguna Debian / Ubuntu Linux juga dapat menginstal modul ini melalui manajer paket APT sebagai liblingua-en-words2nums-perl .)
sumber
Python
Solusi rekursif umum, dengan pemeriksaan validitas. Bisa disederhanakan untuk rentang angka yang diperlukan, tapi di sini untuk pamer, saya kira:
sumber
VBScript 474
Ini adalah jawaban yang cukup rutin ... sayangnya, sangat rutin sehingga @Snack cukup banyak memposting proses yang sama tetapi sebelum saya.
sumber
Haskell
Mirip dengan solusi rekursif lainnya, saya rasa, tetapi saya mengambil waktu untuk membuatnya bersih.
Berikut adalah sumber lengkap dengan semua penjelasan: http://ideone.com/fc8zcB
sumber
Common Lisp, 94
Konversi angka ke teks dibangun untuk CL, tetapi tidak sebaliknya. Buat pemetaan terbalik untuk angka-angka dan periksa input di atasnya.
sumber