Diberikan bilangan bulat positif n > 2. Kami mengonversinya menjadi array sebagai berikut:
- Jika sama dengan
2mengembalikan array kosong - Jika tidak, buat array semua
nfaktor utama yang diurutkan naik, lalu setiap elemen ganti dengan indeksnya dalam urutan bilangan prima dan akhirnya konversi setiap elemen menjadi array
Misalnya, mari kita konversi angka 46menjadi array. Pertama, konversikan ke berbagai faktor utamanya:
[2, 23]
Jumlah 23ini 9prime th, jadi ganti 2dengan array kosong dan 23dengan [9]. Array sekarang menjadi:
[[], [9]]
Faktor utama 9adalah 3dan 3, jadi:
[[], [3, 3]]
Lakukan hal yang sama untuk keduanya 3:
[[], [[2], [2]]]
Dan akhirnya:
[[], [[[]], [[]]]]
Sekarang, untuk menyandikannya, kita cukup mengganti masing-masing braket terbuka dengan 1dan setiap braket penutup 0, lalu hapus semua nol akhir dan jatuhkan satu 1dari ujungnya. Ini adalah nomor biner kami. Menggunakan contoh di atas:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Sekarang cukup masukkan tiga nol terakhir dan terakhir 1. Angka menjadi 10111001yang 185dalam desimal. Itu adalah output yang diharapkan. Perhatikan bahwa dalam kurung konversi array ke biner dari array utama tidak termasuk.
Memasukkan
Bilangan bulat positif nlebih besar dari 2.
Keluaran
Integer yang dikodekan n.
Aturan dan format IO
- Aturan standar berlaku.
- Input dapat berupa string atau angka (tetapi jika string harus dalam basis 10).
- Output dapat berupa string atau angka (tetapi jika string harus dalam basis 10).
- Ini adalah kode-golf , jawaban terpendek dalam byte menang!
Uji kasus
Lebih banyak kasus uji berdasarkan permintaan.
3 ---> 1
4 ---> 2
5 ---> 3
6 ---> 5
7 ---> 6
8 ---> 10
9 ---> 25
10 ---> 11
10000 ---> 179189987
10001 ---> 944359
10002 ---> 183722
10003 ---> 216499
10004 ---> 2863321
10005 ---> 27030299
10006 ---> 93754
10007 ---> 223005
10008 ---> 1402478
2karena kiriman tidak diperlukan untuk menanganinya.