Tantangannya adalah untuk menghasilkan penggaris penghitung karakter ASCII dalam format berikut:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
Panjang penggaris harus scalable ke kelipatan 10.
Aturan:
- Penguasa harus horizontal.
- Katakanlah, untuk menjaga hal-hal lebih sederhana, bahwa penguasa harus bekerja hingga tanda 1000, semua angka dibariskan kiri, satu spasi setelah angka terakhir .
- Meminta penggaris dengan panjang nol harus mencetak NaR
- Angka negatif harus mencetak penggaris terbalik (-90, -80, -70, ...) dengan angka rata kanan, dalam format yang sama persis dengan yang di atas jika tidak
Dan, hanya mencetak ke konsol baik-baik saja
Siap, siap, golf!
Jawaban:
Python - 227
232Mendukung seluruh spesifikasi
sunting: ekspresi generator ditingkatkan.
Mendukung angka negatif yang disejajarkan dengan benar menambah jumlah kode yang mengejutkan.
Output sampel:
-30 30
-30 -30
100 150
-1000 -950
sumber
Tidak akan mengalahkan bahasa dinamis hari ini, tapi bagaimanapun ...
Haskell, 341
Saya mengambil kebebasan untuk bertukar karakter ASCII yang sebenarnya dengan karakter kotak gambar unicode yang terlihat lebih baik.
sumber
Python 2.7,
342 266260 karaktermengembalikan
tuple dari setiapstringbaris, yang kemudian dapat Anda cetak atau simpan ke file (saya lebih suka yang terakhir lebih panjang dari 70 karena konsol akan hanya membuatnya terlihat berantakan dengan pembungkus)Diasumsikan
y
sebagaistring (raw_input () n python, atau sys.argv [1] jika Anda ingin memanggil melalui cmd)integer (misalnya dengan input () dalam 2.x atau int (input ()) dalam 3.x )Saya membuat fungsi ini menjadi lebih fleksibel
sunting: dikurangi menjadi 266 karakter. tidak lagi mengembalikan tupel, tetapi string sebagai gantinya. Sekarang ambil integer alih-alih string sebagai argumen
sunting2: dikurangi menjadi 260 karakter, fungsi satu baris
catatan: memang menangani angka negatif, tetapi tidak membenarkan benar (saya tidak benar-benar menganggap pembenaran terlalu penting
sumber
PowerShell ,
256253233225222 byteCobalah online!
Kurang golf:
sumber
Python,
291241 karakterPendekatan yang cukup sederhana. Saya yakin itu bisa ditingkatkan cukup banyak.
Saya mencoba mengikuti pedoman dalam komentar, tetapi saya tidak mendukung angka negatif (itu hanya lelucon, saya harap).
Ini adalah program, mencetak penggaris ke output standar. Jika layar Anda cukup lebar, seharusnya mendukung penggaris yang cukup panjang.
sumber
C ++, 392
Ini diprogram menggunakan konsol windows, oleh karena itu saya hanya memilih ukuran penggaris maksimum adalah 70, itu hanya akan crash untuk sesuatu yang lebih besar. Angka negatif (hingga -70) dan 0 ditangani dengan benar.
sumber
Python - 208
(tidak mendukung angka negatif yang disejajarkan dengan benar)
Saya pikir trik favorit saya adalah untuk menghasilkan string yang jauh lebih lama dari yang diperlukan dan kemudian memotongnya, misalnya:
Saya hanya berharap ada opsi pemformatan string yang lebih ringkas untuk perataan-kiri (kecuali ada satu yang tidak saya ketahui)
sumber
Perl 5.14,
198224 karakterMungkin dapat dipersingkat lebih jauh, tapi inilah upaya kedua
pertama(dengan jeda baris dimasukkan untuk dibaca):EDIT: Diedit untuk mati dengan "NaR" ketika input
0
dan untuk mendukung rentang negatif.EDIT2: Saya belum punya kesempatan untuk bekerja lebih lanjut tentang ini, dan saya baru saja memperhatikan hak yang disejajarkan untuk aturan angka negatif, yang kode saya tidak mendukung, jadi saya pikir solusi lain harus ditandai sebagai jawaban jika tenggat waktu telah tercapai.
sumber