Son zamanlarda itibarımdı 25,121
. Her rakam grubunun (virgülle ayrılmış sayılar) mükemmel bir kare olduğunu fark ettim.
Negatif olmayan bir tamsayı N ve bir tekli boolean Kara Kutu Fonksiyonu f : Z * → B verildiğinde, N'nin basamak gruplarına uygulanan f'nin her değeri doğruysa, aksi takdirde falsey ise, zorluğunuz doğrudur.
Sayıları sağ taraftan başlayarak 3'lü gruplara bölerek rakam gruplarını bulabilirsiniz. En soldaki grup 1, 2 veya 3 hane içerebilir. Bazı örnekler:
12398123 -> 12,398,123 (3 digit groupings)
10 -> 10 (1 digit grouping)
23045 -> 23,045 (2 digit groupings)
100000001 -> 100,000,001 (3 digit groupings)
1337 -> 1,337 (2 digit groupings)
0 -> 0 (1 digit grouping)
Ek kurallar
- Bu işlev boolean (ör.
true
Vefalse
),1
s ve0
s veya herhangi bir doğruluk / falsey değerine eşlenebilir. Lütfen yanıtınız tarafından hangi biçimlerin desteklendiğini belirtin. - Girdi olarak bir tam sayı veya bir tam sayı dizesi (örn. Rakamlardan oluşan bir dize) alabilirsiniz.
- Bir program veya işlev yazabilirsiniz.
- Dijital grupları f işlevine geçirirken , gereksiz tüm önde gelen sıfırları kırpmalısınız. Örneğin, f , N = 123,000'e uygulandığında f (123) ve f (0) olarak yürütülmelidir .
Test senaryoları
İşlev gösterimi n -> f(n)
örn n -> n == 0
. Tüm operatörler tamsayı aritmetiği varsaymaktadır. (Örn. sqrt(3) == 1
)
function f
integer N
boolean result
n -> n == n
1230192
true
n -> n != n
42
false
n -> n > 400
420000
false
n -> n > 0
0
false
n -> n -> 0
1
true
n -> sqrt(n) ** 2 == n
25121
true
n -> sqrt(n) ** 2 == n
4101
false
n -> mod(n, 2) == 0
2902414
true
n -> n % 10 > max(digits(n / 10))
10239120
false
n -> n % 10 > max(digits(n / 10))
123456789
true
n -> n > 0
uygulanmış 0
) eklemeniz gerekir.
[0]
.