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.
-123
OK, bagaimana dengan +456
-> baik atau buruk. Atau tidak ikut serta +
dalam pesta?