Objetivo:
Dados dois números naturais (números inteiros de 0 ao infinito), imprima um número que não seja a soma desses números, mas que seja um número natural.
Exemplos de soluções (TI-Basic):
A+B+1
not(A+B)
Soluções inválidas:
A+B-1
(para entradas0,0
, retorna-1
, o que não é natural)"ABC"
(ABC
não é um número)
Notas:
A saída deve sempre ser uma soma de dois números naturais (que na verdade é apenas um número natural)
-1
,undefined
,infinity
,NaN
E mensagens de erro não são números naturais. Para nossos propósitos,0
é natural (embora nem todos os matemáticos concordem).
code-golf
number
arithmetic
Julian Lachniet
fonte
fonte
Respostas:
RProgN ,
431 ByteO riscado 4 ainda é 4; (
A mais simples das soluções compara se A e B são iguais. Envia true, que RProgN vê como 1, se forem iguais, ou false, também conhecido como 0, caso contrário.
Casos de teste
Experimente online!
fonte
Retina , 3 bytes
Experimente online!
(A primeira linha tem um espaço antes da nova linha. O Stack Exchange não é muito bom em mostrar espaços em branco à direita.)
Entrada são os números em decimal, separados por um espaço (por exemplo
12 34
). Este programa apenas altera o espaço para a1
, criando um número muito grande para ser a soma dos números de entrada (ele necessariamente possui pelo menos mais 2 dígitos do que qualquer um deles, e a adição de dois números produz uma saída com não mais que 1 dígito a mais que o entrada maior).fonte
0 0
também deve funcionar.010
é considerado um número inteiro através de basicamente todos os analisadores de números inteiros. Eu posso ver um argumento potencial0 8
inválido com base no que018
é considerado octal inválido por meio de alguns analisadores de números inteiros (embora seja considerado 18 decimal por outros). Observe que este programa está muito satisfeito em lidar com os zeros iniciais na entrada , tratando-os como decimais; e escrevi programas que produzem zeros à esquerda para outras perguntas sem que as pessoas percebam um problema. Existe uma meta post relevante sobre o assunto?.
1
se você não quiser devolver zeros à esquerda.Python , 13 bytes
Experimente online! Recebe a entrada como uma tupla.
O uso de um método de objeto para a função evita o clichê de a
lambda
.Aqui, a idéia é mapear
(0,0)
para1
e tudo o mais para0
. Como apenas0+0
fornece uma soma0
entre números naturais, isso sempre evita corresponder à soma.Se alguém pudesse produzir um booleano aqui, o que acho obscuro, um byte poderia ser salvo como
Isso verifica se a tupla de entrada é no máximo
(0,0)
, o que é verdadeiro apenas para(0,0)
. Em Python,True==1
eFalse==0
. Ainda mais sombrio, a saída via código de saída e o tratamento como um Python Boolen economizaria dois bytes:Se a E / S da string for permitida e os zeros à esquerda estiverem OK, existe a solução de 8 bytes
Isso concatena
a1b
, que é sempre maior quea+b
.fonte
int.__eq__
para 10 bytesMATL et al. 1 byte
Aceita dois números naturais como entradas e os compara. Se eles são iguais, a saída é
1
e, se não forem iguais, a saída é0
. Essa é a mesma abordagem da solução da @ ATaco.MATL
Geléia (por @ ais523)
Stacked (de @Conor O'Brien)
APL (Dyalog APL) (por @ Adám)
J (por @ Adám)
Na verdade (por @Mego)
Implícito (por @MD XF)
fonte
=
solução também funciona no Jelly por 1 byte. Eu pensei em mencioná-lo nos comentários, pois não parece valer a pena criar uma resposta separada para a solução trivial.Javascript, 10 bytes
Toma dois números usando a sintaxe de currying da seguinte forma:
fonte
Vim, 3 bytes / pressionamentos de tecla
Experimente online!
Observe que
<C-a>
na verdade é ctrl-a , que representa byte0x01
.Adoro quando o vim (que nem sequer é uma linguagem de programação) pode competir com as linguagens do golfe. :) A entrada vem neste formato:
Isso simplesmente incrementa o primeiro número em um (esta é a
<C-a>
parte) e, em seguida, une as representações de string dos dois números. Até onde eu sei, isso nunca deve resultar na soma.fonte
Flak cerebral , 8 bytes
Experimente online!
Esta é a resposta mais fácil de ler que já escrevi. :)
Explicação:
Soluções alternativas (também 8 bytes):
Existem várias outras soluções que funcionam apenas com números positivos:
fonte
Geléia , 2 bytes
O + adiciona as duas entradas e o 'incrementa a resposta em um
Experimente online!
fonte
(a+b)+1
masa+(b+1)
porque a cadeia da díade-mônadafG
é tratada comof(a, G(b))
. Nesse caso, é a mesma coisa, mas tecnicamente é diferente: P #TI-Basic, 3 bytes
Soluções alternativas:
É interessante que você tenha feito os exemplos da pergunta no TI-Basic, mas você esqueceu o mais curto
A=B
(ou talvez tenhamos sido nós que descobrimos?)fonte
Prompt A,B:
a eles aumenta a contagem de bytes para oito bytes cada.Braquilog , 2 bytes
Experimente online!
Explicação
Isso sempre resultará em
A+B+1
, seInput = [A, B]
.fonte
Mathematica, 5 bytes
Produz a soma dos dois argumentos mais 1. Por exemplo,
1+##&[2,5]
produz8
.(Nota:
Binomial
quase funciona, emboraBinomial[1,0]=1
eBinomial[4,2]=6
são contra-exemplos, eu acho que eles são os únicos contra-exemplos, no entanto.)fonte
Pochhammer
parece ser um melhor queBinomial
. Tanto quanto eu posso dizer, apenas1,0
falha.KroneckerDelta
funciona para todas as entradas (sendo o equivalente da verificação de igualdade em alguns dos esolangs). Na verdade, é mais curto para reimplementar comoBoole[#==#2]&
, mas presumo que você estava procurando por um built-in que funcionasse como está.PHP, 17 bytes
Execute assim:
Explicação
Isso apenas concatena os argumentos. O primeiro argumento (nome do script) contém
-
. Então isso resulta em um número negativo, que eu nego com o sinal de menos. Então adiciono 1, caso o primeiro número de entrada seja a0
(0123 = 123).fonte
Perl 6 , 4 bytes
Um lambda (formado por Whatever-currying ), que adiciona o inverso booleano (1 ou 0) do primeiro argumento ao segundo argumento.
Experimente online!
fonte
Turtlèd , 12 bytes
faz números muito grandes
Experimente online!
Explicação:
Assim, gera 10 ** (x + y).
fonte
PHP, 19 bytes
fonte
Java (OpenJDK 9) , 10 bytes
Experimente online!
fonte
a->b->a-~b
. Também trabalha com Java 8, qualquer edição (por isso não há necessidade de especificar o OpenJDK 9)HODOR , 40 bytes (não concorrente)
Este é provavelmente o programa mais curto que Hodor já escreveu!
É o que acontece quando você não tem nada para fazer durante as férias escolares de duas semanas: produza um monte de linguagens de piadas realmente facilmente codificadas que não fazem absolutamente nada. Yay para férias escolares !!!
Walder
era o nome original de Hodor e, portanto, é necessário para iniciar o programa.Hodor?!
pega um número de STDIN ou um único caractere e define o acumulador para a entradaHodor
adicione 1 ao acumuladorHODOR!
gera o acumulador como um númeroHODOR!!!
mata Hodor! Nããããão!Este é o pseudo-código:
fonte
SmileBASIC, 4 bytes
não (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
fonte
2+1
?2+1=3 -> !2+1 -> 0+1=1
R, 13 bytes
Obrigado a Jonathan Allan por suas contribuições!
fonte
00
é o mesmo0
que, talvezsep="1"
?scan()
deve estar bem, aceitando uma entrada de vetor, como esta . Mas podemos fazer um byte melhor comcat(sum(scan()+1))
. Talvez haja mais curto?cat
que é um programa completo, a alternativa seria uma função sem nome para o mesmo custo bytefunction(a,b)a+b+1
05AB1E , 1 byte
Funciona da mesma forma que a
RProgN
resposta.Verifica se
a
eb
é o mesmo. Se sim, imprima1
. Caso contrário, imprima0
Experimente online!
fonte
¢
(a.count (b)) também deve funcionar para 1 byte.C
262419 bytesVersão não destruída:
Espero ter acertado as especificações. Definitivamente pode ser encurtado !?
@Pavel Obrigado por salvar 2 bytes
@ Neil Obrigado pela sua contribuição.
fonte
()
aí!c+d
?return
, comoreturn!c+d;
MATLAB / oitava, 3 bytes
Aceita duas entradas e verifica a igualdade e produz
1
se forem iguais ou0
não.Demo Online
fonte
@eq
? Isso retorna um identificador de função que pode ser usado para avaliar a função desejada, enquanto apenaseq
não faz sentido.@
transforma em uma construção de linguagem válida. Mas talvez eu esteja apenas sendo pedante.brainfuck, 12 bytes
Solução simples que gera
A+B+1
.Experimente online
fonte
,>,[-<++>]<.
,>,[-<++>]<.
soluçãodc , 5 bytes
Experimente online!
Entrada: Dois números naturais separados por um espaço em stdin.
Saída: o dígito 1 seguido imediatamente pela soma dos dois números, que é um número maior que a soma dos dois números.
Exemplo:
Entrada:
222 333
Saída:
1555
fonte
PHP, 13 bytes; (17 sem REPL)
Exemplos
Para aqueles sem uso de REPL
e corra usando
fonte
Cubix,
98 bytesExplicação
Expandida, esta resposta tem a seguinte aparência:
A ordem das instruções executadas é
II~-O@
Testado para todas as combinações de entradas em que ambas estão no intervalo
0-100
.Experimente aqui .
fonte
APL - 4 bytes
Pega array, soma seus elementos e adiciona um. Teste:
fonte
√ å ı ¥ ® Ï Ø ¿ , 4 bytes
Para gerar, adicione
o
no final.fonte
Hexagonia , 7 bytes
Experimente online!
Ou em um formato mais legível,
Isso supera a atual solução Hexagony de 11 bytes.
Explicação:
Se o primeiro número não for 0, o programa seguirá o seguinte caminho:
Isso lê o primeiro número e ramifica à direita. Em seguida, ele lê o segundo número, seguido pelo empacotamento e pela tentativa de ler um terceiro, mas isso não existe e, portanto, lê 0. Isso é impresso e o programa é encerrado (observe que, se a> 0, pois b não é negativo a + b> 0).
Se o primeiro número for 0, o programa seguirá o seguinte caminho:
Lê o primeiro número e ramificações restantes. Ele atinge a esquina, seguindo a rota ao longo da borda noroeste, porque o número é 0 e lê o segundo número. Ele envolve, depois incrementa o segundo número e imprime.
Ele salta contra o
<
, imprimindo a segunda entrada incrementada novamente. Ele incrementa o valor e retoma a borda nordeste novamente, mas desta vez porque a borda atual é um valor não negativo duas vezes incrementado que é definitivamente positivo. Em seguida, tenta obter uma terceira entrada, mas recebe 0.Finalmente, envolve e é desviado pela seta, tenta ler uma quarta entrada e obtém 0 novamente. Ele envolve e tenta ler uma quinta entrada e recebe 0 pela última vez. Isso imprime e envolve as
@
saídas e.Observe que b * (10 ^ k + 1) * 10> 0 + b = b onde k é o comprimento de b em dígitos, portanto, isso funciona.
fonte
Bilhar , 11 caracteres = 17 bytes
Implementos
x + y + 1
. Bem elementar. Leva as entradas em duas linhas separadas. (A propósito, o idioma foi modificado um pouco após o desafio, mas apenas para suprimir a solicitação de entrada, sem ter certeza se essa resposta ainda é válida).7 caracteres = 11 bytes, não concorrente
Este é mais curto, mas só é possível após uma nova atualização do idioma:
Esse uso
x == y
, que foi descaradamente roubado da solução RProgN da @ ATaco [espero que você não se importe (:]. O$
, na saída, gera quantas bolas passaram por ele.fonte
slightly after the language
erro de digitação, também acho que quando o idioma tinha o prompt de entrada, ainda seria válido. Eu não acho que os padrões de saída são de que saídas rigorosos, e não supressível são permitidos eu acho