Herausforderung
Suchen Sie bei einer durch 9 teilbaren ganzen Zahl und einer fehlenden Stelle die fehlende Stelle.
Die fehlende Ziffer kann durch ein beliebiges anderes Zeichen als die Ziffern 0-9 dargestellt werden, sofern dies konsistent ist.
Wenn die fehlende Ziffer 0 oder 9 sein könnte, geben Sie etwas aus, um dies zu kennzeichnen.
Angenommen, der Benutzer ist intelligent genug, um nur eine fehlende Ziffer und eine Zahl usw. einzugeben.
Testfälle
In den Testfällen wird die fehlende Ziffer durch ein Fragezeichen dargestellt
123? -> 3
?999 -> 0 or 9
?0023 -> 4
000?1 -> 8
code-golf
math
arithmetic
NK1406
quelle
quelle
0
? Was ist mit[0, 9]
(Array oder Liste von 2 Zahlen)??
eine mögliche Eingabe?Antworten:
Python , 21 Bytes
Probieren Sie es online!
Früher habe ich
I
eine fehlende Ziffer dargestellt.quelle
Alice , 12 Bytes
Probieren Sie es online!
Gibt aus,
0
ob das Ergebnis 0 oder 9 sein kann.Erläuterung
quelle
&
kann entfernt werden, da der Kardinalmodus die ursprüngliche Eingabe als höchstens 2 Ganzzahlen interpretiert.JavaScript (ES6), 40 Byte
Gibt 9 aus, wenn 0 oder 9 sein könnte.
quelle
f=
; anonyme Funktionen sind vollkommen gültig.Japt, 7 Bytes
Versuchte ein paar Lösungen, aber die kürzeste war ähnlich wie die meisten anderen, außer dass wir die
?
am Anfang nicht ersetzen müssen .Kann jedes nicht numerische Zeichen als fehlende Ziffer annehmen. Gibt aus,
0
wann die Lösung das oder sein kann9
.Versuch es
Erläuterung
Implizite Eingabe eines Strings
U
.¬
Teilt sich in ein Array einzelner Zeichen,x
verkleinert das Array, indem alle nicht numerischen Elemente ignoriert werden,*J
multipliziert jedes Element mit -1 undu9
erhält den positiven Modul des Ergebnisses.quelle
JavaScript (ES6), 18 Byte
Erwartet eine
+
als fehlende Ziffer. Gibt9
für 0 oder 9 zurück .Testfälle
Code-Snippet anzeigen
quelle
05AB1E ,
76 BytesEine Ausgabe von
0
bedeutet, dass das Ergebnis entweder 0 oder 9 sein kann .Probieren Sie es online! oder als Testsuite
Erläuterung
quelle
Python 2 ,
444135 Bytes-6 Bytes dank RiaD
Probieren Sie es online!
Benutzer
]
für fehlende Ziffer.Gibt aus,
0
ob die fehlende Ziffer 0 oder 9 sein könnte.quelle
0
für einen mehrdeutigen Fall auszugeben, was seit dem9%9 == 0
Pyth,
97 BytesVerwendet Leerzeichen als Begrenzer und gibt 0 zurück, wenn das Ergebnis 0 oder 9 sein könnte.
Probieren Sie es online aus
Erläuterung
quelle
Prolog (SWI) , 59 Bytes
Probieren Sie es online!
Yay für die logische Programmierung!
Erläuterung
Zuerst machen wir ein Prädikat
*
, das gilt, wenn es auf Null und die leere Liste angewendet wird. Unser Prädikat gilt auch, wenn der Listenanfang zwischen 0 und 9 liegt und wenn wir die führende Ziffer mod 9 hinzufügen, gilt das Prädikat.Wir definieren dann,
+
nur dieses Prädikat zu sein0
als erstes Argument verwendet wird. Das heißt, wir wollen, dass die digitale Summe ein Vielfaches von 9 ist.Prolog erledigt das Grunzen, um tatsächlich Lösungen für uns zu finden.
quelle
Befunge-93 , 16 Bytes
Probieren Sie es online!
Eine einzeilige Version von James Holderness 'Befunge-Antwort , die es schafft, zwei Bytes zu sparen . Dadurch wird der Code im Wesentlichen auf eine Zeile komprimiert, die Richtung umgekehrt und die Tatsache ausgenutzt, dass Befunge nicht am Zeilenende überspringt. Er schlug vor, dass ich eine separate Antwort mit einer Erklärung verfasse. Der Code nimmt ein * als Darstellung der fehlenden Ziffer und gibt eine 9 für entweder 0 oder 9 aus.
Wie es funktioniert
*
(ASCII-Wert 42) wurde als fehlendes Zeichen gewählt, da es dem Anfangswert der Ziffer 3 entgegenwirkt.quelle
LaTeX, viele Bytes (
1000628614)LaTeX, unleserlich (
348334 Bytes)LaTeX, 132 Bytes
In diesem Code ist nur Leerzeichen als unbekannte Ziffer zulässig.
quelle
J ,
14-12Bytes-2 Bytes dank @BolceBussiere
Ich weiß ehrlich gesagt nicht warum
"."0
interpretiert?
als 0 aber dies geschieht auf meinem Interpreter und auf TIO, so dass ich es nicht in Frage stellen werde. (Update: Eine Erklärung dafür finden Sie in den Kommentaren.)Dieser Ansatz nimmt sehr einfach die Summe der Ziffern, negiert sie durch Subtrahieren von 9 und nimmt sie modulo 9.
Probieren Sie es online!
quelle
Jelly ,
1196 BytesErläuterung
Eine Ausgabe von 0 bedeutet, dass das Ergebnis entweder 0 oder 9 sein kann.
Probieren Sie es online!
2 Bytes gespart dank Mr. Xcoder . Bei Verwendung von Each quick (
€
) während der Auswertung wurde die Aufteilung der Nummer in Ziffern überflüssig.3 Bytes gespart dank Dennis . Kann die Eingabe bitweise ODER mit 0 verknüpfen, anstatt die Eingabe manuell als Zahl zu analysieren, während führende Nullen und Nicht-Ziffern entfernt werden.
quelle
|0
funktioniert stattfØDV€
.Schnell , 51 Bytes
Probieren Sie es online!
quelle
Befunge-93 (PyFunge) ,
2221 BytesIch erkannte, dass ich nicht verwenden muss, um
?
die abwesende Ziffer darzustellen, also verwendete ich eine, die ein Vielfaches von 9 ist, nachdemx
ich 48 subtrahiert hatte: Dies ließ mich das Golf spielen
3+
, aber es sparte mir nur 1 Byte wegen der Länge des erste Zeile vor der Bedingung :(Ein Port meiner Befunge-98-Antwort:
5 weitere Bytes, um zu überprüfen, ob wir EOF erreicht haben,
1 weiteres Byte, um 48 (
"0"
vs'0
) zu drücken ,1 weiteres Byte, um die Antwort mit zu drucken
.@
,und 1 weiteres Byte, weil das zweite Zeile hat Platz
für insgesamt 8 weitere Bytes.
Probieren Sie es online!
Gibt aus,
0
ob die fehlende Ziffer 0 oder 9 sein könnte.Dies funktioniert nur im PyFunge-Interpreter aus den nachfolgend erläuterten Gründen.
Erläuterung
Ein Großteil dieser Erklärung wurde aus meiner Befunge-98-Erklärung kopiert , da dieses Programm diesem sehr ähnlich ist. schamloser Stecker
In der ersten Zeile des Programms addieren wir die Ziffern, einschließlich des x, das aufgrund seines ASCII-Werts wie eine 72 behandelt wird. Die Summe wird jedoch dieselbe sein, sobald wir um 9 modifiziert haben. Dies ist also irrelevant.
Wenn wir nur um 9 modifizieren würden, würden wir mit der falschen Ziffer belassen, weil wir wollen
9 - (sum % 9)
. Wir können jedoch besser als9\-
, was den Rest von 9 abziehen würde: Wenn wir die Summe vor dem Modifizieren durch 9 negativ machen, erhalten wir ein positives Ergebnis, das9 - (sum % 9)
einigen Interpreten entspricht. Aus diesem Grund müssen wir die PyFunge-Interpreter für Befunge 93 und 98 verwenden, da dies der einzige von TIO ist, der dies ausführt. Die anderen geben uns einen Wert zwischen -8 und 8 anstelle von 0 und 8quelle
Befunge-98 (PyFunge) ,
15 bis13 BytesIch erkannte, dass ich nicht verwenden muss, um
?
die abwesende Ziffer darzustellen, also verwendete ich eine, die ein Vielfaches von 9 ist, nachdemx
ich 48 subtrahiert hatte
3+
.Probieren Sie es online!
Verwendet eine
x
als fehlende Ziffer, da der ASCII-Wert nach Subtraktion von 48 durch 9 teilbar ist (und es ist schön, weil er in der Mathematik häufig als Variable verwendet wird).Ausgabe über Exit-Code (weil
q
ein Byte kürzer ist als.@
)Gibt aus,
0
ob die fehlende Ziffer 0 oder 9 sein könnte.Dies funktioniert nur im PyFunge-Interpreter aus den nachfolgend erläuterten Gründen.
Erläuterung
In der ersten Zeile des Programms addieren wir die Ziffern, einschließlich der
x
, die aufgrund ihres ASCII-Werts wie eine 72 behandelt werden. Die Summe wird jedoch dieselbe sein, sobald wir um 9 modifiziert haben. Dies ist also irrelevant.Wenn wir nur um 9 modifizieren würden, würden wir mit der falschen Ziffer belassen, weil wir wollen
9 - (sum % 9)
. Wir können jedoch besser als9\-
, was den Rest von 9 abziehen würde: Wenn wir die Summe vor der Modifikation durch 9 negativ machen, erhalten wir ein positives Ergebnis, das9 - (sum % 9)
einigen Interpreten entspricht . Aus diesem Grund müssen wir die PyFunge-Interpreter für Befunge 93 und 98 verwenden, da dies der einzige von TIO ist, der dies ausführt. Die anderen geben uns einen Wert zwischen -8 und 8 anstelle von 0 und 8.quelle
Ruby , 22 Bytes
Verwendet
'
(jedes Zeichen, das einen Abstand zu hat0
durch "0" teilbar ist, reicht aus, einschließlich0
selbst).Eine Ausgabe von
0
bedeutet entweder0
oder9
.Probieren Sie es online!
Erläuterung
quelle
Ruby ,
46, 41 Bytes-5 Danke an @Unihedron
Probieren Sie es online!
quelle
chars
statt.split(//)
2.'<'
können ersetzt werden durch?<
chars
Befunge-93,
28271918 BytesKredit muss zu gehen Mistah Figgins gehen , deren PyFunge-Antwort mir zeigte, dass Sie keine spezielle Prüfung für das fehlende Ziffernzeichen benötigen, wenn Sie nur sicherstellen, dass der ASCII-Wert ein Vielfaches von neun ist.
Zusätzlicher Dank geht an Jo King, der gezeigt hat, dass Sie die Zeichen nicht vollständig in ihre numerischen Äquivalente umwandeln müssen und einfach 3 subtrahieren können, um einen Wert zu erhalten, der relativ zur Basis 9 ist (ASCII
0
minus 3 ist 45, ein Vielfaches von 9). .Probieren Sie es online!
Damit dies funktioniert, sollten Sie den Charakter verwenden
*
für die fehlende Ziffer verwenden (es gibt andere, die ebenfalls funktionieren könnten, aber das ist das Schönste).Gibt aus,
9
ob die fehlende Ziffer 0 oder 9 sein könnte.Erläuterung
Im Wesentlichen berechnen wir die Summe aller Ziffern plus 45 pro Ziffer (was letztendlich gelöscht wird, wenn wir mit 9 modifizieren). Diese Summe wird von 3 (unserer Startsumme) abgezogen, und weitere 39 werden von der fehlenden Ziffer (ASCII) abgezogen
*
minus drei) . Auch hier ist 3 minus 39 ein Vielfaches von 9, also wird es aufgehoben, wenn wir mit 9 modifizieren.Am Ende berechnen wir also die negative Summe aller Ziffern, Mod 9 plus 9, dh
Und das gibt uns die fehlende Ziffer.
quelle
Befunge-98 (PyFunge) , 8 Bytes
Probieren Sie es online!
Ausgänge über Exit-Code. Wie bei Mistah Figgins Antwort funktioniert es nur bei Pyfunge, wo eine negative Zahl von Mod 9 positiv wird. Verwendet ein x als fehlende Ziffer.
quelle
PowerShell , 40 Byte
Probieren Sie es online! oder Überprüfen Sie alle Testfälle
Nimmt gerne Eingaben
'123x'
in$a
. Konstruiert einen Bereich0
für9
und verwendetWhere-Object
(hier abgekürzt als|?
), um die Ganzzahlen zu ermitteln, die mit der Klausel übereinstimmen. Die Klausel nimmt an$a
, führt einen regulären Ausdruck durch-replace
, um denx
durch die aktuelle Ziffer zu ersetzen,$_
und erhält den Mod 9 mit%9
. Wenn sich also 9 gleichmäßig teilt, ist dies Null. Wir nehmen das Boolesche-Nicht davon, wodurch die Nullen wahr und alles andere falsch werden, so dass die Where-Object-Klausel erfüllt wird. Diese Ergebnisse verbleiben in der Pipeline und die Ausgabe ist implizit.quelle
Haskell , 35 Bytes
Probieren Sie es online!
quelle
Retina ,
353425 BytesWenn das
?
möglich ist0 or 9
, wird das Ergebnis als angezeigt9
.Probieren Sie es online aus
Erläuterung
quelle
\d
kann in gerecht.
und die folgende Zeile in geändert werden$*
.?
noch nicht entfernt, als ich das schrieb.Perl 5 , 23 Bytes
Probieren Sie es online!
Es ist egal, welches Zeichen die fehlende Ziffer kennzeichnet, solange es sich nicht um eine Ziffer handelt.
quelle
Tcl, 53 Bytes
Wie bei anderen Antworten wird dies verkürzt, indem nicht explizit „0 oder 9“ gesagt wird.
Stattdessen bedeutet ein Ergebnis von „9“ entweder 0 oder 9.
Probieren Sie es online!
Erläuterung
Das funktioniert ganz einfach. Es verwendet einen regulären Ausdruck, um:
FragezeichenZiffern sind.Es wertet dann 9 - (sum_of_digits mod 9) aus, um einen endgültigen Wert in 1..9 zu erhalten, den es dann
puts
.Die führende 0 (in
0$argv
) ist erforderlich, falls das Fragezeichen bei der Eingabe an erster Stelle steht. Ein vorangestelltes Pluszeichen in der transformierten Sequenz ist kein Problem fürexpr
.quelle
Pyth , 8 Bytes
Probieren Sie es online!
Verwendet
I
anstelle von?
.quelle
APL (Dyalog) , 13 Bytes
Probieren Sie es online!
Die fehlende Ziffer ist
⍬
.quelle
Brainfuck , 50 Bytes
Probieren Sie es online!
Gibt eine 9 für 0 oder 9 aus. Ein fehlendes Zeichen wird dargestellt durch:
Wie es funktioniert
Das fehlende Zeichen muss ein Zeichen sein, das eine Mod 9 von 4, +3 hat, da wir 3 von den normalen Ziffern und +1 für die Initialisierung der Summe als 1 abziehen.
Als Randnotiz gibt es eine Menge Ineffizienz im Code für das Golfen, da jede Ziffer die Summe 5 Mal zurücksetzt, anstatt nur einmal, wenn ich 48 statt 3 subtrahiere.
quelle
> <> ,
3533252115 BytesEine Ausgabe von
0
bedeutet, dass das Ergebnis entweder 0 oder 9 sein kann .Probieren Sie es online!
Dank Jo King wurden 6 Bytes eingespart, indem
'
fehlende Ziffern dargestellt wurden.quelle
'
Zeichen anstelle von?
Java 8,
3634 BytesGibt zurück,
9
wenn beide0
und9
gültig sind.Erläuterung:
Probieren Sie es online aus.
quelle