Pertama, pelajari puzzle ini untuk merasakan apa yang akan Anda hasilkan.
Tantangan Anda adalah menulis program atau fungsi yang akan menghasilkan grafik lingkaran seperti yang ada di teka-teki, diberi nomor (basis 10) antara 1 dan 100 (inklusif). Ini mirip dengan tantangan ini , kecuali bahwa Anda akan menghasilkan grafik daripada angka romawi. Lingkaran berikut mewakili angka 1-10, dari kiri ke kanan:
Sebagai jawaban untuk teka-teki menyatakan, grafik Anda harus membaca seperti angka romawi dari dalam-ke luar, di mana ketebalan garis mewakili simbol angka romawi dan seluruh grafik mewakili angka. Untuk referensi Anda, berikut adalah ketebalan garis yang Anda perlukan. Setiap baris harus memiliki bantalan 3px di antara itu dan yang berikutnya.
Number Roman Numeral Line Width
1 I 1px
5 V 3px
10 X 5px
50 L 7px
100 C 9px
Silakan kirim sampel atau dua dari output Anda. Asumsikan input benar, celah standar , dll, dan sebagainya. Ini adalah kode golf, byte paling sedikit menang. Dalam hal seri, sebagian besar suara menang. Semoga berhasil!
sumber
Jawaban:
Mathematica -
166181 byteSedikit lebih ringkas daripada jawaban Mathematica lainnya, sebagian berkat gaya yang lebih bebas poin.
Semua spasi putih hanya untuk kejelasan saja. Ini mendefinisikan fungsi anonim yang mengembalikan grafik yang diinginkan.
Animasi
Membuat GIF animasi dari lingkaran angka adalah sepele dalam Mathematica, yang memiliki fungsi bawaan untuk menghidupkan dan mengekspor sekuens objek sewenang-wenang. Dengan asumsi kode di atas baru saja dieksekusi,
Contoh Output
sumber
Gangguan Umum -
376331304 byteContohnya
(1) (24)
(104) (1903) (3999)
Animasi
Untuk angka dari 1 hingga 400:
NB: Sebagai catatan, animasi ini dilakukan sebagai berikut:
Saya memiliki versi kode yang dimodifikasi, dinamai
rings
yang mengembalikan lebar gambar yang dihasilkan. Oleh karena itu, hasil dari loop berikut adalah ukuran maksimum, di sini 182 :Seluruh loop membutuhkan 9,573 detik. Itu memberi sekitar 24 ms untuk setiap bilangan bulat. Kemudian, dalam sebuah shell:
Tidak disatukan
Penjelasan
Fungsi ini mengambil bilangan bulat
N
antara 1 dan 3999 dan nama fileSaya menggunakan
(format nil "~@R" N)
untuk mengkonversi dari desimal ke roman. Sebagai contoh:The
~@R
kontrol format string ditentukan untuk bekerja untuk bilangan bulat antara 1 dan 3999. Itu sebabnya ada batasan untuk berbagai masukan diperbolehkan.Saya beralih pada string yang dihasilkan untuk membangun daftar yang
P
berisi(radius width)
pasangan, untuk setiap angka C.Lebar adalah pemetaan linear sederhana: Saya menggunakan string konstan "IVXLCDM" untuk menghitung posisi C di dalamnya. Mengalikan dengan dua dan menambahkan satu, kami memperoleh nilai yang diinginkan:
Namun ini dilakukan sedikit berbeda dalam versi golf:
Perhitungan setiap jari-jari memperhitungkan lebar masing-masing cincin serta ruang kosong di antara cincin. Tanpa optimasi kecepatan, perhitungan tetap tepat karena tidak didasarkan pada float, tetapi bilangan rasional.
Sunting : Saya mengubah parameter untuk mematuhi aturan padding.
Setelah ini selesai, saya tahu ukuran kanvas yang diperlukan (dua kali radius komputasi terbaru).
P
dan menyimpan kanvas.sumber
HTML + JQuery, 288
HTML
JS
Tampilkan cuplikan kode
Biola
sumber
Jawa, 565
Contohnya
15
84
93
Diformat dengan baik:
sumber
Mathematica 9 -
301249 byte: D Rasanya menggelikan untuk menggunakan konversi bawaan ke angka Romawi, tapi hei.
(Ketika saya melakukan ini tadi malam, saya tidak punya banyak waktu, tetapi saya menyadari bahwa itu bisa menjadi golf lebih jauh. Dan saya juga mengambil beberapa petunjuk dari David Zhang ...: D Terima kasih!)
Sedikit lebih jelas:
Ini adalah fungsi yang dapat Anda panggil seperti ini:
Atau, Anda dapat menampilkan hasil dari nilai a ke b dengan:
Table[r[i],{i,a,b}]
Catatan : Ini hanya berfungsi untuk nilai hingga 399.
sumber
Python 2,
322296Script membaca nomor yang akan dikonversi dari stdin, dan menampilkan gambar sebagai markup SVG.
.. Saya menggunakan 'merah' bukan 'hitam', karena menghemat 2 karakter :)
Berikut adalah beberapa contoh: untuk 23: http://jsfiddle.net/39xmpq49/ untuk 42: http://jsfiddle.net/7Ls24q9e/1/
sumber
JavaScript
342334308sumber