Saya tidak memeriksa kotak pasir sebelum memposting tantangan ini - sepertinya tantangan ini diusulkan oleh Cᴏɴᴏʀ O'Bʀɪᴇɴ .
Diberikan input integer, tulis sebuah program yang mencetak teka-teki "four is a magic number"
- Empat adalah angka ajaib
- Lima adalah empat dan empat adalah angka ajaib
- Enam adalah tiga dan tiga adalah lima dan lima adalah empat dan empat adalah angka ajaib
- Sebelas enam dan enam tiga dan tiga lima dan lima empat dan empat adalah angka ajaib
- Five Hundred adalah sebelas dan sebelas adalah enam dan enam adalah tiga dan tiga adalah lima dan lima adalah empat dan empat adalah angka ajaib
Jika Anda sudah tahu teka-teki itu, atau terlalu malas untuk menyelesaikannya dengan cemas untuk mencari tahu apa teka-teki itu, inilah penjelasannya
Nomor berikutnya adalah jumlah huruf di nomor sebelumnya. Jadi, misalnya, lima memiliki empat huruf, jadi angka berikutnya adalah empat .
enam memiliki tiga huruf, jadi angka berikutnya adalah 3 , dan tiga memiliki lima huruf, jadi angka berikutnya adalah 5 , dan lima memiliki empat huruf, jadi angka berikutnya adalah 4.
Alasan teka-teki berakhir pada empat adalah karena empat memiliki empat huruf , dan empat adalah empat dan empat adalah empat dan empat adalah empat ... (empat adalah angka ajaib)
Uji Kasus
0 =>
Zero is four and four is the magic number
1 =>
One is three and three is five and five is four and four is the magic number
2 =>
Two is three and three is five and five is four and four is the magic number
3 =>
Three is five and five is four and four is the magic number
4 =>
Four is the magic number
5 =>
Five is four and four is the magic number
6 =>
Six is three and three is five and five is four and four is the magic number
7 =>
Seven is five and five is four and four is the magic number
8 =>
Eight is five and five is four and four is the magic number
9 =>
Nine is four and four is the magic number
10 =>
Ten is three and three is five and five is four and four is the magic number
17 =>
Seventeen is nine and nine is four and four is the magic number
100 =>
One Hundred is ten and ten is three and three is five and five is four and four is the magic number
142 =>
One Hundred Forty Two is eighteen and eighteen is eight and eight is five and five is four and four is the magic number
1,000 =>
One Thousand is eleven and eleven is six and six is three and three is five and five is four and four is the magic number
1,642 =>
One Thousand Six Hundred Forty Two is twenty nine and twenty nine is ten and ten is three and three is five and five is four and four is the magic number
70,000 =>
Seventy Thousand is fifteen and fifteen is seven and seven is five and five is four and four is the magic number
131,072 =>
One Hundred Thirty One Thousand Seventy Two is thirty seven and thirty seven is eleven and eleven is six and six is three and three is five and five is four and four is the magic number
999,999 =>
Nine Hundred Ninety Nine Thousand Nine Hundred Ninety Nine is fifty and fifty is five and five is four and four is the magic number
Aturan
- Input dapat diambil dari
STDIN
atau sebagai argumen ke suatu fungsi - Masukan akan berupa angka positif antara 0 dan 999.999
- Input hanya akan berisi angka (akan mengikuti regex
^[0-9]+$
) - Input dapat diambil sebagai integer atau string
- Ketika dikonversi ke string kata, spasi dan tanda hubung tidak boleh dimasukkan dalam hitungan (100 [Seratus] adalah 10 karakter, bukan 11. 1.742 [Seribu Tujuh ratus Empat Puluh Dua] adalah 31 karakter, bukan 36)
- Ketika dikonversi menjadi string, 100 harus Seratus, bukan Seratus atau Seratus, 1000 harus Seribu, bukan Seribu atau Seribu.
- Ketika dikonversi ke string 142 harus Seratus Forty Two, tidak Seratus dan Forty Two
- Outputnya adalah case-insensitive , dan harus mengikuti format " N adalah K dan K adalah M dan M adalah ... dan empat adalah angka ajaib" (kecuali inputnya 4, dalam hal ini outputnya seharusnya hanya "empat adalah angka ajaib ")
- Outputnya dapat menggunakan angka alih-alih huruf ("5 adalah 4 dan 4 adalah angka ajaib" bukan "lima adalah empat dan empat adalah angka ajaib") selama program Anda selalu konsisten
- Outputnya bisa berupa nilai balik suatu fungsi, atau dicetak ke
STDOUT
- Celah standar berlaku
- Ini adalah kode-golf , jadi program terpendek dalam byte menang. Semoga berhasil!
Bonus
-30 byte jika program bekerja saat input berada di antara -999.999 dan 999.999.
Angka negatif, ketika dikonversi menjadi kata, hanya memiliki "negatif" di depannya. Misalnya -4
adalah "Negatif Empat", Negatif Empat adalah dua belas dan dua belas adalah enam dan enam adalah tiga dan tiga adalah lima dan lima adalah empat dan empat adalah angka ajaib
-150 byte jika program tidak menggunakan fungsi bawaan untuk menghasilkan representasi string dari angka tersebut
Papan peringkat
Ini adalah Cuplikan Stack yang menghasilkan leaderboard dan ikhtisar pemenang berdasarkan bahasa.
Untuk memastikan jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama menggunakan templat Penurunan harga berikut
## Language Name, N bytes
Di mana N adalah ukuran, dalam byte, dari kiriman Anda
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (misalnya, mencoret skor lama, atau menyertakan bendera dalam jumlah byte), pastikan saja skor sebenarnya adalah angka terakhir di tajuk Anda
## Language Name, <s>K</s> X + 2 = N bytes