Tantangan ini dibawa kepada Anda dengan inspirasi nyata (dan tragis). Baru-baru ini, baris angka pada keyboard saya agak sporadis. Kunci-kunci itu 1-9
bekerja kadang-kadang - tetapi kadang-kadang tidak ada hasilnya. Sebagai programmer yang rajin, ini mengerikan! (Lihat tanda seru itu? Begitulah cara Anda tahu mereka sedang bekerja saat ini.) Tidak hanya saya sering membutuhkan nomornya sendiri, tetapi juga simbolnya.!@#$%^&*(
sama sekali tidak efektif setengah waktu juga! Sebagai seorang programmer C, daripada mengambil cuti dari jadwal sibuk saya mencoret-coret dengan kode untuk memperbaiki laptop saya, saya lebih tertarik untuk mengatasi masalah tersebut. Selama beberapa minggu terakhir, perlahan, semua literal angka dalam kode saya telah diganti dengan heksadesimal sehingga saya tidak perlu mencari-cari angka untuk menyalin dan menempel. Namun, beberapa angka tidak mudah diketik tanpa kunci 1-9
. Sebagai contoh, nomor 1
tersebut tidak dapat ditulis begitu sederhana dalam heksadesimal, dan saya terpaksa mengganti 1
s dalam kode saya dengan 0xF - 0xE
. Satu-satunya kunci yang terpengaruh adalah 1-9
, jadi saya menjaga penuh penggunaan simbol-simbol seperti +
, -
, dan /
. Namun, saya tidak bisa menggunakan perkalian atau tanda kurung, seperti*
dan (
sering rusak. Ini mengarah pada tantangan Anda.
Memasukkan
Integer, n
ke stdin atau bahasa Anda setara. Jika diinginkan, integer dapat didahului atau diikuti oleh baris baru atau karakter spasi putih lainnya. Atau, Anda dapat menerima input melalui argumen baris perintah.
Program Anda harus merespons input negatif dengan benar, dan dapat menangani setidaknya bilangan bulat bertanda 32-bit.
Keluaran
Program Anda harus menampilkan, dalam beberapa bentuk yang dapat diamati, cara terpendek (dalam karakter non-spasi putih) untuk menulis angka n
sebagai jumlah, perbedaan, atau pembagian satu atau lebih nilai heksadesimal. Ada lebih dari satu cara untuk mengatasi masalah ini, dan tidak ada persyaratan yang Anda sukai untuk setiap output dengan panjang yang sama.
Outputnya harus dalam bentuk di A % A % A...
mana A
nilai heksadesimal berikut 0x
hanya berisi digit A-F a-f
, dan %
merupakan salah satu simbol -+/
. Mari /
gambarkan pembagian integer, bukan floating-point.
(Perhatikan bahwa hasil Anda harus menghasilkan n
ketika mengevaluasi divisi pertama, kiri ke kanan, dan kemudian penambahan dan pengurangan, dari kiri ke kanan, seperti konvensi.)
Uji Kasus
Input output
1
0xF - 0xE
(atau0xF-0xE
atau0xB-0xA
atau0xd - 0xc
atau0xF/0xF
)15
0xF
255
0xFF
30
0xF + 0xF
Penilaian dan Aturan
Ini adalah kode-golf. Skor awal Anda adalah jumlah byte dalam file sumber Anda.
Anda TIDAK boleh menggunakan salah satu digit 1-9
di sumber Anda.
Anda DAPAT menggunakan simbol !@#$%^&*(
di sumber Anda, tetapi masing-masing dikenakan penalti +20 untuk skor Anda.
Program Anda dapat digantikan oleh fungsi yang mengambil n
sebagai argumen selama fungsi itu menghasilkan beberapa bentuk output yang dapat dibaca manusia. Nilai pengembalian fungsi Anda TIDAK dihitung sebagai output.
Menang skor terendah! Semoga berhasil!
Apakah saya melakukan kesalahan format / tanya / kejelasan? Biarkan aku tahu! Ini adalah pengiriman pertama saya ke situs ini!