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ées0,0
, ça retourne-1
, ce qui n'est pas naturel)"ABC"
(ABC
n'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
,NaN
Et les messages d'erreur ne sont pas des nombres naturels. Pour nos besoins,0
c'est naturel (bien que tous les mathématiciens ne soient pas d'accord).
code-golf
number
arithmetic
Julian Lachniet
la source
la source
Réponses:
RProgN ,
431 Byte4 sont encore barrés sur 4 (
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
Essayez-le en ligne!
la source
Rétine , 3 octets
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 a1
, 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).la source
0 0
devrait également fonctionner.010
est considéré comme un entier via essentiellement tous les analyseurs syntaxiques. Je peux voir un argument potentiel0 8
non valide sur la base d'018
une 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?.
1
si vous ne voulez pas retourner vous-même les zéros non significatifs.Python , 13 octets
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
.Ici, l’idée est de mapper
(0,0)
vers1
et tout le reste0
. Puisque ne0+0
donne qu'une somme0
parmi 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
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==1
etFalse==0
. De manière encore plus obscure, sortir par le code de sortie et le traiter comme un booléen Python économiserait deux octets: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.
Cela concatène
a1b
, ce qui est toujours plus gros quea+b
.la source
int.__eq__
pour 10 octetsMATL et al. 1 octet
Accepte deux nombres naturels comme entrées et les compare. S'ils sont égaux, la sortie l'est
1
et s'ils ne sont pas égaux, la sortie l'est0
. C'est la même approche que la solution de @ ATaco.MATL
Gelée (par @ ais523)
Stacked (par @Conor O'Brien)
APL (Dyalog APL) (par @ Adám)
J (par @ Adám)
En fait (par @Mego)
Implicite (par @MD XF)
la source
=
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.Javascript, 10 octets
Prend 2 nombres en utilisant la syntaxe de currying comme ceci:
la source
Vim, 3 octets / frappes
Essayez-le en ligne!
Notez que
<C-a>
est en fait ctrl-un , ce qui représente l' octet0x01
.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:
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.la source
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:
Solutions alternatives (également 8 octets):
Il y a beaucoup d'autres solutions qui ne fonctionnent qu'avec des nombres positifs:
la source
Gelée , 2 octets
Le + additionne les deux entrées puis le 'incrémente la réponse d'une unité
Essayez-le en ligne!
la source
(a+b)+1
maisa+(b+1)
parce que la chaîne dyade-monadefG
est traitée commef(a, G(b))
. Dans ce cas, c'est la même chose mais techniquement, son fonctionnement est différent: PTI-Basic, 3 octets
Solutions alternatives:
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?)la source
Prompt A,B:
porte le nombre d'octets à huit octets chacun.Brachylog , 2 octets
Essayez-le en ligne!
Explication
Cela aura toujours comme conséquence
A+B+1
, siInput = [A, B]
.la source
Mathematica, 5 octets
Affiche la somme des deux arguments plus 1. Par exemple,
1+##&[2,5]
donne8
.(Note latérale: Cela
Binomial
fonctionne presque, bienBinomial[1,0]=1
que ceBinomial[4,2]=6
soient des contre-exemples; je pense que ce sont les seuls contre-exemples, cependant.)la source
Pochhammer
semble être un meilleur queBinomial
. Autant que je sache, il ne fait1,0
qu'échouer.KroneckerDelta
fonctionne 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émenterBoole[#==#2]&
, mais je suppose que vous cherchiez un programme intégré qui fonctionne tel quel.PHP, 17 octets
Courez comme ça:
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 un0
(0123 = 123).la source
Perl 6 , 4 octets
Un lambda (formé par Whatever-currying ), qui ajoute l'inverse booléen (1 ou 0) du premier argument au second argument.
Essayez-le en ligne!
la source
Tortue , 12 octets
fait de très grands nombres
Essayez-le en ligne!
Explication:
Il délivre donc 10 ** (x + y).
la source
PHP, 19 octets
la source
Java (OpenJDK 9) , 10 octets
Essayez-le en ligne!
la source
a->b->a-~b
. Fonctionne également avec Java 8, toutes les éditions (il n'est donc pas nécessaire de spécifier OpenJDK 9)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
é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éeHodor
ajouter 1 à l'accumulateurHODOR!
sort l'accumulateur sous forme de nombreHODOR!!!
tue Hodor! Noooooo!C'est le pseudo code:
la source
SmileBASIC, 4 octets
pas (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
la source
2+1
t-il?2+1=3 -> !2+1 -> 0+1=1
R, 13 octets
Merci à Jonathan Allan pour ses contributions!
la source
00
le même que0
peutsep="1"
- être ?scan()
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 aveccat(sum(scan()+1))
. Peut-être est-il plus court?cat
programme complet, l’alternative serait une fonction non nommée pour le même coût en octetsfunction(a,b)a+b+1
05AB1E , 1 octet
Fonctionne comme la
RProgN
réponse.Vérifie si
a
etb
sont les mêmes. Si oui, imprimez1
. Sinon, imprimez0
Essayez-le en ligne!
la source
¢
(a.count (b)) devrait également fonctionner pour 1 octet.C
262419 octetsVersion non-golfée:
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.
la source
()
autour!c+d
?return
, commereturn!c+d;
MATLAB / Octave, 3 octets
Accepte deux entrées et vérifie l’égalité et donne les rendements
1
s’ils sont égaux et0
autres.Démo en ligne
la source
@eq
? Cela retourne un descripteur de fonction qui peut être utilisé pour évaluer la fonction désirée, alors que celaeq
n'a aucun sens.@
qu’il le transforme en une construction de langage valide. Mais peut-être que je suis juste pédant.brainfuck, 12 octets
Solution simple qui produit
A+B+1
.Essayez-le en ligne
la source
,>,[-<++>]<.
,>,[-<++>]<.
solutiondc , 5 octets
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
la source
PHP, 13 octets; (17 REPL-moins)
Exemples
Pour ceux sans REPL utiliser
et courir en utilisant
la source
Cubix,
98 octetsExplication
Développé, cette réponse ressemble à ceci:
L'ordre des instructions qui sont exécutées est
II~-O@
Testé pour toutes les combinaisons d'entrées où les deux sont dans la plage
0-100
.Essayez ici .
la source
APL - 4 octets
Prend array, somme ses éléments et en ajoute un. Tester:
la source
√ å ı ¥ ® Ï Ø ¿ , 4 octets
Pour sortir, ajouter
o
à la fin.la source
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:
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:
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.
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.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.
la source
Billard , 11 caractères = 17 octets
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.la source
slightly after the language
une 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