Pendahuluan:
Saya ingin melatih membuat test case, jadi saya akan mencobanya dengan mudah.
Tantangan:
Ambil input (string) apa saja (dalam rentang ASCII yang terlihat) dan simpulkan jika itu adalah angka dan hasilkan sesuatu yang dapat digunakan untuk mengevaluasi.
Aturan:
- Angka hanya akan berisi karakter
-0123456789,. - Jawaban hanya diperlukan untuk mengenali angka antara -1000000000 dan 1000000000 (eksklusif), tetapi dapat mengenali angka besar secara sewenang-wenang.
- Anda dapat menulis program atau fungsi lengkap.
- Jika suatu angka, kembalikan apa pun yang dapat digunakan untuk membedakannya dan mendokumentasikan output dalam deskripsi (mis.
My program outputs T if a number, F if not.). - Input akan berupa jumlah karakter apa pun dalam rentang ASCII atau kosong (jika kosong mengembalikan apa pun yang Anda hasilkan jika bukan angka).
- Angka bisa termasuk titik desimal (mis.
3.14). Jika ya, mereka harus memiliki setidaknya satu digit sebelum titik desimal dan setidaknya satu setelahnya. - Angka bisa memiliki nol di depan atau di belakang (mis.
000001.00000). - Bagian integer dari angka dapat dibagi untuk dibaca menjadi potongan tiga digit dengan koma (mis.
1,000.23456). Dalam hal ini mereka harus dibagi setiap tiga digit dari kanan ke kiri (ex.1,234,567,10,000.202,123,234.00,0,123.293). - Angka negatif ditunjukkan oleh pemimpin
-(mis.-1.23). Arahan+untuk menunjukkan angka positif tidak diizinkan, dan harus menghasilkan output palsu. - Pengecualian TIDAK dihitung sebagai output yang valid dan dapat dilihat (kecuali ketika mereka dapat meneruskan output ke stream out standar (mis.
Exception on line N [...]Dapat dimasukkan sebagai output untuk nomor / bukan nomor jika string dimasukkan ke stream out standar.
Kasus uji:
(dengan asumsi My program outputs T if a number, F if not.versinya)
123 -> T [on integer]
-123 -> T [negative numbers need to be handled]
0 -> T [on zero]
123.456 -> T [on floating point]
123,456.789 -> T [on evenly divided by 3 digits with comas]
123456789 -> T [thousand separators are not required]
0000001.00000 -> T [on leading/trailing zeros]
00.00 -> T [on zero and leading/trailing zeros]
999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the maximum value]
-999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the minimum value]
-> F [on empty]
lolz -> F [on non-number value]
n4melyh4xor -> F [on non-number with digits]
1.2 -> F [on space-padded]
9.3 1.3 -> F [on anyhow separated multiple numbers]
1e5 -> F [no scientific notation]
50cl05e.buty3ts0f4r -> F [on input with letters obscuring the number]
1,2,3,4.5678 -> F [on badly readability-divided number]
1,234.5,678 -> F [on readability-divided floating point part]
.234 -> F [on no leading zero]
+1 -> F [no leading + sign]
1.234.3 -> F [only one decimal point]
12345,678 -> F [on separator stopping mid-way]
kode-golf , karakter paling tidak adalah pemenangnya.
-123OK, bagaimana dengan +456-> baik atau buruk. Atau tidak ikut serta +dalam pesta?