Vor kurzem war mein Ruf 25,121
. Ich bemerkte, dass jede Zifferngruppierung (dh die durch Kommas getrennten Zahlen) ein perfektes Quadrat war.
Ihre Herausforderung besteht darin, bei einer nicht negativen ganzen Zahl N und einer unären booleschen Black-Box-Funktion f : Z * → B einen Wahrheitswert zu erhalten, wenn jeder Wert von f , der auf die Zifferngruppierungen von N angewendet wird, wahr ist, andernfalls falsch.
Sie finden die Zifferngruppierungen, indem Sie die Zahl von rechts nach rechts in Dreiergruppen aufteilen. Die Gruppe ganz links kann aus 1, 2 oder 3 Ziffern bestehen. Einige Beispiele:
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)
Zusätzliche Regeln
- Diese Funktion kann entweder auf Boolesche Werte (z. B.
true
undfalse
),1
s und0
s oder auf einen beliebigen Wert für "truthy / falsey" abgebildet werden. Bitte geben Sie an, welche Formate von Ihrer Antwort unterstützt werden. - Sie können eine Ganzzahl als Eingabe oder eine Ganzzahlzeichenfolge (dh eine aus Ziffern zusammengesetzte Zeichenfolge) verwenden.
- Sie können ein Programm oder eine Funktion schreiben.
- Wenn Sie die digitalen Gruppen an die Funktion f übergeben , sollten Sie alle unnötigen führenden Nullen kürzen. Beispielsweise sollte f , wenn es auf N = 123.000 angewendet wird, als f (123) und f (0) ausgeführt werden.
Testfälle
Funktionsnotation ist n -> f(n)
z n -> n == 0
. Alle Operatoren gehen von einer Ganzzahlarithmetik aus. (ZB 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
anwenden 0
), da die meisten Antworten darauf fehlschlagen.
[0]
.