Недавно моя репутация была 25,121
. Я заметил, что каждая группа цифр (то есть числа, разделенные запятыми) была идеальным квадратом.
Ваша задача состоит в том, чтобы, учитывая неотрицательное целое число N и унарную булеву функцию черного ящика f : Z * → B , получить истинное значение, если каждое значение f, примененное к группировкам цифр N , истинно, и ложно в противном случае.
Можно найти группировку цифр, разбив число на группы по 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, либо любое значение truey / 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]
.