Tantangan
Tulis fungsi atau program yang mengambil angka desimal positif, sebut saja A , dan hasilkan dua angka positif, B dan C , sehingga:
- A == B bitxor C
- B dan C tidak boleh mengandung digit 0, 3 atau 7 dalam representasi desimalnya.
Contohnya
>>> decompose(3)
1, 2
>>> decompose(7)
1, 6
>>> decompose(718)
121, 695
>>> decompose(99997)
2, 99999
>>> decompose(4294967296)
4294968218, 922
>>> decompose(5296080632396965608312971217160142474083606142654386510789497504098664630388377556711796340247136376)
6291484486961499292662848846261496489294168969458648464915998254691295448225881546425551225669515922,
1191982455588299219648819556299554251659915414942295896926425126251962564256469862862114191986258666
Karena dekomposisi tidak unik, fungsi / program Anda tidak perlu menampilkan hasil yang sama persis dengan contoh yang diberikan ini.
Aturan yang sangat rinci
Pengajuan harus dalam bentuk fungsi atau program yang lengkap .
importpernyataan memang diperhitungkan dalam skor akhir.Anda dapat mengasumsikan input A selalu mengandung setidaknya digit 0, 3 atau 7.
Anda dapat menganggap bahwa dekomposisi selalu ada.
Anda dapat menggunakan BigInt jika mereka adalah bagian dari perpustakaan standar bahasa, atau dapat diinstal melalui manajer paket de jure bahasa .
Fungsinya harus cepat. Seharusnya tidak lebih dari 20 detik untuk berjalan di komputer yang cukup modern saat memasukkan nomor 100-digit, dan tidak lebih dari 2 detik saat memasukkan nomor 10-digit.
Fungsi / program harus mendukung input hingga setidaknya 100 digit .
- Jika fungsi / program hanya dapat mendukung bilangan bulat hingga N <100 digit, akan ada penalti sebesar + 10 × (100 / N - 1) byte ke skor akhir. Ini untuk mendorong pegolf untuk mendukung nomor yang lebih luas walaupun impor mungkin dilakukan secara verbal.
Tidak ada batasan pada presentasi input / output selama mereka jelas dalam representasi desimal.
- Fungsi ini dapat menginput dan mengeluarkan string / BigInts jika tipe integer bawaan tidak cukup.
- Input mungkin berasal dari parameter fungsi, argumen baris perintah atau STDIN.
- Fungsi dapat mengembalikan hasilnya, atau hanya mencetak hasilnya langsung ke STDOUT.
- Namun, limpahan yang dimasukkan pada input / output tidak diizinkan.
- Perkiraan jawaban tidak ditoleransi, input / output harus tepat.
Mencetak gol
Ini adalah kode-golf . Solusi terpendek dalam byte menang.
Ada penalti jika program hanya dapat mendukung angka kurang dari 100 digit:
- 64-bit integers (19 digit) = +42 byte
- Bilangan bulat 63-bit (18 digit) = +45 byte
- Bilangan bulat 53-bit (15 digit) = +56 byte
- 31/32-bit integer (9 digit) = +101 byte