Herausforderung
Geben Sie eine gültige arithmetische Summe mit einigen fehlenden Zahlen aus und geben Sie den vollständigen Ausdruck aus.
Beispiel:
1#3 123
+ 45# => + 456
-------- --------
579 579
Eingang
- Das Ausdrucksformat kann ein Array
["1#3", "45#", "579"]
, eine Zeichenfolge"1#3+45#=579"
oder drei Eingaben seinf("1#3","45#","579")
Ausgabe
- Wie die Eingabe
- Sie müssen das Ergebnis nicht ausgeben
Anmerkungen
- Die fehlenden Zahlen werden mit einem
#
beliebigen anderen konstanten nicht numerischen Zeichen dargestellt - Angenommen, das Ergebnis enthält keine fehlende Nummer
- Angenommen, Input / Output besteht aus 2 Begriffen und einem Endergebnis
- Es sei sowohl Term> 0 als auch Ergebnis> = 2 angenommen
- Möglicherweise gibt es mehrere Lösungen. Sie können jeden ausgeben, solange das Summenergebnis übereinstimmt
Testfälle mit möglichen Ausgaben (hübsches Format)
#79 879
+ 44# => + 444
-------- --------
1323 1323
5#5 555
+ 3#3 => + 343
-------- --------
898 898
# 1
+ # => + 1
-------- --------
2 2
### 998
+ ### => + 1 PD: there are a lot of possible outputs for this one
-------- --------
999 999
123 123
+ # => + 1
-------- --------
124 124
9 9
+ #6 => + 46
-------- --------
55 55
#123651 1123651
+ #98# => + 7981
------------ -----------
1131632 1131632
Standard Code-Golfregeln gelten
code-golf
arithmetic
integer
Luis Felipe De Jesus Munoz
quelle
quelle
=
vertauschten seiten nehmen ? eg579=1#3+45#
Antworten:
Brachylog ,
2216 BytesProbieren Sie es online!
-6 Bytes dank @Fatelize
Erläuterung
quelle
{"#"∧Ị∋|}ᵐ²ịᵐ.k+~t
ist 4 Bytes kürzer. Ich bin mir nicht sicher, warum Sie etwas getan haben, das sich in Ihrer Karte verwickelt hat.Ṣ
verwenden"#"
, um zwei weitere Bytes zu sparen.JavaScript (ES6),
74.57ByteNimmt die Eingabe als an
(a)(b)(result)
, wobei a und b Zeichenfolgen mit.
unbekannten Ziffern sind und result eine Ganzzahl ist. Gibt ein Array mit 2 Ganzzahlen zurück.Probieren Sie es online!
Kommentiert
quelle
-~n
nicht gerecht sein kannn+1
und wieF=(c,n)=>
verwendet wurde. Jetzt, da Sie eine Erklärung hinzugefügt haben, macht alles Sinn.c
ist die dritte Eingabe,n
ist undefiniert (und~undefined
wird-1
unähnlichundefined+1
). Jetzt ist alles klar (und etwas, das ich leider nicht nach Java portieren kann, weshalb ich hauptsächlich versucht habe, es xD zu verstehen). PS: Gestern bereits positiv bewertet, daher habe ich nur eine Ihrer anderen Antworten positiv bewertet (die ich noch nicht positiv bewertet habe, es ist nicht viel verfügbar); pnull
manuell konvertiere-1
. Java hat jedoch ein (sehr) begrenztes Limit für rekursiven StackOverflow. Wenn Sie also eine rekursive Methode mit Zufälligkeit verwenden und hoffen, dass sie innerhalb von etwa 1024 rekursiven Aufrufen korrekt ist, funktioniert dies in Java sowieso nicht. Ah, gut. Ich habe deinen Tipp positiv bewertet. Ein schönes Wochenende wünsche ich ihnen! :)###+###=999
Ihre Gewinnchancen sind 1 zu 1000. Mit 1024 Iterationen sollten Sie also etwas häufiger erfolgreich sein, als Sie scheitern. :)Matlab,
143134132119115 Bytes-4 Bytes dank @Luismendo
Probieren Sie es online
Ziemlich groß und ziemlich dumm. Es ersetzt einfach alle
#
durch zufällige Ziffern, bis es die richtigen findet.quelle
R ,
6751 BytesRocke einfach und skaliere fürchterlich, greife einfach nach allen Summenkombinationen. Verwenden "." für unbekannte Ziffern. Es wird nicht die gleiche Antwort wie im Testfall Nummer 4 gefunden, aber es wird eine mögliche Antwort angezeigt, die dem Buchstaben der angegebenen Regeln folgt.
-16 Bytes durch Greifen nach dem Bilden der Ausgabe und Ersetzen
paste
durch den?
Operator.Probieren Sie es online!
quelle
?
... Ich denke, dies ist eine Premiere. Übrigens habe ich vergessen, ob ich es dir bereits gesagt habe, aber wir versuchen, R für die September-Sprache des Monats nominiert zu bekommen - du kannst upvoten, wenn du es noch nicht getan hast.Holzkohle , 32 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Bewegen Sie zwei Zeichenfolgen
0
in die vordefinierte leere Listeu
, um die while-Schleife zu aktivieren.Wiederholen Sie diesen Vorgang, während die Summe der in
u
Ganzzahl umgesetzten Werte nicht dem gewünschten Ergebnis entspricht.Erstellen Sie ein Array der beiden Eingaben und ordnen Sie es zu.
Ersetzen Sie jede
#
durch eine zufällige Ziffer und weisen Sie das Ergebnis wieder zuu
.Drucken Sie das Ergebnis rechtsbündig aus. (Linksbündig wäre nur
υ
für eine 4-Byte-Speicherung.)quelle
Gelee , 20 Bytes
Probieren Sie es online!
quelle
05AB1E (Legacy),
23 bis20 Byte-3 Bytes dank @Emigna .
Unbekannte Ziffern sind Leerzeichen (
). Die Eingabereihenfolge sollte wie folgt lauten: erwartetes Ergebnis; längste Saite; kürzeste Saite.
Probieren Sie es online aus .
Erläuterung:
quelle
Perl 6 ,
8174 Bytes-7 bytes dank nwellnhof!
Probieren Sie es online!
Anonymer Codeblock, der Eingaben als Zeichenfolge mit einem arithmetischen Ausdruck akzeptiert, z. B. "12 # + 45 # = 579". Ersetzt jedes
#
durch mögliche Ziffernpermutationen, ersetzt das=
mit==
und findet das erste gültige Ergebnis.Erläuterung:
quelle
S:g[\#]=$a[$++]
anstatttrans
für 74 Bytes .S///
diese Art von Syntax verwenden können! Vielen Dank!APL (Dyalog Unicode) , 22 Byte
Probieren Sie es online!
quelle
Java 10,
203198193 BytesProbieren Sie es online aus.
Erläuterung:
quelle
C (gcc) ,
228213203172170 Bytes-15 Bytes dank @ceilingcat . Ich habe noch nie benutzt
index
.-10 Bytes dank @Logem . Präprozessor-Magie
überarbeiteter Aufruf von
exit(0)
mit Puts als Parameter.Probieren Sie es online!
quelle
-DX=c=index(v
durch den-DX=(c=index(v
TIO-Link in meinem letzten Kommentar .C # .NET,
225220196 BytesPort meiner Java 10 Antwort .
(Ich bin sehr verrostet in C # .NET Golf, kann also definitiv Golf gespielt werden.)
-3 Bytes implizit dank @ user82593 und diesem neuen C # -Tipp, den er hinzugefügt hat .
-29 Bytes dank @hvd .
Probieren Sie es online aus.
Erläuterung:
quelle
using System;
stattdessen das reguläre verwenden, es ist kürzer alsnamespace System{}
.using System.*;
ähnlich wie Importe in Java versucht , aber das hat nicht funktioniert. Habe vergessen, dass ich das.*
Teil entfernen musste .. Danke für die -5 Bytes.int.Parse
(-4), verwendennew System.Random()
(+7) und löschenusing System;
(-13), um weitere 10 Bytes zu speichern. :) Auch brauchst du nicht.ToCharArray()
, das zieht 14 weitere Bytes ab.int.Parse
vsSystem.Int32.Parse
... Es ist im Grunde das gleiche wieSystem.String
undstring
.. Und nicht wusste , war es möglich, eine Schleife über die Charaktere , ohne die.ToCharArray()
. Danke für weitere -24 Bytes. : DPython 3 ,
121155152149 BytesProbieren Sie es online!
+34 Neue Lösung mit Regex, um die Tatsache zu umgehen, dass Python keine Zahlen mit führenden Nullen unterstützt.
-3 danke an @Jonathan Frech
Die alte Lösung funktioniert nicht, wenn # das erste Zeichen in einer Zahl ist (weil eval keine führenden Nullen akzeptiert) und daher ungültig ist :(
Probieren Sie es online!
quelle
PHP, 112 Bytes
Lahme Brute-Force-Lösung
Nimmt string als Eingabe, stoppt bei der ersten Lösung. Laufen Sie als Pipe mit
-nR
oder versuchen Sie es online .quelle
Powershell, 91 Byte
Das Skript findet alle Lösungen. Die Gesamtzahl der Iterationen beträgt 10 Potenzen der Anzahl der Zeichen
#
. Die Rekursionstiefe entspricht der Anzahl der Zeichen#
.Testskript:
Powershell, 'Angenommen, beide Begriffe> 0' sind obligatorisch, 110 Bytes
quelle