Temel 10, temel 2, temel 36 ve hatta temel -10'a dayanan birçok zorluğumuz var , ama diğer tüm rasyonel temeller ne olacak?
Görev
Taban 10'daki bir tam sayı ve rasyonel bir taban verildiğinde, bu tabandaki tamsayıyı döndürün (dizi, dize vb.).
süreç
Rasyonel bir üssü hayal etmek zor, bu yüzden Patlayan Noktaları kullanarak onu görselleştirelim :
Temel 3'te 17 ifade eden bu animasyonu düşünün:
Her nokta bir birimi temsil eder ve kutular rakamları temsil eder: en sağdaki kutu kişinin yeri, ortadaki kutu 3 ^ 1 ve en soldaki kutu 3 ^ 2 yerdir.
Birinin yerinde 17 nokta ile başlayabiliriz. Ancak, bu temel 3, bu yüzden yer 3 daha az olması gerekir. Bu nedenle, biz 3 nokta "patlayabilir" ve soldaki kutuda bir nokta oluşturun. Bunu, patlayıcı noktaları olmayan (yani aynı kutuda 3 nokta) sabit bir konum elde edene kadar tekrarlıyoruz.
Yani 10 tabanındaki 17, 3 tabanındaki 122'dir.
Kesirli bir baz, bazı noktaların birden fazla noktaya patlatılmasına benzer. Baz 3/2, 2 oluşturmak için 3 noktayı patlatacaktır.
3/2 tabanındaki 17 ifadesi:
Yani 10 tabanındaki 17 3/2 tabanındaki 21012'dir.
Negatif bazlar benzer şekilde çalışır, ancak işaretleri takip etmeliyiz (anti-noktalar olarak adlandırılan, -1'e eşit; açık bir daire ile temsil edilir).
-3 tabanındaki 17 ifadesi:
Unutmayın, tüm kutuların işaretlerini aynı yapmak için ekstra patlamalar vardır (sıfırları yok sayarak).
Böylece, baz 10'daki 17 baz -3'deki 212'dir.
Negatif rasyonel bazlar, yukarıdaki iki vakanın bir kombinasyonunda benzer şekilde çalışır.
kurallar
- Standart boşluklar yok.
- Çıktıdaki her "basamak" ın işareti aynı (veya sıfır) olmalıdır.
- Tüm basamakların mutlak değeri, tabanın payının mutlak değerinden küçük olmalıdır.
- Tabanın mutlak değerinin 1'den büyük olduğunu varsayabilirsiniz.
- Rasyonel bir temelin en düşük indirgenmiş formda olduğunu varsayabilirsiniz.
- Girişte tabanın paydasını ve paydasını ayrı ayrı alabilirsiniz.
- Bir sayının birden çok temsili varsa, bunlardan herhangi birini çıktı alabilirsiniz. (örneğin, taban 10'daki 12
{-2, -8}
ve{1, 9, 2}
tabandaki -10 olabilir)
Test senaryoları:
Biçim: {in, base} -> result
{7, 4/3} -> {3, 3}
{-42, -2} -> {1, 0, 1, 0, 1, 0}
{-112, -7/3} -> {-6, -5, 0, -1, 0}
{1234, 9/2} -> {2, 3, 6, 4, 1}
{60043, -37/3} -> {-33, -14, -22, -8}
Bazı girdilerin birden fazla temsili olabileceğinden, çıktıyı TIO'daki bu Mathematica snippet'ini kullanarak test etmenizi öneririm .
Bu kod golf , bu yüzden her dil kazanmak en kısa bayt sayımları ile gönderme!
Patlayan noktalar hakkında daha fazla bilgi için global matematik projesi web sitesini ziyaret edin ! Onlar bir sürü serin mathy şeyler var!