Notcalc (Calcule la respuesta incorrecta)


33

Gol:

Dados dos números naturales (enteros de 0 a infinito), genera un número que no es la suma de esos números, sino que es un número natural.

Soluciones de ejemplo (TI-Basic):

  • A+B+1

  • not(A+B)

Soluciones inválidas:

  • A+B-1(para las entradas 0,0, regresa -1, lo que no es natural)

  • "ABC"( ABCno es un número)

Notas:

  • La salida siempre debe ser una suma de dos números naturales (que en realidad es solo un número natural)

  • -1, undefined, infinity, NaNY los mensajes de error no son números naturales. Para nuestros propósitos, 0es natural (aunque no todos los matemáticos están de acuerdo).


1
¿Tal vez tomamos los números como cadenas y la salida como una cadena?
xnor

1
¿Puede la salida tener ceros a la izquierda?
Kritixi Lithos

1
Supongo que los desbordamientos deben tenerse en cuenta, por lo que el resultado de 2 ^ 32 -1 y 2 no debería ser negativo, ¿verdad?
adrianmp

1
Solo un pequeño comentario porque me gusta prestar atención a los detalles inútiles: 0 no es un número natural. Si cambia la primera oración a "Dados dos enteros no negativos ...", no me quedará ningún detalle inútil para comentar. :)
peech

66
@peech Esto no es cierto. 0 se considera un número natural bajo algunas definiciones. No puede verlo porque se ha eliminado, pero ha habido una extensa conversación sobre este asunto.
Wheat Wizard

Respuestas:


36

RProgN , 4 3 1 Byte

Tachado 4 sigue siendo 4; (

E

La solución más simple, compara si A y B son iguales. Pushes verdadero, que RProgN ve como 1, si son iguales, o falso aka 0 de lo contrario.

Casos de prueba

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

Pruébalo en línea!


22
Acabo de bajar por la madriguera del conejo con tu enlace tachado. Lo califico como <s> 4 </s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala sostengo mi 4, voy a entrar
Albert Renshaw

44
̶4̶ <- u + 0336 (combinación de caracteres) puede ser una mejor manera de hacerlo
Albert Renshaw


3
@AlbertRenshaw el viejo PPCG tachado de 4-a-roo?
Rɪᴋᴇʀ

15

Retina , 3 bytes

 
1

Pruébalo en línea!

(La primera línea tiene un espacio antes de la nueva línea. Stack Exchange no es muy bueno para mostrar espacios en blanco al final).

La entrada son los números en decimal, separados por un espacio (p 12 34. Ej .). Este programa simplemente cambia el espacio a a 1, creando un número demasiado grande para ser la suma de los números de entrada (necesariamente tiene al menos 2 dígitos más que cualquiera de los dos, y sumar dos números produce una salida con no más de 1 dígito más que el mayor entrada).


2
0 0También debería funcionar.
Dennis

1
@ Dennis: Me preguntaba sobre eso. 010se considera un número entero a través de básicamente todos los analizadores enteros. Puedo ver un argumento potencial que 0 8no es válido sobre la base de que 018se considera octal inválido a través de algunos analizadores enteros (aunque otros lo consideran 18 decimal). Tenga en cuenta que este programa se complace en manejar los ceros iniciales en la entrada , tratándolos como decimales; y he escrito programas que generan ceros iniciales para otras preguntas sin que la gente vea un problema. ¿Hay una meta publicación relevante sobre el tema?

2
O . 1si no desea devolver los ceros iniciales usted mismo.
Martin Ender

@MartinEnder> pero es un número natural
wizzwizz4

@ wizzwizz4 No estoy siguiendo.
Martin Ender

15

Python , 13 bytes

[(0,0)].count

Pruébalo en línea! Toma la entrada como una tupla.

El uso de un método de objeto para la función evita la repetitiva de a lambda.

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

Aquí, la idea es asignar (0,0)a 1y todo lo demás a 0. Como solo 0+0da una suma de 0entre los números naturales, eso siempre evita hacer coincidir la suma.

Si uno pudiera generar un booleano aquí, lo que me parece sospechoso, un byte podría guardarse como

(0,0).__ge__

Esto comprueba si la tupla de entrada es como máximo (0,0), lo cual solo es cierto para (0,0). En Python, True==1y False==0. Aún más sombrío, la salida a través del código de salida y el tratamiento como un Python Boolen ahorraría dos bytes:

[(0,0)].pop

Si la cadena de E / S está permitida y los ceros iniciales están bien, existe la solución de 8 bytes

'1'.join

Esto concatena a1b, que siempre es más grande que a+b.


1
int.__eq__por 10 bytes
Azul

@muddyfish Sí, también vi la respuesta de Suever, no pensé en usar la igualdad. Sin embargo, devuelve un bool, que creo que es dudoso en un desafío que solicita una salida numérica.
xnor

1
OMI si nada como un número y grazna como un número, es razonable suponer que es un número.
CalculatorFeline

13

MATL y col. 1 byte

=

Acepta dos números naturales como entradas y los compara. Si son iguales, la salida es 1y si no son iguales, la salida es 0. Este es el mismo enfoque que la solución de @ ATaco.


3
La =solución también funciona en Jelly por 1 byte. Pensé que lo mencionaría en los comentarios, ya que no parece que valga la pena crear una respuesta separada para la solución trivial.

@ ais523 Actualizado para incluir eso. Gracias.
Suever

2
También en apilado. Pruébalo en línea!
Conor O'Brien

¿Puedes agregar APL y J?
Adám

@ Adám Claro que sí. ¿Tiene un enlace TIO al que puedo vincularme?
Suever

10

Javascript, 10 bytes

x=>y=>!x+y

Toma 2 números usando la sintaxis de curry así:

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

44
Bienvenido al sitio! :)
DJMcMayhem

Gracias =) He estado leyendo desafíos por un tiempo, solo tratando de encontrar un buen lugar para comenzar.
Malivil

9

Vim, 3 bytes / pulsaciones de teclas

<C-a>gJ

Pruébalo en línea!

Tenga en cuenta que en <C-a>realidad es ctrl-a , que representa el byte 0x01.

Me encanta cuando vim (que ni siquiera es un lenguaje de programación) puede competir con los lenguajes de golf. :) La entrada viene en este formato:

a
b

Esto simplemente incrementa el primer número en uno (Esta es la <C-a>parte) y luego une las representaciones de cadena de los dos números juntos. Por lo que puedo decir, esto nunca debería resultar en la suma.


9

Brain-Flak , 8 bytes

({}{}())

Pruébalo en línea!

Esta es la respuesta mental más legible que he escrito. :)

Explicación:

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

Soluciones alternativas (también 8 bytes):

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

Hay muchas otras soluciones que solo funcionan con números positivos:

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

7

Jalea , 2 bytes

+‘

El + agrega las dos entradas juntas y luego 'incrementa la respuesta en uno

Pruébalo en línea!


Esta respuesta me hace gelatina.
MD XF

Apuesto a que sí: P
Christopher

Técnicamente esto no es (a+b)+1sino a+(b+1)porque la cadena díada-mónada fGse trata como f(a, G(b)). En este caso es lo mismo, pero técnicamente su funcionamiento es diferente: P
HyperNeutrino

6

TI-Basic, 3 bytes

not(max(Ans

Soluciones alternativas:

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 interesante que haya hecho los ejemplos de la pregunta en TI-Basic, pero olvidó el más corto A=B(¿o tal vez fue nuestra decisión averiguarlo?)


1
A nadie le gusta cuando el OP publica una solución súper corta en la pregunta, lo que dificulta su superación.
mbomb007

@ mbomb007 Supongo, pero esos fueron solo fragmentos y no programas completos. Agregar Prompt A,B:a ellos lleva el recuento de bytes a ocho bytes cada uno.
Timtech

1
@Timtech Exactamente. No quería dar buenas respuestas como ejemplos, solo quería ejemplos.
Julian Lachniet

@JulianLachniet Entiendo y aprecio eso :)
Timtech

6

Brachylog , 2 bytes

+<

Pruébalo en línea!

Explicación

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

Esto siempre dará como resultado A+B+1, si Input = [A, B].


5

Mathematica, 5 bytes

1+##&

Da como resultado la suma de los dos argumentos más 1. Por ejemplo, 1+##&[2,5]rendimientos 8.

(Nota al margen: Binomialaunque casi funciona, Binomial[1,0]=1y Binomial[4,2]=6son contraejemplos; sin embargo, creo que son los únicos contraejemplos).


PochhammerParece ser uno mejor que Binomial. Por lo que puedo decir, solo 1,0falla.
Martin Ender

Ah, y KroneckerDeltafunciona para todas las entradas (siendo el equivalente de la verificación de igualdad en algunos de los esolangs). En realidad, es más corto de reimplementar Boole[#==#2]&, pero supongo que estaba buscando un incorporado que funcione como es.
Martin Ender

5

PHP, 17 bytes

<?=1-join($argv);

Corre así:

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

Explicación

Esto solo concatena los argumentos. El primer argumento (nombre del script) contiene -. Entonces eso resulta en un número negativo, que niego con el signo menos. Luego agrego 1, en caso de que el primer número de entrada sea a 0(0123 = 123).



4

Turtlèd , 12 bytes

hace números muy grandes

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

Pruébalo en línea!

Explicación:

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

Por lo tanto, produce 10 ** (x + y).



4

Java (OpenJDK 9) , 10 bytes

a->b->a-~b

Pruébalo en línea!


1
Con currificación, se puede prescindir de un byte: a->b->a-~b. También funciona con Java 8, cualquier edición (por lo que no es necesario especificar OpenJDK 9)
Olivier Grégoire

@ OlivierGrégoire Java ha comenzado a parecerse a JS ahora> _>
Kritixi Lithos

@KritixiLithos Bueno ... tuvimos una pista de que esto sucedería durante años: Java Script ;-)
Olivier Grégoire

@KritixiLithos La especificación para Java 9 tiene una sección sobre 'Cumplimiento ECMAScript 6'.
Pavel

@ OlivierGrégoire Sí, pero esta presentación se generó automáticamente, por eso se agregó el 9.
Pavel

4

HODOR , 40 bytes (no competitivos)

¡Este es probablemente el programa más corto que Hodor haya escrito!

Esto es lo que sucede cuando no tienes nada que hacer para unas vacaciones escolares de 2 semanas: produce un montón de idiomas de broma realmente fáciles de codificar que no hacen absolutamente nada. Yay para vacaciones escolares!

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

Walder era el nombre original de Hodor, por lo que es necesario para comenzar el programa.

Hodor?! toma un número de STDIN o un solo carácter y establece el acumulador en la entrada

Hodor agregue 1 al acumulador

HODOR! saca el acumulador como un número

HODOR!!!mata a Hodor! Noooooo!

Este es el pseudocódigo:

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

1
Creo que debe encontrar un nombre diferente para su idioma a menos que se trate de un intérprete del idioma Hodor preexistente creado en 2015, que estoy bastante seguro de que no lo es.
mbomb007

@ mbomb007 No, eso no es mío, pero hay idiomas con nombres duplicados. Sé de dos llamados 7 en este sitio (simplemente no puedo encontrarlos en este momento)
caird coinheringaahing

1
Estoy bastante seguro de que solo hay uno llamado 7, y es este . Puede cambiar la capitalización del título para una solución fácil, algo así como HODOR.
mbomb007

@ mbomb007 la mina es H olor y el suyo es h olor así que podría ser suficiente?
caird coinheringaahing

No, el suyo tiene una H mayúscula, como puede ver cada vez que usa el nombre del idioma en su sitio web.
mbomb007

3

SmileBASIC, 4 bytes

!A+B

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


Por curiosidad, ¿cómo apoya esto 2+1?
ATaco

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

3

R, 13 bytes

sum(scan()+1)

¡Gracias a Jonathan Allan por sus aportes!


@ JonathanAllan: Tienes razón, cambié mi respuesta. Gracias !
Frédéric

OK, ¿seguro que 00es lo mismo que 0si tal vez sep="1"?
Jonathan Allan

@JonathanAllan: ¡maldita sea! Gracias de nuevo !
Frédéric

Mirando los consejos para jugar al golf en R parece que scan()debería estar bien, aceptando una entrada vectorial, como esta . Pero podemos hacer un byte mejor con cat(sum(scan()+1)). Tal vez hay más corto?
Jonathan Allan

1
Con el catprograma completo, la alternativa sería una función sin nombre por el mismo costo de bytefunction(a,b)a+b+1
Jonathan Allan

3

05AB1E , 1 byte

Q

Funciona igual que la RProgNrespuesta.

Comprueba si ay bson lo mismo. Si es así, imprime 1. De lo contrario, imprimir0

Pruébalo en línea!


3
¢(a.count (b)) también debería funcionar durante 1 byte.
Riley

@Riley, puedes publicar eso como tu propia respuesta.
Okx

2
No es lo suficientemente diferente como para necesitar su propia respuesta. Pensé que podríamos combinar ambas soluciones de 1 byte en una sola respuesta.
Riley

3

C 26 24 19 bytes

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

Versión sin golf:

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

Espero tener la especificación correcta. ¿Definitivamente se puede acortar?

@Pavel Gracias por guardar 2 bytes

@Neil Gracias por tu aporte.


1
¿Necesitas ()alrededor !c+d?
Pavel

@Pavel Tienes razón, los corchetes eran inútiles, ¡actualizados!
Abel Tom

2
No estoy 100% seguro, pero creo que puedes eliminar el espacio en tu return, comoreturn!c+d;
Metoniem

1
Pierda el retorno y, en su lugar
asígnelo

1
@AlbertRenshaw No es algo en lo que confiaría para la portabilidad, pero aquí hay un par de ejemplos. No puedo hacer que funcione sin conexión y parece que debe asignarse a una variable sin argumento en TIO .. tio.run/nexus/…
Ahemone

3

MATLAB / Octava, 3 bytes

@eq

Acepta dos entradas y verifica la igualdad y los rendimientos 1si son iguales o 0no.

Demo en línea


44
¿No debería ser esto @eq? Eso devuelve un identificador de función que se puede usar para evaluar la función deseada, mientras que simplemente no eqtiene sentido.
Sanchises

@Sanchises He visto muchas respuestas en ambos sentidos: codegolf.stackexchange.com/questions/106149/compute-the-median/… . No estoy seguro de cuál es el preferido.
Suever

Hmmm Debería pensar que esto es más como un fragmento, mientras que lo @convierte en una construcción de lenguaje válida. Pero tal vez solo estoy siendo pedante.
Sanchises

3

brainfuck, 12 bytes

Solución simple que da salida A+B+1.

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

Pruébalo en línea


Respuesta alternativa (12 bytes):,>,[-<++>]<.
Julian Lachniet

@JulianLachniet ¿dará salida A + 2B?
George

A + 2B pirateado cuando B = 0
l4m2

@ mbomb007 Estoy diciendo la ,>,[-<++>]<.solución
l4m2

@JulianLachniet Sí, esa no es una respuesta válida porque A + 2B para la entrada B = 0, da A.
mbomb007

3

dc , 5 bytes

?1n+n

Pruébalo en línea!

Entrada: Dos números naturales separados por un espacio en stdin.

Salida: el dígito 1 seguido inmediatamente por la suma de los dos números, que es un número mayor que la suma de los dos números.

Ejemplo:

Entrada: 222 333

Salida: 1555


3

PHP, 13 bytes; (17 REPL-less)

!max($argv)+0

Ejemplos

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

Para aquellos sin uso REPL

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

y correr usando

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

Esta respuesta no es válida porque no
genera

@aross Si el elenco booleano fue un problema, actualicé mi respuesta
mleko

Sí, abordó ambos problemas. El resultado sería verdadero / falso, no 1/0. Además, REPL :)
aross

3

Cubix, 9 8 bytes

u-~OII/@

Explicación

Ampliada, esta respuesta se ve así:

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

El orden de las instrucciones que se ejecutan es II~-O@

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

Probado para todas las combinaciones de entradas donde ambas están en el rango 0-100.

Probarlo aquí .


3

APL - 4 bytes

1++/

Toma una matriz, suma sus elementos y agrega uno. Prueba:

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


3

Hexagonía , 7 bytes.

?<.!?)@

Pruébalo en línea!

O en un formato más legible,

 ? <
. ! ?
 ) @

Esto supera la solución actual de Hexagony de 11 bytes.

Explicación:

Si el primer número no es 0, el programa toma la siguiente ruta:

No 0

Esto lee el primer número y se bifurca a la derecha. Luego lee el segundo número, seguido de ajustar e intentar leer un tercero, pero eso no existe, por lo que lee 0. Esto se imprime y el programa termina (tenga en cuenta que si a> 0, ya que b no es negativo a + b> 0).

Si el primer número es 0, el programa toma la siguiente ruta para comenzar:

Es 0

Esto lee el primer número y las ramas restantes. Toca la esquina, toma la ruta desde el borde noroeste porque el número es 0 y lee el segundo número. Se envuelve, luego incrementa el segundo número e imprime.

Sigue siendo 0

Rebota contra el <, imprimiendo la segunda entrada incrementada nuevamente. Incrementa el valor y toma el borde noreste nuevamente, pero esta vez porque el borde actual es un valor no negativo incrementado dos veces que es definitivamente positivo. Luego intenta obtener una tercera entrada, pero recibe 0 en su lugar.

Todavía es 0 un poco más

Finalmente se envuelve y se desvía con la flecha, luego intenta leer una cuarta entrada y obtiene 0 nuevamente. Se envuelve e intenta leer una quinta entrada y recibe 0 por última vez. Este se imprime y se envuelve a las @salidas.

Tenga en cuenta que b * (10 ^ k + 1) * 10> 0 + b = b donde k es la longitud de b en dígitos, por lo que esto funciona.


2

Billar , 11 caracteres = 17 bytes

⇲
⇲
+
1
+
↥

Implementos x + y + 1. Bastante elemental. Toma las entradas en dos líneas separadas. (Por cierto, el idioma se modificó ligeramente después del desafío, pero solo para evitar que ingrese el mensaje, no estoy seguro de si esta respuesta sigue siendo válida).

7 caracteres = 11 bytes, no competitivos

Este es más corto pero solo es posible después de una nueva actualización del idioma:

⇲
⇲
=
$

Este uso x == y, que fue robado descaradamente de la solución RProgN de @ ATaco [espero que no te importe (:]. El $, al salir, muestra cuántas bolas pasaron sobre él.


slightly after the languageerror tipográfico, también creo que cuando el idioma tenía la solicitud de entrada, todavía sería válido. No creo que los estándares de salida sean tan estrictos, y creo que se permiten salidas no suprimibles
Destructible Lemon

@DestructibleWatermelon Oh, eso fue un error tipográfico extraño. Gracias por la aclaración. Realmente modifiqué el lenguaje, luego vine y vi el desafío, así que decidí agregar esa nota allí en caso de que alguien decidiera ser exigente para verificar cuándo se hizo el empuje a GitHub, pero gracias por aclarar eso.
HyperNeutrino
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.