Di recente, la mia reputazione è stata 25,121
. Ho notato che ogni raggruppamento di cifre (ovvero i numeri separati da virgole) era un quadrato perfetto.
La tua sfida è, dato un numero intero non negativo N e una funzione black box unaria booleana f : Z * → B , produce un valore di verità se ogni valore di f applicato ai gruppi di cifre di N è vero, e falso altrimenti.
Si possono trovare i raggruppamenti delle cifre suddividendo il numero in gruppi di 3, iniziando dal lato destro. Il gruppo più a sinistra può contenere 1, 2 o 3 cifre. Qualche esempio:
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)
Regole aggiuntive
- Questa funzione può mappare sia booleani (es
true
efalse
),1
s e0
S o qualsiasi valore truthy / falsey. Specifica quali formati sono supportati dalla tua risposta. - È possibile prendere un numero intero come input o una stringa intera (ovvero una stringa composta da cifre).
- È possibile scrivere un programma o una funzione.
- Quando si passano i gruppi digitali alla funzione f , è necessario tagliare tutti gli zero iniziali non necessari. Ad esempio, f , quando applicato a N = 123.000 dovrebbe essere eseguito come f (123) ef (0).
Casi test
La notazione di funzione è n -> f(n)
, ad es n -> n == 0
. Tutti gli operatori assumono l'aritmetica dei numeri interi. (Ad es. 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
applicato a 0
) ai casi di test perché la maggior parte delle risposte fallisce.
[0]
.