Verilen pozitif tamsayı n > 2. Diziyi şu şekilde dönüştürürüz:
2Boş bir dizi döndürmek için eşitse- Aksi halde
n, yükselen sıralanan tüm asal çarpanların dizisini yaratın , daha sonra her eleman asal sayılar dizindeki dizini ile değiştirildi ve son olarak her elemanı diziye dönüştürdü.
Örneğin, sayıyı 46diziye dönüştürelim . İlk olarak, onu ana faktörlerin dizisine dönüştürün:
[2, 23]
Numara 23olduğunu 9böylece yerine, inci asal 2boş dizi ve 23birlikte [9]. Dizi şimdi olur:
[[], [9]]
Başbakan faktörler 9şunlardır 3ve 3bu nedenle,:
[[], [3, 3]]
Her ikisi için de aynısını yapın 3:
[[], [[2], [2]]]
Ve sonunda:
[[], [[[]], [[]]]]
Şimdi, onu kodlamak için, her açık braketi basitçe 1ve her kapanış braketiyle değiştiriyoruz 0, sonra tüm bitiş sıfırlarını çıkarıyoruz ve bir 1ucundan düşüyoruz. Bu bizim ikili sayımız. Yukarıdaki örneği kullanarak:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
Şimdi sadece son üç sıfırı ve sonuncuyu bırakın 1. Numara olur 10111001ki 185ondalık. Beklenen çıktı budur. Dizideki ana dizinin ikili dönüştürme dirseklerine dahil edilmediğine dikkat edin.
Giriş
Pozitif tamsayı ndaha büyük 2.
Çıktı
Kodlanmış tam sayı n.
Kurallar ve IO formatı
- Standart kurallar geçerlidir.
- Giriş, dize veya sayı olabilir (dize olması durumunda, 10 tabanında olması gerekir).
- Çıktı, dize veya sayı olabilir (dize olması durumunda, 10 tabanında olması gerekir).
- Bu kod-golf , bayt cinsinden en kısa cevap kazanır!
Test durumları
İstek üzerine daha fazla test durumu.
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
2çünkü başvurularda bunu yapmanız gerekmemektedir.