Beschreibung
Wir betrachten eine ganze Zahl mit mindestens drei Ziffern als dreifach ausgeglichen, wenn sich bei einer Aufteilung in drei Teile die Ziffern in jedem Teil zu derselben Zahl summieren. Wir teilen die Zahlen wie folgt auf:
abcdefghi - Standard case: the number of digits is divisable through 3:
abc def ghi
abcdefgh - Number % 3 == 2: The outer groups are both assigned another digit
abc de fgh (the inner group will have one digit less than both outer groups)
abcdefghij - Number % 3 == 1: The inner group is assigned the extra digit
abc defg hij (the inner group will have one digit more than the outer groups)
Herausforderung
Ihre Aufgabe ist es, ein Programm zu schreiben, das bei einer mindestens dreistelligen Ganzzahl feststellt, ob die angegebene Zahl dreifach ausgeglichen ist, und basierend auf dem Ergebnis einen wahrheitsgemäßen oder falschen Wert ausgibt.
Testfälle
333 -> True
343 -> False
3123 -> True
34725 -> True
456456 -> False
123222321 -> True
Dies ist Code-Golf , so dass Standard-Lücken gelten und die kürzeste Antwort in Bytes gewinnen kann!
code-golf
number
arithmetic
decision-problem
racer290
quelle
quelle
when split in three parts,
Antworten:
Python 2 ,
938886 Bytes-4 Bytes dank @LeakyNun
-2 Bytes dank @ Mr.Xcoder
Probieren Sie es online!
quelle
Jelly , 23 Bytes
Probieren Sie es online!
Es muss einen kürzeren Weg geben, der irgendwie über meinen Kopf flog ...
quelle
Netzhaut , 89 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung: In der ersten Stufe werden am Anfang und am Ende der Eingabe Zeilenumbrüche eingefügt. Die zweite Stufe versucht dann, die Ziffern paarweise über die Zeilenumbrüche zu verschieben. Wenn jedoch nicht mehr genügend Ziffern in der Mitte vorhanden sind, kann die dritte Stufe sie zurückschieben, wodurch die Schleife angehalten wird. Die vierte Stufe wandelt dann jede Ziffer einzeln in eine unäre um und summiert sie, während die letzte Stufe einfach prüft, ob die Summen gleich sind.
quelle
Mathematica, 142 Bytes
quelle
Gelee , 20 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
MATL , 26 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
quelle
Javascript, 178 Bytes
quelle
([...b],s=~b.length/3|0,f=(m,v)=>+m+ +v,y=b.splice(s).reduce(f))=>b.splice(-s).reduce(f)==y&y==b.reduce(f)
(Vorsicht beim Kopieren aus Kommentaren, da Stack Exchange unsichtbare Zeichen einfügt).Java 8, 149 Bytes
Nimmt die Eingabe als
int[]
.Erläuterung:
Probieren Sie es hier aus.
Hier ist eine Übersicht der 0-indizierten (exklusiven) Teile für jede Länge:
a
Schleife von0
bis(length + 1) / 3)
(dieser Wert wird jetzt in gespeicherts
);b
Schleife vons
bislength / 3 * 2 +
(0
wenn Länge Modulo-3 0 ist;1
wenn Länge Modulo-3 1 oder 2 ist) (dieser Wert wird jetzt in gespeicherts
);c
wir machen eine Schleife vons
bislength
.(Alle drei Schleifen sind exklusiv mit 0 Indizes versehen.)
quelle
Röda , 82 Bytes
Probieren Sie es online!
Erläuterung:
quelle
JavaScript,
129, 104 BytesDie Funktion r schneidet die Zeichenfolge basierend auf den Parametern b und e, summiert dann die Ziffern und gibt den Wert zurück.
Um die richtigen Größen zu ermitteln, teilen wir die Länge durch 3 und runden das Ergebnis. Wenn Sie slice (0, result) aufrufen, erhalten Sie den ersten Block, slice (result, -result) den zweiten und slice (result) den letzten. Aufgrund der Art, wie ich slice aufrufe, habe ich slice (result, 4 * result) anstelle des letzten verwendet, aber es gibt das gleiche Ergebnis.
Zum Schluss vergleiche ich die Ergebnisse und stelle fest, dass die Werte gleich sind.
Edit: Gleiches Prinzip, besseres Golfen
quelle
&&
zu&
in JavaScript? Beide Second-Hand-Prüfungen (&&z
und&&y[1]==y[2]
) scheinen die Werte nicht zu ändern. Wenn dies möglich ist, sollte dies keine Auswirkungen auf das Ergebnis haben, was ich sehen kann.