Notcalc (Berechne die falsche Antwort)


33

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 Eingaben 0,0gibt es zurück -1, was nicht natürlich ist)

  • "ABC"( ABCist 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, NaNUnd Fehlermeldungen sind nicht natürliche Zahlen. Für unsere Zwecke 0ist dies selbstverständlich (obwohl nicht alle Mathematiker damit einverstanden sind).


1
Vielleicht nehmen wir die Zahlen als Zeichenketten und geben sie als Zeichenkette aus?
xnor

1
Kann der Ausgang führende Nullen haben?
Kritixi Lithos

1
Ich gehe davon aus, dass Überläufe berücksichtigt werden müssen, also sollte das Ergebnis von 2 ^ 32 -1 und 2 nicht negativ sein, oder?
Adrianmp

1
Nur eine kleine Bemerkung, weil ich auf unnütze Details achten möchte: 0 ist keine natürliche Zahl. Wenn Sie den ersten Satz in "Angesichts von zwei nicht negativen ganzen Zahlen ..." ändern, bleiben mir keine unnötigen Details zum Kommentieren übrig. :)
Peech

6
@peech Das stimmt nicht. 0 wird unter einigen Definitionen als natürliche Zahl angesehen. Sie können es nicht sehen, da es gelöscht wurde, aber es gab eine ausführliche Konversation zu diesem Thema.
Weizen-Assistent

Antworten:


36

RProgN , 4 3 1 Byte

Durchgestrichen 4 ist noch 4; (

E

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

0+0 = 1
1+0 = 0
0+1 = 0
1+1 = 1

Probieren Sie es online!


22
Ich bin gerade mit deinem durchgestrichenen Link durch das Kaninchenloch gegangen. Ich bewerte es mit <s> 4 </ s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala halte meine 4, ich gehe in
Albert Renshaw

4
̶4̶ <- u + 0336 (Zeichen kombinieren) kann eine bessere Möglichkeit sein, es zu tun
Albert Renshaw

3
PSA: codegolf.stackexchange.com/questions/48100/… Original durchgestrichene Sache
Christopher

3
@ AlbertRenshaw die alte PPCG durchgestrichen-4-a-roo?
7.

15

Netzhaut , 3 Bytes

 
1

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 a 1und 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).


2
0 0sollte auch funktionieren.
Dennis

1
@ Tennis: Ich habe mich darüber gewundert. 010wird über grundsätzlich alle Integer-Parser als Integer betrachtet. Ich kann ein potenzielles 0 8ungültiges Argument auf der Grundlage sehen, dass 018ü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?

2
Oder . 1wenn Sie selbst keine führenden Nullen zurückgeben möchten.
Martin Ender

@ MartinEnder> aber ist eine natürliche Zahl
wizzwizz4

@ wizzwizz4 Ich verfolge nicht.
Martin Ender

15

Python , 13 Bytes

[(0,0)].count

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.

lambda a,b:a-~b   # 15 bytes

Hier geht es darum, (0,0)zu 1und zu allem anderen zuzuordnen 0. Da sich nur 0+0eine Summe aus 0natü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

(0,0).__ge__

Dies prüft, ob das Eingabetupel höchstens ist (0,0), was nur für zutrifft (0,0). In Python True==1und False==0. Noch zwielichtiger wäre es, wenn die Ausgabe über den Exit-Code und die Behandlung als Python-Boolen zwei Bytes einsparen würden:

[(0,0)].pop

Wenn String-E / A zulässig ist und führende Nullen in Ordnung sind, gibt es die 8-Byte-Lösung

'1'.join

Dies verkettet a1b, was immer größer ist als a+b.


1
int.__eq__für 10 Bytes
Blue

@muddyfish Ja, ich habe auch die Antwort von Suever gesehen und nicht daran gedacht, Gleichheit zu verwenden. Es gibt jedoch einen Bool zurück, der meiner Meinung nach bei einer Herausforderung, bei der eine Zahlenausgabe erforderlich ist, fraglich ist.
Xnor

1
IMO, wenn es wie eine Zahl schwimmt und wie eine Zahl quakt, ist es vernünftig anzunehmen, dass es eine Zahl ist.
CalculatorFeline

13

MATL et al. 1 Byte

=

Akzeptiert zwei natürliche Zahlen als Eingaben und vergleicht sie. Wenn sie gleich sind, ist die Ausgabe 1und wenn sie nicht gleich sind, ist die Ausgabe 0. Dies ist der gleiche Ansatz wie bei der @ ATaco-Lösung.


3
Die =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.

@ ais523 Aktualisiert, um dies einzuschließen. Vielen Dank.
Suever


Können Sie APL und J hinzufügen?
Adám

@ Adám Sicheres Ding. Haben Sie einen TIO-Link, zu dem ich einen Link erstellen kann?
Suever

10

Javascript, 10 Bytes

x=>y=>!x+y

Nimmt 2 Zahlen unter Verwendung der folgenden Currysyntax:

(x=>y=>!x+y)(0)(0) // 1

4
Willkommen auf der Seite! :)
DJMcMayhem

Danke =) Ich habe eine Weile Herausforderungen gelesen und versucht, einen guten Startplatz zu finden.
Malivil

9

Vim, 3 Bytes / Tastenanschläge

<C-a>gJ

Probieren Sie es online!

Beachten Sie, dass dies <C-a>tatsächlich Strg-a ist , was Byte darstellt 0x01.

Ich liebe es, wenn Vim (was nicht einmal eine Programmiersprache ist) mit Golfsprachen konkurrieren kann. :) Die Eingabe erfolgt in folgendem Format:

a
b

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.


9

Brain-Flak , 8 Bytes

({}{}())

Probieren Sie es online!

Dies ist die am besten lesbare Antwort, die ich je geschrieben habe. :)

Erläuterung:

(      )    # Push the sum of all the following:
 {}         #   The first input
   {}       #   The second input
     ()     #   and one

Alternative Lösungen (auch 8 Bytes):

({}[]{})    # Sum + 1
([]{}{})    # Sum + 2

Es gibt eine Reihe anderer Lösungen, die nur mit positiven Zahlen funktionieren:

(<{}>{})
({}<{}>)
({{}}())
({{}()})
({{}}[])
({{}[]})

7

Gelee , 2 Bytes

+‘

Das + addiert die beiden Eingaben und das 'erhöht die Antwort um eins

Probieren Sie es online!


Diese Antwort bringt mich zum Wackeln.
MD XF

Ich wette, es funktioniert: P
Christopher

Technisch liegt dies aber nicht daran (a+b)+1, a+(b+1)dass die Dyaden-Monaden-Kette wie fGfolgt behandelt wird f(a, G(b)). In diesem Fall ist es dasselbe, aber technisch gesehen ist es anders: P
HyperNeutrino

6

TI-Basic, 3 Bytes

not(max(Ans

Alternativlösungen:

10^(sum(Ans         3 bytes @DestructibleWatermelon
not(sum(Ans         3 bytes
1+sum(Ans           4 bytes
Input :X=Y          5 bytes @ATaco
Input :X+not(Y      6 bytes
Input :not(X+Y      6 bytes
Input :10^(X+Y      6 bytes
Input :X+Y+1        7 bytes
Input :not(max(X,Y  7 bytes
Ans(1)=Ans(2        8 bytes
Ans(1)+not(Ans(2    9 bytes
not(Ans(1)+Ans(2    9 bytes

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?)


1
Niemand mag es, wenn das OP eine superkurze Lösung in der Frage veröffentlicht, die es schwer zu schlagen macht.
mbomb007

@ mbomb007 Ich nehme an, aber das waren nur Schnipsel und keine vollen Programme. Durch Prompt A,B:das Hinzufügen zu ihnen erhöht sich die Bytezahl auf jeweils acht Bytes.
Timtech

1
@ Timtech Genau. Ich wollte keine guten Antworten als Beispiele geben, ich wollte nur Beispiele.
Julian Lachniet

@ JulianLachniet Ich verstehe und schätze das :)
Timtech

6

Brachylog , 2 Bytes

+<

Probieren Sie es online!

Erläuterung

+     The sum of the elements in the Input...
 <    ...is strictly less than the Output
      (implicitely label the output with an integer respecting this constraint)

Dies führt immer dazu A+B+1, wenn Input = [A, B].


5

Mathematica, 5 Bytes

1+##&

Gibt die Summe der beiden Argumente plus 1 aus. Zum Beispiel 1+##&[2,5]ergibt 8.

(Randnotiz: Binomialfunktioniert fast, obwohl Binomial[1,0]=1und Binomial[4,2]=6sind Gegenbeispiele; ich denke, sie sind jedoch die einzigen Gegenbeispiele.)


Pochhammerscheint einer besser zu sein als Binomial. Soweit ich das beurteilen kann 1,0scheitert nur .
Martin Ender

Ah, und KroneckerDeltafunktioniert für alle Eingaben (entspricht der Gleichheitsprüfung in einigen Esolangs). Die Neuimplementierung ist zwar kürzer Boole[#==#2]&, aber ich nehme an, Sie haben nach einem integrierten System gesucht, das so funktioniert wie es ist.
Martin Ender

5

PHP, 17 Bytes

<?=1-join($argv);

Laufen Sie wie folgt:

echo '<?=1-join($argv);' | php -- 0 0
> 1

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 ist 0(0123 = 123).



4

Turtlèd , 12 Bytes

macht sehr große Zahlen

'1?:?:[1'0l]

Probieren Sie es online!

Erläuterung:

'1                write one on the starting grid square
  ?:?:            take a number, move right that many (repeat)
      [1   ]      while not on a grid square with a one on it
        '0l       put a zero on that square, move left
[implicit output of grid]

Es gibt also 10 ** (x + y) aus.



4

1
Mit currying können Sie einen Byte schonen a->b->a-~b. Funktioniert auch mit Java 8, jeder Edition (daher muss OpenJDK 9 nicht angegeben werden)
Olivier Grégoire

@ OlivierGrégoire Java sieht jetzt wie JS aus> _>
Kritixi Lithos

@KritixiLithos Nun ... wir hatten einen Hinweis, dass dies jahrelang passieren würde: Java Script ;-)
Olivier Grégoire

@KritixiLithos Die Spezifikation für Java 9 enthält einen Abschnitt über die Einhaltung von ECMAScript 6.
Pavel

@ OlivierGrégoire Ja, aber diese Einsendung wurde automatisch generiert, weshalb die 9 hinzugefügt wurde.
Pavel

4

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
Hodor?!
Hodor?!
Hodor HODOR!
HODOR!!!

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 Eingabe

Hodor addiere 1 zum akku

HODOR! gibt den akku als nummer aus

HODOR!!!tötet Hodor! Noooooo!

Dies ist der Pseudocode:

Take input
Take input
Add 1 to sum(inputs)
Output value

1
Ich denke, Sie müssen sich einen anderen Namen für Ihre Sprache einfallen lassen, es sei denn, dies ist ein Dolmetscher der bereits existierenden Hodor- Sprache, die 2015 erstellt wurde. Ich bin mir ziemlich sicher, dass dies nicht der Fall ist.
mbomb007

@ mbomb007 Nein, das ist nicht meins, aber es gibt Sprachen mit doppelten Namen. Ich kenne zwei namens 7 auf dieser Seite (ich kann sie gerade nicht finden)
Caird Coinheringaahing

1
Ich bin mir ziemlich sicher, dass es nur eine namens 7 gibt, und diese ist es . Sie können die Groß- und Kleinschreibung des Titels ändern, um eine einfache Lösung wie HODOR zu finden.
mbomb007

@ mbomb007 Mine ist H Geruch und ihr ist h Geruch , so dass genug sein könnte?
Caird Coinheringaahing

Nein, sie haben ein Großbuchstaben H, wie Sie jedes Mal sehen können, wenn er den Namen der Sprache auf seiner Website verwendet.
mbomb007

3

SmileBASIC, 4 Bytes

!A+B

nicht (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2


Wie unterstützt dies aus Neugier 2+1?
ATaco

2
2+1=3 -> !2+1 -> 0+1=1
12.

3

R, 13 Bytes

sum(scan()+1)

Vielen Dank an Jonathan Allan für seine Beiträge!


@ JonathanAllan: Du hast recht, ich habe meine Antwort geändert. Vielen Dank !
Frédéric

OK, ziemlich sicher, 00ist das 0vielleicht dasselbe sep="1"?
Jonathan Allan

@ JonathanAllan: verdammt! Danke noch einmal !
Frédéric

Ein Blick auf die Tipps zum Golfen in R scheint scan()in Ordnung zu sein, eine Vektoreingabe wie diese zu akzeptieren . Aber wir können ein Byte besser machen cat(sum(scan()+1)). Vielleicht gibt es kürzer?
Jonathan Allan

1
Da cates sich um ein vollständiges Programm handelt, wäre die Alternative eine unbenannte Funktion für die gleichen Bytekostenfunction(a,b)a+b+1
Jonathan Allan,

3

05AB1E , 1 Byte

Q

Funktioniert genauso wie die RProgNAntwort.

Prüft , ob aund bsind gleich. Wenn ja, drucken Sie 1. Andernfalls drucken0

Probieren Sie es online!


3
¢(a.count (b)) sollte auch für 1 Byte funktionieren.
Riley

@Riley du könntest das als deine eigene Antwort posten.
Okx

2
Es ist nicht verschieden genug, um eine eigene Antwort zu brauchen. Ich dachte, wir könnten einfach beide 1-Byte-Lösungen in einer Antwort kombinieren.
Riley

3

C 26 24 19 Bytes

f(c,d){return!c+d;}

Ungolfed-Version:

int f(int c,int d)
{
   return !c+d; 
}

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.


1
Sie benötigen ()um !c+d?
Pavel

@Pavel Du hast Recht, Klammern waren nutzlos, aktualisiert!
Abel Tom

2
Nicht 100% sicher, aber ich denke, Sie können das Leerzeichen in Ihrem entfernen return, wiereturn!c+d;
Metoniem

1
Verliere die Rendite und ordne sie stattdessen mit so etwas wie c + =! D zu
Ahemone

1
@ AlbertRenshaw Es ist nicht etwas, worauf ich mich für die Portabilität verlassen würde, aber hier sind ein paar Beispiele. Ich kann es nicht offline zum Laufen
bringen

3

MATLAB / Octave, 3 Bytes

@eq

Akzeptiert zwei Eingaben und prüft auf Gleichheit und Erträge, 1wenn sie gleich sind und 0ansonsten.

Online Demo


4
Sollte das nicht sein @eq? Das gibt ein Funktionshandle zurück, mit dem die gewünschte Funktion ausgewertet werden kann, obwohl es nur eqbedeutungslos ist.
Sanchises

@Sanchises Ich habe gesehen, dass viele Antworten in beide Richtungen gehen: codegolf.stackexchange.com/questions/106149/compute-the-median/… . Ich bin mir eigentlich nicht sicher, welches bevorzugt wird.
Suever

Hmmm. Ich sollte denken, dass dies eher wie ein Schnipsel ist, während @es sich in ein gültiges Sprachkonstrukt verwandelt. Aber vielleicht bin ich nur pedantisch.
Sanchises


3

Gleichstrom , 5 Bytes

?1n+n

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


3

PHP, 13 Bytes; (17 REPL-less)

!max($argv)+0

Beispiele

[0,0] -> 1
[0,1] -> 0
[1,0] -> 0

Für diejenigen ohne REPL verwenden

<?=!max($argv)+0;

und laufen mit

echo '<?=!max($argv)+0;' | php -- 0 0

Diese Antwort ist ungültig, da sie nichts ausgibt
etwa

@aross Wenn Boolesche Besetzung ein Problem war, habe ich meine Antwort aktualisiert
mleko

Ja, Sie haben beide Probleme angesprochen. Die Ausgabe wäre wahr / falsch, nicht 1/0. Also, REPL :)
Aross

3

Cubix, 9 8 Bytes

u-~OII/@

Erläuterung

Erweitert sieht diese Antwort so aus:

    u -
    ~ O
I I / @ . . . .
. . . . . . . .
    . .
    . .

Die Reihenfolge der ausgeführten Anweisungen ist II~-O@

II~-O@
I      # First input
   -   # Minus
 I~    # NOT(second input)
    O  # Output as integer
     @ # End program

Getestet für alle Kombinationen von Eingängen, bei denen beide im Bereich liegen 0-100.

Probieren Sie es hier aus .


3

APL - 4 Bytes

1++/

Nimmt Array, summiert seine Elemente und fügt eins hinzu. Prüfung:

 1++/1 2  
4
 1++/1 0
2


3

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:

Nicht 0

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:

Ist 0

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.

Ist immer noch 0

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.

Ist noch 0 etwas mehr

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.


2

Billard , 11 Zeichen = 17 Bytes

⇲
⇲
+
1
+
↥

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 .


slightly after the languageTippfehler, 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
Destructible Lemon

@DestructibleWatermelon Oh, das war ein komischer Tippfehler. Danke für die Klarstellung. Ich habe die Sprache tatsächlich geändert und bin dann gekommen, um die Herausforderung zu sehen. Deshalb habe ich mich dazu entschlossen, diesen Hinweis dort hinzuzufügen, falls sich jemand dazu entschlossen hat, zu prüfen, wann der Push an GitHub erfolgt ist, aber ich danke Ihnen, dass Sie das klargestellt haben.
HyperNeutrino
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.