Erweitern Sie eine Nummer
Ihre Aufgabe ist es, eine Ganzzahl größer als 0 folgendermaßen zu erweitern:
Teilen Sie die Zahl in Dezimalstellen auf und erstellen Sie für jede Ziffer eine Liste nach folgenden Regeln:
- Wenn die Ziffer ungerade ist, beginnt die Liste mit der Ziffer und geht auf 1 zurück.
- Wenn die Ziffer gerade ist, beginnt die Liste mit der Ziffer und geht bis zu 9.
- Wenn die Ziffer 0 ist, ist die Liste leer.
Notieren Sie die Listen für die ungeraden Zahlen unter den Ziffern und über den geraden. Richten Sie dann die Spalten oben aus und sammeln Sie die Ziffern in jeder Zeile, um Ganzzahlen zu bilden. Addieren Sie als letzten Schritt die Zahlen, um die Erweiterung der Zahl zu ermitteln.
Hier ist ein Beispiel für die oben genannten Regeln, die auf 34607 angewendet werden:
9
8
79
68
57
346 7 -> 399 7 -> 3997 -> 9418
2 6 288 6 2886
1 5 177 5 1775
4 66 4 664
3 5 3 53
2 4 2 42
1 1 1
Hier sind die Testfälle:
1: 1
2: 44
3: 6
44: 429
217: 1270
911: 947
2345: 26114
20067: 3450
34875632: 70664504
9348765347634763: 18406119382875401
Dies ist Code-Golf , also gewinnen die kürzesten Antworten in Bytes in jeder Sprache.
Antworten:
Gelee , 13 Bytes
Eine monadische Verbindung, die positive ganze Zahlen nimmt und zurückgibt.
Probieren Sie es online aus! oder sehen Sie sich die Testsuite an .
Wie?
quelle
Perl 6 ,
6866 BytesVersuch es
Versuch es
Erweitert:
quelle
APL (Dyalog) , 39 Bytes
Vollständiger Programmkörper. Fordert zur Eingabe von STDIN auf. Druckt das Ergebnis in STDOUT.
Probieren Sie es online aus!
Um den letzten Testfall korrekt anzuzeigen, wurde
⎕FR
( F loating-point R- Darstellung) auf 128-Bit-Dezimal und⎕PP
( P rint P- Genauigkeit) auf 34 Stellen eingestellt.⍞
Eingabeaufforderung zur Texteingabe von STDIN⍎¨
führe jede aus (erhält jede Ziffer als Zahl){
… Wenden Sie}¨
für jedes Element die folgende Funktion an, bei der das Argument dargestellt wird durch⍵
:2|⍵:
wenn ungerade (wörtlich "wenn" Teilungsrest, wenn durch 2 geteilt), dann:⌽
umkehren⍳
die ɩ ntegers von 1 bis⍵
das Argument⋄
sonst×⍵:
Wenn das Argument positiv ist (wörtlich "if" signum), dann:⌽
umkehren⍵
das Argument,
gefolgt von⍵
Streit↓
Elemente fallen aus⍳9
die die ɩ ntegers von 1 bis 9⋄
sonst⍬
leere Liste↑
Mischen (kombinieren) Sie diese Liste von Listen zu einer einzigen Matrix, wobei Sie rechts mit Nullen auffüllen⍉
transponieren↓
Teilen Sie diese Matrix in eine Liste von Listen auf0~⍨¨
Entfernen Sie alle Nullen aus jeder Liste10⊥¨
konvertieren Sie jede von Basis-10 in normale Zahlen (dies sammelt die Ziffern)+/
summiere die Zahlenquelle
JavaScript (ES6),
888382 ByteHinweis
9 - k < x || 9
spart ein Byte über9 - k >= x && 9
, generiert aber1
statt,0
wenn die Ungleichung überprüft wird. Es wäre ein Problem, wenn es dazu führen würde1 > k
, den falschen Pfad im äußeren Ternär auszulösen. Aber es würde das bedeutenk = 0
und deshalb9 - k = 9
können wir unmöglich9 - k < x
gleichzeitig haben.Testfälle
NB: Der letzte Testfall, der die Genauigkeit der JS-Nummer überschreitet, wurde entfernt.
Code-Snippet anzeigen
quelle
Japt , 18 Bytes
Probieren Sie es online aus!
quelle
Java 11,
210209191181 BytesOk, das hat eine ganze Weile gedauert (hauptsächlich, weil ich zuerst einen Fehler gemacht habe und jeden Schritt aufschreiben musste, um besser zu verstehen, was ich falsch gemacht habe). Kann höchstwahrscheinlich noch mehr Golf gespielt werden.
-18 Bytes dank @ceilingcat .
Erläuterung:
Probieren Sie es hier aus.
quelle
Pip , 28 Bytes
Probieren Sie es online aus!
Erläuterung
Wie die Schritte
34607
als Argument ablaufen :quelle
Pyth - 23 Bytes
Testsuite .
quelle
Haskell ,
106104 BytesProbieren Sie es online aus!
quelle
R ,
153146 BytesProbieren Sie es online aus!
Manchmal kann ich nicht sagen, ob ich beim Golfen nur Müll bin oder ob R ... Ich bines definitiv, der dank user2390246 7 Bytes gespart hat und mich an eine andere Möglichkeit erinnert hat, Ziffern zu extrahieren (die ich selbst vorgeschlagen habe). .Sie können ersetzen
strtoi
mitas.double
bekommen18406718084351604
für den letzten Testfall (was falsch ist ); R hat nur 32-Bit-Ganzzahlen.quelle
character->int
als ich anrief:
und dannstrtoi
trotzdem verwendete!Perl 5 , 120 + 1 (
-a
) = 121 BytesProbieren Sie es online aus!
quelle
Python 2 , 131 Bytes
Probieren Sie es online aus!
quelle
05AB1E , 16 Bytes
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Oder alternativ:
Erläuterung:
quelle
Burleske , 39 Bytes
Probieren Sie es online aus!
quelle