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.
trueundfalse),1s und0s 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 > 0anwenden 0), da die meisten Antworten darauf fehlschlagen.
[0].