Tulis sebuah program yang memvisualisasikan pembagian panjang dengan seni ASCII. Input terdiri dari dua bilangan bulat, pembilang dan penyebut, menggunakan format input pilihan Anda.
Contoh:
1234 ÷ 56:
22
----
56|1234
112
---
114
112
---
2
1002012 ÷ 12:
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
Aturan:
- Penggunaan divisi operator bahasa pemrograman ini adalah diperbolehkan.
- Penggunaan dukungan integer besar juga diperbolehkan.
- Untuk konsistensi:
- Jika hasil bagi adalah nol, cetak satu nol di ujung papan selam.
- Jika sisanya nol, jangan cetak.
- Jangan cetak angka nol di depan pada nomor apa pun.
- Kelebihan baris baru di ujung dan spasi tambahan ke kanan diizinkan.
- Solusi dengan karakter paling sedikit menang.
Batas:
- 0 <= pembilang <= 10 72 - 1
- 1 <= penyebut <= 9999999
Ini menyiratkan bahwa output tidak akan pernah lebih luas dari 80 kolom.
Test suite dan implementasi sampel:
Anda dapat menggunakan long-division.c ( intisari ) untuk menguji program Anda. Ini sebenarnya adalah skrip bash dengan program C di dalamnya. Tweak untuk menjalankan program Anda di test suite. Lihatlah kode C di bagian bawah untuk melihat implementasi referensi. Tolong beri tahu saya jika ada masalah dengan program sampel atau test suite.
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
Sunting: Atas permintaan, saya memasukkan input suite tes dan output yang diharapkan ke dalam file teks ( inti ). Contoh penggunaan (bash):
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
Perintah sed yang aneh menyaring jejak dan spasi baru dari keluaran program.
sumber
Jawaban:
Python 3,
284257 karakterdiv.py
Penggunaan:
python3 div.py
Input: dari keyboard
test.py
pencocokan output diharapkan
Versi:
1. 284
2. 257 :
s,z,f=0,0,0
→s=z=f=0
;z and f
→z*f
; perulangan yang lebih baik; menghapus beberapa baris baru.sumber
Haskell, 320 karakter
Lewati semua tes. Sementara golf cantik ini - saya pikir masih banyak yang harus dilakukan di sini ...
read
panggilan, yang mengurangi kebutuhan untuk meneleponshow
, cukup disingkatshow
karenas
tidak layak.sumber
-XUnicodeSyntax
).JavaScript (400
394418)CATATAN: Sebagai menggoda seperti yang terlihat untuk mencukur habis beberapa karakter dengan mengganti
c=(c==0)?
denganc=!c?
, itu tidak dapat digunakan karena menyebabkan mengambang bug yang berhubungan dengan titik.http://jsfiddle.net/nLzYW/9/
Eksekusi sampel:
Sunting 1 : Perbaikan bug minor, berbagai optimasi kode.
Sunting 2 : Perbaiki bug dengan 1/7 menghasilkan output tambahan.
sumber
d(1,7)
(dan tes serupa) ulangi penyebut daripada mencetak apa-apa. Ini salah karena angka ini harus menjadi digit hasil bagi dikali penyebut, yaitu nol.Javascript: (372)
Diminta menggunakan i (pembagi, angka). Codegolfed JS: http://jsfiddle.net/puckipedia/EP464/ Ungolfed (belanda) JS: http://jsfiddle.net/puckipedia/M82VM/
Mengembalikan divisi panjang (dalam format Belanda seperti yang saya pelajari):
Kasus cobaan:
sumber