Нещодавно моя репутація була 25,121
. Я помітив, що кожне згрупування цифр (тобто числа, розділені комами) було ідеальним квадратом.
Ваша задача полягає в тому, що враховуючи невід'ємне ціле число N та одинарну булеву функцію чорного поля f : Z * → B , дайте значення truthy, якщо кожне значення f, застосоване до розрядних угруповань N, є truthy, а фальси в іншому випадку.
Дізнатися згруповання цифр можна, поділивши число на 3 групи, починаючи з правого боку. У крайній лівій групі може бути 1, 2 або 3 цифри. Деякі приклади:
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)
Додаткові правила
- Ця функція може зіставляти або булеві (наприклад,
true
таfalse
),1
s і0
s, або будь-які значення truthy / falsey. Вкажіть, будь ласка, який формат підтримується вашою відповіддю. - Ви можете взяти ціле число як вхідне чи ціле число (тобто рядок, що складається з цифр).
- Ви можете написати програму або функцію.
- Передаючи цифрові групи до функції f , слід обрізати всі непотрібні провідні нулі. Наприклад, f при застосуванні до N = 123 000 слід виконати як f (123) і f (0).
Тестові справи
Функція позначення n -> f(n)
, наприклад, n -> n == 0
. Усі оператори приймають арифметику з цілим числом. (Наприклад, 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
застосовано 0
) до тестових випадків, оскільки більшість відповідей не відповідають на них.
[0]
.