Herausforderung
Berechnen Sie die seltsame Summe zweier natürlicher Zahlen (auch Mondaddition genannt):
Gegeben A=... a2 a1 a0
und B=... b2 b1 b0
zwei natürliche Zahlen im Dezimalsystem Basis geschrieben, die seltsame Summe definiert ist , auf der Basis des maximalen Betrieb, wie:
A+B=... max(a2,b2) max(a1,b1) max(a0,b0)
... a2 a1 a0
+ ... b2 b1 b0
----------------------------------------
... max(a2,b2) max(a1,b1) max(a0,b0)
Eingang
Zwei natürliche Zahlen
Folgendes ist erlaubt:
- Null gepolsterte Saiten (gleiche Länge)
- Mit Leerzeichen gepolsterte Zeichenfolgen
- Mit Leerzeichen aufgefüllte Saiten
- Array von zwei gepolsterten Zeichenfolgen
- 2D-Leerzeichenfeld
Ausgabe
Eine natürliche Zahl
Beispiel
1999+2018-->2999
17210+701-->17711
32+17-->37
308+250-->358
308+25-->328
Regeln
- Die Ein- und Ausgabe kann in jedem beliebigen Format erfolgen (wählen Sie das für Ihre Sprache / Lösung am besten geeignete Format).
- Es müssen keine negativen Werte oder ungültige Eingaben verarbeitet werden
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
code-golf
math
arithmetic
mdahmoune
quelle
quelle
Antworten:
Python 2 , 20 Bytes
Probieren Sie es online!
E / A als mit 0 aufgefüllte Ziffernlisten.
quelle
Gelee , 1 Byte
Probieren Sie es online!
E / A als mit 0 aufgefüllte Ziffernlisten.
quelle
R ,
6865 BytesProbieren Sie es online!
Eingabe als Ganzzahl, Ausgabe als Ziffernliste.
Wenn Zero-Padding-Listen von Ziffern erlaubt
pmax
wären, würde dies einfach ausreichen.quelle
MATL , 2 Bytes
Das Eingabeformat ist: 2D-Zeichen-Array mit zwei Zeilen, die jeweils einer Zeile entsprechen, wobei die kürzere Zahl links mit Leerzeichen aufgefüllt ist. Beispielsweise
was in MATL definiert ist als
Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
736056 BytesProbieren Sie es online!
Nimmt die Eingabe als zwei Zeichenfolgen und gibt eine Liste mit Ziffern zurück
Alternative:
Nimmt die Eingabe als zwei Ganzzahlen auf; gleiche Ausgabe
Python 2 ,
6059 BytesProbieren Sie es online!
quelle
Java 10,
7857 BytesEingabe als zwei mit Leerzeichen aufgefüllte Zeichenfelder.
Ändert das erste Input-Array, anstatt ein neues zurückzugeben, um 21 Bytes zu sparen (danke an @ OlivierGrégoire ).
Probieren Sie es online aus.
Erläuterung:
quelle
a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}
( 57 Bytes ).a
Als Ausgabe wiederverwenden , um viel, viel Bytes zu gewinnen.J ,
14-12Bytes-2 Bytes danke an Jonah
Probieren Sie es online!
Ein- und Ausgabe als Ziffernliste
quelle
(>./@,:)&.|.
. Probieren Sie es online!Japt,
987 BytesÜbernimmt die Eingabe als Array von Ziffern-Arrays.
Versuch es
Wenn die Eingabe von Arrays mit Null-Auffüllungen zulässig ist (dies würde derzeit unter ein "praktisches Format" fallen, aber ich vermute, dass dies nicht die Absicht des Herausforderers ist), können dies 3 Bytes sein.
Versuch es
quelle
y
jetzt eine Verknüpfung ? Ich wusste das nicht. Hier ist ein anderer Weg , auch 8 Bytes.'
. Ich weiß nicht, ob das jemals Bytes sparen würde, aber es ist definitiv cool.Perl 6 , 37 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als Liste von Ziffernlisten.
quelle
05AB1E ,
9 65 Bytes-3 danke an Emigna
-1 danke an Shaggy
Nimmt die Eingabe als Liste von Ziffernlisten
Probieren Sie es online! oder Probieren Sie alle Testfälle aus
quelle
€R
kann seiní
. Außerdem glaube ich nicht, dass Sie€þ
alsnumber > space
€þ
und es hat nicht funktioniert, aber jetzt tut es ...J
am Ende?Perl 6 , 15 Bytes
Probieren Sie es online!
Nimmt Eingaben als eine Liste von mit Leerzeichen aufgefüllten Zeichenfeldern, obwohl es für diese Herausforderung aufgrund des laxen Eingabeformats ziemlich langweilig ist. Alternativ ist hier das Programm, das stattdessen eine Liste mit zwei ganzen Zahlen erstellt:
Perl 6 , 41 Bytes
Probieren Sie es online!
Wenn Ihnen eine große Menge an Leerzeichen nichts ausmacht, können Sie diese auch
+
von der Vorderseite entfernen .Erläuterung:
quelle
Haskell , 40 Bytes
Eingabe / Ausgabe als Zeichenketten, online ausprobieren!
Erläuterung
Die Funktion
p
ersetzt jedes Zeichen durch ein Leerzeichenp b++a
und hatp a++b
damit die gleiche Länge. Auf diese Weise können wir verwenden,zipWith
ohne Elemente zu verlieren. Die Verwendungmax
funktioniert, da a(Leerzeichen) einen niedrigeren Codepunkt als jedes der Zeichen hat
['0'..'9']
.quelle
JavaScript (ES6),
5149 ByteNB: Diese Antwort wurde veröffentlicht, bevor die losen E / A-Formate ausdrücklich zugelassen wurden. Bei mit Nullen aufgefüllten Ziffernfeldern kann dies in 33 Bytes erfolgen (ist aber meiner Meinung nach viel weniger interessant).
Nimmt die Eingabe als zwei Ganzzahlen. Gibt eine ganze Zahl zurück.
Probieren Sie es online!
Kommentiert
Alternative Version
Gleiches E / A-Format.
Probieren Sie es online!
quelle
Tcl , 156 Bytes
Probieren Sie es online!
Nicht sehr golfig, aber ich musste es versuchen. Wird es später Golf spielen!
quelle
Batch, 120 Bytes
Übernimmt Eingaben als Befehlszeilenparameter. Die 188-Byte-Version kann für Ganzzahlen beliebiger Länge verwendet werden:
Übernimmt die Eingabe für STDIN.
quelle
Zweig , 125 Bytes
Als ich diese Herausforderung sah, dachte ich mir: "Lass mich eine Vorlagensprache verwenden! Sicher passt das."
Ich habe mich geirrt ... so falsch ... aber es hat Spaß gemacht!
Dies setzt voraus, dass "strict_variables" auf
false
(Standardwert) gesetzt ist.Um dieses Makro zu verwenden, können Sie wie folgt vorgehen:
Sollte 167 anzeigen.
Sie können dies unter https://twigfiddle.com/rg0biy versuchen
("strict_variables" ist deaktiviert und auf der Website standardmäßig aktiviert).
quelle
Schale , 5 Bytes
Nimmt die Eingabe / Ausgabe bequem als Ziffernliste, probiert sie online aus oder überprüft alle!
Erläuterung
quelle
Stax , 5 Bytes
Führen Sie es aus und debuggen Sie es
Dieses Programm nimmt Eingaben als Array von Zeichenfolgen entgegen.
Führen Sie dieses aus
Dies ist das erste Mal, dass ich eine Verwendung für die Overlay-Anweisung "in the wild" gesehen habe.
quelle
SNOBOL4 (CSNOBOL4) , 153 Bytes
Probieren Sie es online!
quelle
Pyth, 5 Bytes
Übernimmt die Eingabe als Array von zwei mit Leerzeichen aufgefüllten Zeichenfolgen.
Probieren Sie es hier aus .
quelle
Japt , 4 Bytes
Die Eingabe wird als Array von zwei mit 0 aufgefüllten Zahlen-Arrays interpretiert.
Probieren Sie es online!
quelle
Ceylon, 55/99
Mit 0- oder mit Leerzeichen aufgefüllten Zeichenfolgen gleicher Länge (die eine Iterationsfolge von Zeichen zurückgeben):
Mit mit 0 oder Leerzeichen aufgefüllten Zeichenfolgen (Rückgabe einer Zeichenfolge):
Mit Zeichenketten von möglicherweise unterschiedlicher Länge (Rückgabe einer Zeichenkette):
quelle
C # (.NET Core) , 57 Byte
-1 Bytes durch Hinzufügen von currying
Probieren Sie es online
quelle
Ruby , 25 Bytes
Probieren Sie es online!
Vorgefüllte Liste bla bla. (Obwohl es sich ein bisschen wie Schummeln anfühlt.)
quelle
Retina 0.8.2 , 39 Bytes
Probieren Sie es online! Link enthält Testsuite. Die vorherige 45-Byte- Version von Retina 1 akzeptiert nicht gepolsterte Zeichenfolgen:
Probieren Sie es online! Link enthält Testsuite. Erläuterung:
Füllen Sie beide Werte auf die gleiche Länge auf. (Nur Retina 1. Es gibt Möglichkeiten, dies in Retina 0.8.2 zu emulieren, aber sie sind nicht sehr golfen.)
Transponieren Sie die Werte.
Sortieren Sie jedes Paar in der Reihenfolge.
Löschen Sie alle niedrigen Stellen und überschüssigen Zeilenumbrüche.
quelle
Kohle , 8 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
10-Byte-Version "fügt" beliebig viele gepolsterte Zeichenfolgen hinzu:
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Die vorherige 14-Byte-Version akzeptiert ungepolsterte Zeichenfolgen:
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Die 17-Byte-Version "fügt" eine beliebige Anzahl von Zeichenfolgen hinzu:
Probieren Sie es online! Link ist eine ausführliche Version des Codes.
quelle
Mathematica 50 Bytes
a = 543; b = 791;
(* 793 *)
quelle