Notcalc (Calcule la mauvaise réponse)


33

Objectif:

Étant donné deux nombres naturels (entiers de 0 à l'infini), génère un nombre qui n'est pas la somme de ces nombres, mais qui est un nombre naturel.

Exemple de solutions (TI-Basic):

  • A+B+1

  • not(A+B)

Solutions non valides:

  • A+B-1(pour les entrées 0,0, ça retourne -1, ce qui n'est pas naturel)

  • "ABC"( ABCn'est pas un nombre)

Remarques:

  • La sortie doit toujours être une somme de deux nombres naturels (qui est en fait juste un nombre naturel)

  • -1, undefined, infinity, NaNEt les messages d'erreur ne sont pas des nombres naturels. Pour nos besoins, 0c'est naturel (bien que tous les mathématiciens ne soient pas d'accord).


1
Peut-être prenons-nous les nombres sous forme de chaînes et les afficherons sous forme de chaîne?
xnor

1
La sortie peut-elle avoir des zéros non significatifs?
Kritixi Lithos

1
Je suppose que les débordements doivent être pris en compte, donc le résultat de 2 ^ 32 -1 et 2 ne doit pas être négatif, non?
adrianmp

1
Juste une petite remarque parce que j'aime bien faire attention aux détails inutiles: 0 n'est pas un nombre naturel. Si vous modifiez la première phrase en "Donnant deux nombres entiers non négatifs ...", il ne me restera plus aucun détail inutile à commenter. :)
dimanche

6
@peech Ce n'est pas vrai. 0 est considéré comme un nombre naturel selon certaines définitions. Vous ne pouvez pas le voir car il a été supprimé, mais il y a eu une longue conversation à ce sujet.
Wheat Wizard

Réponses:


36

RProgN , 4 3 1 Byte

4 sont encore barrés sur 4 (

E

La plus simple des solutions, compare si A et B sont égaux. Pousse vrai, ce que RProgN voit comme 1, s'ils sont identiques, ou faux aka 0 sinon.

Cas de test

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

Essayez-le en ligne!


22
Je viens de descendre dans le terrier du lapin avec ton lien barré. Je le note <s> 4 </ s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala tiens mon 4, j'entre
Albert Renshaw

4
̶4̶ <- u + 0336 (combinaison de caractères) peut être un meilleur moyen de le faire
Albert Renshaw


3
@ AlbertRenshaw le vieux PPCG barré-4-a-roo?
Rɪᴋᴇʀ

15

Rétine , 3 octets

 
1

Essayez-le en ligne!

(La première ligne a un espace avant la nouvelle ligne. Stack Exchange ne montre pas très bien les espaces de fin.)

L'entrée est le nombre en décimal, séparé par un espace (par exemple 12 34). Ce programme change simplement l'espace en a 1, créant un nombre trop grand pour être la somme des nombres en entrée (il a nécessairement au moins 2 chiffres de plus que l'un ou l'autre, et ajouter deux nombres produit une sortie avec pas plus d'un chiffre que le entrée plus grande).


2
0 0devrait également fonctionner.
Dennis

1
@ Dennis: Je m'interrogeais à ce sujet. 010est considéré comme un entier via essentiellement tous les analyseurs syntaxiques. Je peux voir un argument potentiel 0 8non valide sur la base d' 018une octale considérée comme non valide via certains analyseurs syntaxiques d'entiers (bien qu'il soit considéré comme un nombre décimal 18 par d'autres). Notez que ce programme est assez heureux de gérer les zéros en tête dans l’ entrée , en les traitant comme des nombres décimaux; et j'ai écrit des programmes qui produisent des zéros non significatifs pour d'autres questions sans que les gens ne voient un problème. Y a-t-il un méta post pertinent sur le sujet?

2
Ou . 1si vous ne voulez pas retourner vous-même les zéros non significatifs.
Martin Ender

@MartinEnder> mais est un nombre naturel
wizzwizz4

@ wizzwizz4 Je ne vous suis pas.
Martin Ender

15

Python , 13 octets

[(0,0)].count

Essayez-le en ligne! Prend l'entrée comme un tuple.

L'utilisation d'une méthode d'objet pour la fonction évite le passe-partout d'un lambda.

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

Ici, l’idée est de mapper (0,0)vers 1et tout le reste 0. Puisque ne 0+0donne qu'une somme 0parmi des nombres naturels, cela évite toujours de faire correspondre la somme.

Si on pouvait sortir un booléen ici, ce que je trouve louche, un octet pourrait être sauvegardé en tant que

(0,0).__ge__

Ceci vérifie si le tuple d'entrée est au maximum (0,0), ce qui n'est vrai que pour (0,0). En Python, True==1et False==0. De manière encore plus obscure, sortir par le code de sortie et le traiter comme un booléen Python économiserait deux octets:

[(0,0)].pop

Si la chaîne d'E / S est autorisée et que les zéros au début sont corrects, il existe une solution à 8 octets.

'1'.join

Cela concatène a1b, ce qui est toujours plus gros que a+b.


1
int.__eq__pour 10 octets
Bleu

@muddyfish Ouais, j'ai vu la réponse de quelqu'un aussi, je n'ai pas pensé à utiliser l'égalité. Il retourne un bool cependant, ce qui est, je pense, incertain pour un défi qui demande une sortie numérique.
xnor

1
OMI si elle nage comme un nombre et charlatans comme un nombre, il est raisonnable de supposer que c'est un nombre.
CalculatriceFeline

13

MATL et al. 1 octet

=

Accepte deux nombres naturels comme entrées et les compare. S'ils sont égaux, la sortie l'est 1et s'ils ne sont pas égaux, la sortie l'est 0. C'est la même approche que la solution de @ ATaco.


3
La =solution fonctionne également en gelée pour 1 octet. Je pensais que je le mentionnerais dans les commentaires car cela ne semblait pas valoir la peine de créer une réponse distincte pour la solution triviale.

@ ais523 Mise à jour pour inclure cela. Merci.
Suever

2
Aussi dans Stacked. Essayez-le en ligne!
Conor O'Brien

Pouvez-vous ajouter APL et J?
Adám

@ Adám Bien sûr. Avez-vous un lien TIO auquel je peux accéder?
Suever

10

Javascript, 10 octets

x=>y=>!x+y

Prend 2 nombres en utilisant la syntaxe de currying comme ceci:

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

4
Bienvenue sur le site! :)
DJMcMayhem

Merci =) Je lis des défis depuis un moment, j'essaie juste de trouver un bon endroit pour commencer.
Malivil

9

Vim, 3 octets / frappes

<C-a>gJ

Essayez-le en ligne!

Notez que <C-a>est en fait ctrl-un , ce qui représente l' octet 0x01.

J'adore quand vim (qui n'est même pas un langage de programmation) peut rivaliser avec les langages de golf. :) L'entrée se présente sous ce format:

a
b

Cela incrémente simplement le premier nombre de un (c'est la <C-a>partie), puis joint les représentations sous forme de chaîne des deux nombres. Autant que je sache, cela ne devrait jamais aboutir à la somme.


9

Brain-Flak , 8 octets

({}{}())

Essayez-le en ligne!

C’est la réponse la plus lisible que je n’ai jamais faite à propos du cerveau. :)

Explication:

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

Solutions alternatives (également 8 octets):

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

Il y a beaucoup d'autres solutions qui ne fonctionnent qu'avec des nombres positifs:

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

7

Gelée , 2 octets

+‘

Le + additionne les deux entrées puis le 'incrémente la réponse d'une unité

Essayez-le en ligne!


Cette réponse me rend gelée.
MD XF

Je parie que c'est le cas: P
Christopher

Techniquement ce n'est pas , (a+b)+1mais a+(b+1)parce que la chaîne dyade-monade fGest traitée comme f(a, G(b)). Dans ce cas, c'est la même chose mais techniquement, son fonctionnement est différent: P
HyperNeutrino

6

TI-Basic, 3 octets

not(max(Ans

Solutions alternatives:

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

Il est intéressant de noter que vous avez créé les exemples de la question dans TI-Basic, mais vous avez oublié le plus court A=B(ou peut-être que c'était à nous de le découvrir?)


1
Personne n'aime cela lorsque le PO affiche une solution très courte à la question, ce qui la rend difficile à battre.
mbomb007

@ mbomb007 Je suppose, mais il ne s'agissait que de fragments et non de programmes complets. Leur ajout Prompt A,B:porte le nombre d'octets à huit octets chacun.
Timtech

1
@ Timtech Exactement. Je ne voulais pas donner de bonnes réponses à titre d'exemple, je voulais juste des exemples.
Julian Lachniet

@JulianLachniet Je comprends et j'apprécie cela :)
Timtech

6

Brachylog , 2 octets

+<

Essayez-le en ligne!

Explication

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

Cela aura toujours comme conséquence A+B+1, si Input = [A, B].


5

Mathematica, 5 octets

1+##&

Affiche la somme des deux arguments plus 1. Par exemple, 1+##&[2,5]donne 8.

(Note latérale: Cela Binomialfonctionne presque, bien Binomial[1,0]=1que ce Binomial[4,2]=6soient des contre-exemples; je pense que ce sont les seuls contre-exemples, cependant.)


Pochhammersemble être un meilleur que Binomial. Autant que je sache, il ne fait 1,0qu'échouer.
Martin Ender

Ah, et KroneckerDeltafonctionne pour toutes les entrées (étant l'équivalent du contrôle d'égalité dans certains des esolangs). En réalité, il est plus court de le réimplémenter Boole[#==#2]&, mais je suppose que vous cherchiez un programme intégré qui fonctionne tel quel.
Martin Ender

5

PHP, 17 octets

<?=1-join($argv);

Courez comme ça:

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

Explication

Cela ne fait que concaténer les arguments. Le premier argument (nom du script) contient -. Cela donne donc un nombre négatif que je nie avec le signe moins. Ensuite, j'ajoute 1, juste au cas où le premier numéro entré est un 0(0123 = 123).



4

Tortue , 12 octets

fait de très grands nombres

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

Essayez-le en ligne!

Explication:

'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]

Il délivre donc 10 ** (x + y).



4

Java (OpenJDK 9) , 10 octets

a->b->a-~b

Essayez-le en ligne!


1
Avec curryfication, vous pouvez épargner un octet: a->b->a-~b. Fonctionne également avec Java 8, toutes les éditions (il n'est donc pas nécessaire de spécifier OpenJDK 9)
Olivier Grégoire

@ OlivierGrégoire Java a commencé à ressembler à JS maintenant> _>
Kritixi Lithos

@KritixiLithos Eh bien ... nous avions un pressentiment que cela se produirait pendant des années: Java Script ;-)
Olivier Grégoire

@KritixiLithos La spécification pour Java 9 comporte une section intitulée «Conformité ECMAScript 6».
Pavel

@ OlivierGrégoire Oui, mais cette soumission a été générée automatiquement, c'est pourquoi le 9 a été ajouté.
Pavel

4

HODOR , 40 octets (non concurrents)

C'est probablement le programme le plus court jamais écrit par Hodor!

C’est ce qui se produit lorsque vous n’avez rien à faire pendant les vacances scolaires de deux semaines: créez un ensemble de langages de plaisanterie très facilement codés qui ne font absolument rien. Yay pour les vacances scolaires !!!

Walder
Hodor?!
Hodor?!
Hodor HODOR!
HODOR!!!

Walder était le nom original de Hodor et est donc nécessaire pour commencer le programme.

Hodor?! prend un numéro de STDIN ou un seul caractère et définit l'accumulateur sur l'entrée

Hodor ajouter 1 à l'accumulateur

HODOR! sort l'accumulateur sous forme de nombre

HODOR!!!tue Hodor! Noooooo!

C'est le pseudo code:

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

1
Je pense que vous devez proposer un nom différent pour votre langue, à moins qu'il s'agisse d'un interprète du langage Hodor préexistant créé en 2015, ce dont je suis à peu près sûr.
mbomb007

@ mbomb007 Non, ce n'est pas la mienne, mais il existe des langues avec des noms en double. Je connais deux appelées 7 sur ce site (je ne les trouve pas pour le moment)
caird coinheringaahing

1
Je suis à peu près sûr qu'il n'y en a qu'un qui s'appelle 7, et c'est celui-là . Vous pouvez modifier la capitalisation du titre pour une solution simple, comme HODOR.
mbomb007

@ mbomb007 est à moi H odeur et leur est h odeur si cela pourrait être suffisant?
Caird coinheringaahing

Non, le leur a la majuscule H, comme vous pouvez le constater chaque fois qu'il utilise le nom de la langue sur son site Web.
mbomb007

3

SmileBASIC, 4 octets

!A+B

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


Par curiosité, comment cela vous aide- 2+1t-il?
ATaco

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

3

R, 13 octets

sum(scan()+1)

Merci à Jonathan Allan pour ses contributions!


@ JonathanAllan: Vous avez raison, j'ai changé ma réponse. Merci !
Frédéric

OK, c'est à peu près 00le même que 0peut sep="1"- être ?
Jonathan Allan

@ JonathanAllan: merde! Merci encore !
Frédéric

En regardant les astuces pourscan() jouer au golf en R, il semble que ça devrait aller, accepter une entrée vectorielle, comme celle-ci . Mais nous pouvons mieux faire un octet avec cat(sum(scan()+1)). Peut-être est-il plus court?
Jonathan Allan

1
Avec le catprogramme complet, l’alternative serait une fonction non nommée pour le même coût en octetsfunction(a,b)a+b+1
Jonathan Allan

3

05AB1E , 1 octet

Q

Fonctionne comme la RProgNréponse.

Vérifie si aet bsont les mêmes. Si oui, imprimez 1. Sinon, imprimez0

Essayez-le en ligne!


3
¢(a.count (b)) devrait également fonctionner pour 1 octet.
Riley

@ Riley, vous pouvez poster cela comme votre propre réponse.
Okx

2
Ce n'est pas assez différent pour avoir besoin de sa propre réponse. Je pensais que nous pourrions combiner les deux solutions à un octet en une seule réponse.
Riley

3

C 26 24 19 octets

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

Version non-golfée:

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

J'espère que j'ai bien spécifié les spécifications. Peut certainement être raccourci !?

@Pavel Merci d'avoir économisé 2 octets

@ Neil Merci pour votre contribution.


1
Avez-vous besoin ()autour !c+d?
Pavel

@Pavel Vous avez raison, les crochets étaient inutiles, mis à jour!
Abel Tom

2
Pas sûr à 100% mais je pense que vous pouvez supprimer l'espace dans votre return, commereturn!c+d;
Metoniem

1
Perdez le retour et assignez-le avec quelque chose comme c + =! D
Ahemone

1
@ AlbertRenshaw Ce n'est pas une chose sur laquelle je m'appuyer pour la portabilité, mais voici quelques exemples. Je ne peux pas le faire fonctionner en mode hors connexion et il semble qu'il doit être affecté à une variable d'arguments non Tio .. tio.run/nexus/...
Ahemone

3

MATLAB / Octave, 3 octets

@eq

Accepte deux entrées et vérifie l’égalité et donne les rendements 1s’ils sont égaux et 0autres.

Démo en ligne


4
Cela ne devrait pas être @eq? Cela retourne un descripteur de fonction qui peut être utilisé pour évaluer la fonction désirée, alors que cela eqn'a aucun sens.
Sanchises

@Sanchises J'ai vu beaucoup de réponses aller dans les deux sens: codegolf.stackexchange.com/questions/106149/compute-the-median/… . Je ne suis pas vraiment sûr de ce qui est préféré.
Suever

Hmmm. Je devrais penser que cela ressemble plus à un extrait, alors @qu’il le transforme en une construction de langage valide. Mais peut-être que je suis juste pédant.
Sanchises

3

brainfuck, 12 octets

Solution simple qui produit A+B+1.

,>,[-<+>]<+.

Essayez-le en ligne


Réponse alternative (12 octets):,>,[-<++>]<.
Julian Lachniet le

@ JulianLachniet cette sortie A + 2B?
george

A + 2B piraté quand B = 0
l4m2

@ mbomb007 Je dis la ,>,[-<++>]<.solution
l4m2

@JulianLachniet Ouais, ce n'est pas une réponse valable car A + 2B pour l'entrée B = 0, donne A.
mbomb007

3

dc , 5 octets

?1n+n

Essayez-le en ligne!

Entrée: deux nombres naturels séparés par un espace sur stdin.

Sortie: Le chiffre 1 immédiatement suivi de la somme des deux nombres, qui est un nombre supérieur à la somme des deux nombres.

Exemple:

Contribution: 222 333

Sortie: 1555


3

PHP, 13 octets; (17 REPL-moins)

!max($argv)+0

Exemples

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

Pour ceux sans REPL utiliser

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

et courir en utilisant

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

Cette réponse n'est pas valide car elle ne génère rien
aross

@aross Si la distribution booléenne était un problème, j'ai mis à jour ma réponse
mleko

Oui, vous avez abordé les deux problèmes. La sortie serait vraie / fausse, pas 1/0. Aussi, REPL :)
aross

3

Cubix, 9 8 octets

u-~OII/@

Explication

Développé, cette réponse ressemble à ceci:

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

L'ordre des instructions qui sont exécutées est II~-O@

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

Testé pour toutes les combinaisons d'entrées où les deux sont dans la plage 0-100.

Essayez ici .


3

APL - 4 octets

1++/

Prend array, somme ses éléments et en ajoute un. Tester:

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


3

Hexagonie , 7 octets

?<.!?)@

Essayez-le en ligne!

Ou dans un format plus lisible,

 ? <
. ! ?
 ) @

Cela bat la solution actuelle de Hexagony de 11 octets.

Explication:

Si le premier nombre n'est pas 0, le programme suit le chemin suivant:

Pas 0

Cela lit le premier numéro et branche à droite. Ensuite, il lit le deuxième numéro, suivi d'un retour à la ligne et d'une tentative d'en lire un troisième, mais il n'existe pas et lit donc 0. Il est imprimé et le programme est terminé (notez que si a> 0, puisque b est non négatif, a + b> 0).

Si le premier nombre est 0, le programme suit le chemin suivant:

Est 0

Ceci lit le premier numéro et les branches à gauche. Il frappe le coin, prenant la route le long du bord nord-ouest parce que le nombre est 0 et lit le deuxième nombre. Il encapsule puis incrémente le deuxième nombre et s'imprime.

Est toujours 0

Il rebondit sur le <, imprimant à nouveau la deuxième entrée incrémentée. Il incrémente la valeur et reprend le bord nord-est, mais cette fois-ci, le bord actuel est une valeur non négative incrémentée deux fois, qui est définitivement positive. Il essaie ensuite d'obtenir une troisième entrée, mais reçoit 0 à la place.

Est encore 0 un peu plus

Finalement, il encapsule et est détourné par la flèche, puis tente de lire une quatrième entrée et obtient à nouveau 0. Il encapsule et tente de lire une cinquième entrée et reçoit 0 pour la dernière fois. Cela l’imprime et s’enveloppe jusqu’à la @sortie.

Notez que b * (10 ^ k + 1) * 10> 0 + b = b où k est la longueur de b en chiffres, donc cela fonctionne.


2

Billard , 11 caractères = 17 octets

⇲
⇲
+
1
+
↥

Implements x + y + 1. Assez élémentaire. Il prend les entrées sur deux lignes distinctes. (Au fait, la langue a été légèrement modifiée après le challenge, mais uniquement pour empêcher la saisie de l'invite, sans savoir si cette réponse est toujours valide).

7 caractères = 11 octets, non en compétition

Celui-ci est plus court mais n'est possible qu'après une nouvelle mise à jour de la langue:

⇲
⇲
=
$

Ceci utilise x == y, qui a été volé sans vergogne de la solution RProgN de @ ATaco [espérons que cela ne vous dérange pas (:]. Le $, à la sortie, affiche le nombre de balles passées dessus.


slightly after the languageune faute de frappe, aussi je pense que lorsque la langue avait l'invite de saisie, il serait toujours valide. Je ne pense pas que les normes de sortie soient aussi strictes et que les sorties non supprimables sont permises, je pense
Lemon destructible

@DestructibleWatermelon Oh, c'était une faute de frappe étrange. Merci pour la clarification. En fait, j’ai modifié le langage, puis j’ai vu le défi et j’ai donc décidé d’ajouter cette note au cas où quelqu'un déciderait de vérifier avec précision le moment de la transmission de la requête à GitHub, mais je vous remercie pour cette précision.
HyperNeutrino
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.