Dalam tantangan ini, Anda akan menulis sebuah program untuk menampilkan berapa banyak tempat desimal dalam string input dan memangkas input jika diperlukan.
Contohnya
-12.32
2
32
0
3231.432
3
-34.0
0 -34
023
0 23
00324.230
2 324.23
10
0
00.3
1 0.3
0
0
-04.8330
3 -4.833
Aturan
- Input akan berupa string yang dapat diambil melalui, STDIN, argumen fungsi atau yang setara terdekat
- Output dapat melalui pengembalian fungsi, STDOUT, atau yang setara terdekat.
- Tidak ada batasan ukuran untuk bilangan bulat input kecuali untuk panjang string maksimum bahasa Anda .
- Jika input memiliki nol yang tidak perlu (memimpin atau mengikuti):
- Anda harus mengeluarkannya
- Keluarkan jumlah tempat desimal di angka baru
- Keluarkan nomor baru yang dipisahkan oleh pemisah (mis. Spasi, baris baru, koma)
- Input akan selalu cocok dengan RegEx ini:,
-?\d+(\.\d+)?
atau jika Anda tidak berbicara RegEx :- Ada bisa menjadi
-
di awal menyiratkan angka negatif. Maka akan ada setidaknya satu digit. Maka mungkin ada ... a.
dan beberapa digit lagi. - Untuk memeriksa apakah input valid, periksa di sini
- Ada bisa menjadi
- Tidak Ada Regex
Ini adalah kode-golf sehingga kode terpendek dalam byte menang
0
.Jawaban:
PHP 7, 142 byte
Saya entah bagaimana berhasil memeras semuanya menjadi satu pernyataan cetak:
Berjalan dari baris perintah, seperti:
Demo
Lihat semua kasus uji termasuk yang sangat panjang (62 karakter) beraksi:
Coba sebelum membeli 1
1 Arahkan kursor ke kotak di bawah " Output for 7.0.0 " untuk melihat semua hasil.
sumber
Python 2,
165180 bytePada awalnya saya berpikir tentang menulis program Pyth pertama saya, mendapatkannya menghitung angka setelah koma potensial. Tapi kemudian saya merasa sangat kesal, saya tidak tahu bagaimana Anda akan menikmati bahasa itu, kira itu hanya untuk tujuan kemenangan. Bagaimanapun, inilah solusi saya (diedit karena tidak berfungsi untuk jumlah besar):
Seandainya ada orang yang ingin membangun karya saya di Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
Untuk melihat di mana Anda berada, Anda mungkin ingin menyisipkan ap di antaranya@+
.sumber
05AB1E , 23 byte (tidak kompetitif)
Sial, aku sudah sangat dekat. Python mem-parsing pelampung yang sangat besar menggunakan notasi ilmiah, jadi saya memperbaiki bug ini pada interpreter. Namun, ini dilakukan setelah tantangan dan pengajuan saya karena itu tidak kompetitif.
Kode:
Penjelasan:
Menggunakan penyandian ISO 8859-1 .
sumber
JavaScript (ES6), 156
162Sunting Fixed bug untuk '-0' - thx @Fez Vrasta Edit 2 6 byte disimpan thx @Neil
Ini berantakan, tetapi 100% berbasis string - tidak ada batasan karena tipe numerik
Kurang golf
Uji
sumber
-0
input .. kami harus mengeluarkan0
, bukan0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
berhasil menghemat satu byte?t=l=k=p=0
dan++t&&c=='.'
lainES6,
102180177 byteSunting: Disimpan 3 byte berkat @ edc65; disimpan 1 byte berkat insertusername di sini.
sumber
t=[...s]
t[--l]==0
dengant[--l]<1
.C ++, 180 byte
Ini adalah C ++ portabel, yang tidak membuat asumsi pengkodean karakter, dan tidak menyertakan pustaka (bahkan Pustaka Standar).
Input diteruskan
s
. Jumlah tempat desimal dikembalikan; string dimodifikasi di tempat dan awal baru dikembalikanp
.Secara hak, saya harus mengembalikan a
size_t
, tetapi sebaliknya saya akan mengklaim bahwa Anda harus mengkompilasi ini untuk OS yang membatasi ukuran string hingga setengah kisaranint
. Saya pikir itu masuk akal; itu menghitung lebih dari 2 miliar tempat desimal pada arsitektur 32-bit.Penjelasan
Program uji
Uji keluaran
sumber