Baru-baru ini, reputasi saya adalah 25,121
. Saya perhatikan bahwa setiap pengelompokan digit (yaitu angka yang dipisahkan oleh koma) adalah kuadrat sempurna.
Tantangan Anda adalah, diberi bilangan bulat non-negatif N dan fungsi Kotak Hitam boolean unary f : Z * → B , menghasilkan nilai kebenaran jika setiap nilai f yang diterapkan pada pengelompokan digit N adalah benar, dan sebaliknya falsey.
Orang dapat menemukan pengelompokan digit dengan membagi angka menjadi kelompok-kelompok 3, mulai dari sisi kanan. Grup paling kiri mungkin memiliki 1, 2, atau 3 digit. Beberapa contoh:
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)
Aturan tambahan
- Fungsi ini dapat memetakan ke boolean (misalnya
true
danfalse
),1
s dan0
s, atau nilai true / falsey. Silakan tentukan format mana yang didukung oleh jawaban Anda. - Anda dapat mengambil integer sebagai input, atau string integer (yaitu string yang terdiri dari digit).
- Anda dapat menulis program atau fungsi.
- Saat meneruskan grup digital ke fungsi f , Anda harus memangkas semua nol terkemuka yang tidak perlu. Misalnya, f , ketika diterapkan pada N = 123.000 harus dieksekusi sebagai f (123) dan f (0).
Uji kasus
Notasi fungsi n -> f(n)
, misalnya n -> n == 0
,. Semua operator mengasumsikan bilangan bulat aritmatika. (Misalnya, 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
diterapkan ke 0
) ke kasus uji karena sebagian besar jawaban gagal di atasnya.
[0]
.