Tantangan ini dibawa kepada Anda dengan inspirasi nyata (dan tragis). Baru-baru ini, baris angka pada keyboard saya agak sporadis. Kunci-kunci itu 1-9bekerja 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 1tersebut tidak dapat ditulis begitu sederhana dalam heksadesimal, dan saya terpaksa mengganti 1s 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, nke 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 nsebagai 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 Anilai heksadesimal berikut 0xhanya berisi digit A-F a-f, dan %merupakan salah satu simbol -+/. Mari /gambarkan pembagian integer, bukan floating-point.
(Perhatikan bahwa hasil Anda harus menghasilkan nketika mengevaluasi divisi pertama, kiri ke kanan, dan kemudian penambahan dan pengurangan, dari kiri ke kanan, seperti konvensi.)
Uji Kasus
Input output
10xF - 0xE(atau0xF-0xEatau0xB-0xAatau0xd - 0xcatau0xF/0xF)150xF2550xFF300xF + 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-9di 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 nsebagai 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!