Tor:
Geben Sie bei zwei natürlichen Zahlen (ganze Zahlen von 0 bis unendlich) eine Zahl aus, die nicht die Summe dieser Zahlen ist, sondern eine natürliche Zahl.
Beispiellösungen (TI-Basic):
A+B+1
not(A+B)
Ungültige Lösungen:
A+B-1
(für Eingaben0,0
gibt es zurück-1
, was nicht natürlich ist)"ABC"
(ABC
ist keine Zahl)
Anmerkungen:
Die Ausgabe muss immer eine Summe von zwei natürlichen Zahlen sein (was eigentlich nur eine natürliche Zahl ist)
-1
,undefined
,infinity
,NaN
Und Fehlermeldungen sind nicht natürliche Zahlen. Für unsere Zwecke0
ist dies selbstverständlich (obwohl nicht alle Mathematiker damit einverstanden sind).
code-golf
number
arithmetic
Julian Lachniet
quelle
quelle
Antworten:
RProgN ,
431 ByteDurchgestrichen 4 ist noch 4; (
Die einfachste Lösung ist der Vergleich, wenn A und B gleich sind. Drückt true, was RProgN als 1 ansieht, wenn sie gleich sind, oder false, sonst aka 0.
Testfälle
Probieren Sie es online!
quelle
Netzhaut , 3 Bytes
Probieren Sie es online!
(Die erste Zeile enthält ein Leerzeichen vor der neuen Zeile. Stack Exchange kann keine nachgestellten Leerzeichen anzeigen.)
Die Eingabe erfolgt in Dezimalzahlen, die durch ein Leerzeichen (z
12 34
. B. ) getrennt sind. Dieses Programm ändert lediglich das Leerzeichen in a1
und erstellt eine Zahl, die zu groß ist, um die Summe der eingegebenen Zahlen zu sein (sie muss mindestens zwei Stellen mehr enthalten als beide, und das Hinzufügen von zwei Zahlen führt zu einer Ausgabe mit höchstens einer Stelle mehr als der größerer Eingang).quelle
0 0
sollte auch funktionieren.010
wird über grundsätzlich alle Integer-Parser als Integer betrachtet. Ich kann ein potenzielles0 8
ungültiges Argument auf der Grundlage sehen, dass018
über einige Integer-Parser als ungültig oktal eingestuft wird (obwohl es von anderen als Dezimalzahl 18 eingestuft wird). Beachten Sie, dass dieses Programm sehr gerne führende Nullen in der Eingabe behandelt und diese als Dezimalzahl behandelt. und ich habe Programme geschrieben, die führende Nullen für andere Fragen ausgeben, ohne dass die Leute ein Problem sehen. Gibt es einen relevanten Metapost zum Thema?.
1
wenn Sie selbst keine führenden Nullen zurückgeben möchten.Python , 13 Bytes
Probieren Sie es online! Übernimmt die Eingabe als Tupel.
Durch die Verwendung einer Objektmethode für die Funktion wird das Boilerplate von a vermieden
lambda
.Hier geht es darum,
(0,0)
zu1
und zu allem anderen zuzuordnen0
. Da sich nur0+0
eine Summe aus0
natürlichen Zahlen ergibt , wird immer vermieden, die Summe abzugleichen.Wenn man hier einen Booleschen Wert ausgeben könnte, den ich für schattig halte, könnte ein Byte als gespeichert werden
Dies prüft, ob das Eingabetupel höchstens ist
(0,0)
, was nur für zutrifft(0,0)
. In PythonTrue==1
undFalse==0
. Noch zwielichtiger wäre es, wenn die Ausgabe über den Exit-Code und die Behandlung als Python-Boolen zwei Bytes einsparen würden:Wenn String-E / A zulässig ist und führende Nullen in Ordnung sind, gibt es die 8-Byte-Lösung
Dies verkettet
a1b
, was immer größer ist alsa+b
.quelle
int.__eq__
für 10 BytesMATL et al. 1 Byte
Akzeptiert zwei natürliche Zahlen als Eingaben und vergleicht sie. Wenn sie gleich sind, ist die Ausgabe
1
und wenn sie nicht gleich sind, ist die Ausgabe0
. Dies ist der gleiche Ansatz wie bei der @ ATaco-Lösung.MATL
Jelly (von @ ais523)
Gestapelte (durch @Conor O'Brien)
APL (Dyalog APL) (von @ Adám)
J (von @ Adám)
Eigentlich (von @Mego)
Implizit (von @MD XF)
quelle
=
Lösung funktioniert auch in Jelly für 1 Byte. Ich dachte, ich würde es in den Kommentaren erwähnen, da es sich nicht lohnt, eine separate Antwort für die triviale Lösung zu erstellen.Javascript, 10 Bytes
Nimmt 2 Zahlen unter Verwendung der folgenden Currysyntax:
quelle
Vim, 3 Bytes / Tastenanschläge
Probieren Sie es online!
Beachten Sie, dass dies
<C-a>
tatsächlich Strg-a ist , was Byte darstellt0x01
.Ich liebe es, wenn Vim (was nicht einmal eine Programmiersprache ist) mit Golfsprachen konkurrieren kann. :) Die Eingabe erfolgt in folgendem Format:
Dies erhöht einfach die erste Zahl um eins (dies ist der
<C-a>
Teil) und verbindet dann die Zeichenfolgendarstellungen der beiden Zahlen miteinander. Soweit ich das beurteilen kann, sollte dies niemals die Summe ergeben.quelle
Brain-Flak , 8 Bytes
Probieren Sie es online!
Dies ist die am besten lesbare Antwort, die ich je geschrieben habe. :)
Erläuterung:
Alternative Lösungen (auch 8 Bytes):
Es gibt eine Reihe anderer Lösungen, die nur mit positiven Zahlen funktionieren:
quelle
Gelee , 2 Bytes
Das + addiert die beiden Eingaben und das 'erhöht die Antwort um eins
Probieren Sie es online!
quelle
(a+b)+1
,a+(b+1)
dass die Dyaden-Monaden-Kette wiefG
folgt behandelt wirdf(a, G(b))
. In diesem Fall ist es dasselbe, aber technisch gesehen ist es anders: PTI-Basic, 3 Bytes
Alternativlösungen:
Es ist interessant, dass Sie die Beispiele der Frage in TI-Basic gemacht haben, aber Sie haben das Kürzere vergessen
A=B
(oder war es an uns, das herauszufinden?)quelle
Prompt A,B:
das Hinzufügen zu ihnen erhöht sich die Bytezahl auf jeweils acht Bytes.Brachylog , 2 Bytes
Probieren Sie es online!
Erläuterung
Dies führt immer dazu
A+B+1
, wennInput = [A, B]
.quelle
Mathematica, 5 Bytes
Gibt die Summe der beiden Argumente plus 1 aus. Zum Beispiel
1+##&[2,5]
ergibt8
.(Randnotiz:
Binomial
funktioniert fast, obwohlBinomial[1,0]=1
undBinomial[4,2]=6
sind Gegenbeispiele; ich denke, sie sind jedoch die einzigen Gegenbeispiele.)quelle
Pochhammer
scheint einer besser zu sein alsBinomial
. Soweit ich das beurteilen kann1,0
scheitert nur .KroneckerDelta
funktioniert für alle Eingaben (entspricht der Gleichheitsprüfung in einigen Esolangs). Die Neuimplementierung ist zwar kürzerBoole[#==#2]&
, aber ich nehme an, Sie haben nach einem integrierten System gesucht, das so funktioniert wie es ist.PHP, 17 Bytes
Laufen Sie wie folgt:
Erläuterung
Dies verkettet nur die Argumente. Das erste Argument (Skriptname) enthält
-
. Das ergibt also eine negative Zahl, die ich mit dem Minuszeichen negiere. Dann addiere ich 1, nur für den Fall, dass die erste Eingangsnummer a ist0
(0123 = 123).quelle
Perl 6 , 4 Bytes
Ein Lambda (gebildet durch Whatever-currying ), das dem zweiten Argument die Boolesche Inverse (1 oder 0) des ersten Arguments hinzufügt.
Probieren Sie es online!
quelle
Turtlèd , 12 Bytes
macht sehr große Zahlen
Probieren Sie es online!
Erläuterung:
Es gibt also 10 ** (x + y) aus.
quelle
PHP, 19 Bytes
quelle
Java (OpenJDK 9) , 10 Byte
Probieren Sie es online!
quelle
a->b->a-~b
. Funktioniert auch mit Java 8, jeder Edition (daher muss OpenJDK 9 nicht angegeben werden)HODOR , 40 Bytes (nicht konkurrierend)
Dies ist wahrscheinlich das kürzeste Programm, das Hodor jemals geschrieben hat!
Dies ist, was passiert, wenn Sie für einen zweiwöchigen Schulurlaub nichts zu tun haben: Produzieren Sie eine Reihe wirklich einfach zu codierender Scherzsprachen, die absolut nichts bewirken. Ja für die Schulferien !!!
Walder
war Hodors ursprünglicher Name und wird daher benötigt, um das Programm zu starten.Hodor?!
Nimmt entweder eine Zahl aus STDIN oder ein einzelnes Zeichen und setzt den Akkumulator auf die EingabeHodor
addiere 1 zum akkuHODOR!
gibt den akku als nummer ausHODOR!!!
tötet Hodor! Noooooo!Dies ist der Pseudocode:
quelle
SmileBASIC, 4 Bytes
nicht (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
quelle
2+1
?2+1=3 -> !2+1 -> 0+1=1
R, 13 Bytes
Vielen Dank an Jonathan Allan für seine Beiträge!
quelle
00
ist das0
vielleicht dasselbesep="1"
?scan()
in Ordnung zu sein, eine Vektoreingabe wie diese zu akzeptieren . Aber wir können ein Byte besser machencat(sum(scan()+1))
. Vielleicht gibt es kürzer?cat
es sich um ein vollständiges Programm handelt, wäre die Alternative eine unbenannte Funktion für die gleichen Bytekostenfunction(a,b)a+b+1
05AB1E , 1 Byte
Funktioniert genauso wie die
RProgN
Antwort.Prüft , ob
a
undb
sind gleich. Wenn ja, drucken Sie1
. Andernfalls drucken0
Probieren Sie es online!
quelle
¢
(a.count (b)) sollte auch für 1 Byte funktionieren.C
262419 BytesUngolfed-Version:
Ich hoffe, ich habe die Spezifikation richtig verstanden. Kann definitiv gekürzt werden !?
@Pavel Danke, dass du 2 Bytes gespart hast
@ Neil Danke für deine Eingabe.
quelle
()
um!c+d
?return
, wiereturn!c+d;
MATLAB / Octave, 3 Bytes
Akzeptiert zwei Eingaben und prüft auf Gleichheit und Erträge,
1
wenn sie gleich sind und0
ansonsten.Online Demo
quelle
@eq
? Das gibt ein Funktionshandle zurück, mit dem die gewünschte Funktion ausgewertet werden kann, obwohl es nureq
bedeutungslos ist.@
es sich in ein gültiges Sprachkonstrukt verwandelt. Aber vielleicht bin ich nur pedantisch.Brainfuck, 12 Bytes
Einfache Lösung, die Ergebnisse liefert
A+B+1
.Probieren Sie es online aus
quelle
,>,[-<++>]<.
,>,[-<++>]<.
LösungGleichstrom , 5 Bytes
Probieren Sie es online!
Eingabe: Zwei natürliche Zahlen, die durch ein Leerzeichen auf stdin getrennt sind.
Ausgabe: Die Ziffer 1, unmittelbar gefolgt von der Summe der beiden Zahlen. Dies ist eine Zahl, die größer ist als die Summe der beiden Zahlen.
Beispiel:
Eingang:
222 333
Ausgabe:
1555
quelle
PHP, 13 Bytes; (17 REPL-less)
Beispiele
Für diejenigen ohne REPL verwenden
und laufen mit
quelle
Cubix,
98 BytesErläuterung
Erweitert sieht diese Antwort so aus:
Die Reihenfolge der ausgeführten Anweisungen ist
II~-O@
Getestet für alle Kombinationen von Eingängen, bei denen beide im Bereich liegen
0-100
.Probieren Sie es hier aus .
quelle
APL - 4 Bytes
Nimmt Array, summiert seine Elemente und fügt eins hinzu. Prüfung:
quelle
√ å ı ¥ ® Ï Ø ¿ , 4 Bytes
Fügen Sie
o
zum Ausgeben das Ende hinzu.quelle
Hexagony , 7 Bytes
Probieren Sie es online!
Oder in besser lesbarem Format,
Dies übertrifft die aktuelle Hexagony-Lösung von 11 Bytes.
Erläuterung:
Wenn die erste Zahl nicht 0 ist, nimmt das Programm den folgenden Pfad:
Dies liest die erste Zahl und verzweigt sich nach rechts. Dann liest es die zweite Zahl, gefolgt von einem Zeilenumbruch und dem Versuch, eine dritte zu lesen, aber die existiert nicht, so dass sie 0 lautet. Dies wird gedruckt und das Programm beendet (beachte, dass wenn a> 0, da b nicht negativ ist, a + b> 0).
Wenn die erste Zahl 0 ist, folgt das Programm zunächst dem folgenden Pfad:
Dies liest die erste Zahl und die verbleibenden Zweige. Es kommt an die Ecke und nimmt die Route entlang der Nordwestkante, weil die Zahl 0 ist, und liest die zweite Zahl. Es bricht um, erhöht dann die zweite Zahl und druckt.
Es prallt gegen die
<
und druckt die inkrementierte zweite Eingabe erneut. Es inkrementiert den Wert und nimmt die Nordostkante wieder auf, diesmal jedoch, weil die aktuelle Kante einen zweifach inkrementierten nicht negativen Wert aufweist, der definitiv positiv ist. Es wird dann versucht, eine dritte Eingabe zu erhalten, erhält jedoch stattdessen 0.Schließlich wird es umgebrochen und durch den Pfeil umgeleitet, dann versucht es, eine vierte Eingabe zu lesen und erhält erneut 0. Es bricht ab und versucht, eine fünfte Eingabe zu lesen und erhält zum letzten Mal 0. Dies wird gedruckt und umbrochen
@
und beendet.Beachten Sie, dass b * (10 ^ k + 1) * 10> 0 + b = b ist, wobei k die Länge von b in Ziffern ist. Dies funktioniert also.
quelle
Billard , 11 Zeichen = 17 Bytes
Anbaugeräte
x + y + 1
. Ziemlich einfach. Es nimmt die Eingänge auf zwei getrennten Leitungen. (Übrigens, die Sprache wurde nach der Abfrage leicht geändert, aber nur, um die Eingabeaufforderung zu unterdrücken. Wir sind uns nicht sicher, ob diese Antwort noch gültig ist.)7 Zeichen = 11 Bytes, nicht konkurrierend
Dieser ist kürzer aber nur nach einem neuen Update der Sprache möglich:
Dies nutzt
x == y
, der schamlos aus @ ATacos RProgN-Lösung gestohlen wurde [Ich hoffe, es macht Ihnen nichts aus (:]. Beim Beenden wird ausgegeben$
, wie viele Bälle darüber hinweggegangen sind .quelle
slightly after the language
Tippfehler, auch ich denke, wenn die Sprache die Eingabeaufforderung hatte, wäre es immer noch gültig. Ich glaube nicht, dass Ausgabestandards so streng sind und nicht unterdrückbare Ausgaben erlaubt sind