Notcalc (Calcola la risposta sbagliata)


33

Obbiettivo:

Dati due numeri naturali (numeri interi da 0 a infinito), genera un numero che non è la somma di quei numeri, ma è un numero naturale.

Soluzioni di esempio (TI-Basic):

  • A+B+1

  • not(A+B)

Soluzioni non valide:

  • A+B-1(per gli input 0,0, ritorna -1, il che non è naturale)

  • "ABC"( ABCnon è un numero)

Gli appunti:

  • L'output deve essere sempre una somma di due numeri naturali (che in realtà è solo un numero naturale)

  • -1, undefined, infinity, NaNE messaggi di errore non sono numeri naturali. Per i nostri scopi, 0è naturale (sebbene non tutti i matematici siano d'accordo).


1
Forse prendiamo i numeri come stringhe e output come una stringa?
xnor

1
L'output può avere zero iniziali?
Kritixi Lithos,

1
Presumo che gli overflow debbano essere presi in considerazione, quindi il risultato di 2 ^ 32 -1 e 2 non dovrebbe essere negativo, giusto?
Adrianmp,

1
Solo una piccola osservazione perché mi piace prestare attenzione ai dettagli inutili: 0 non è un numero naturale. Se cambi la prima frase in "Dati due numeri interi non negativi ...", non mi rimarranno dettagli inutili su cui commentare. :)
peech,

6
@peech Questo non è vero. 0 è considerato un numero naturale in alcune definizioni. Non puoi vederlo perché è stato eliminato ma c'è stata una lunga conversazione su questo argomento.
Wheat Wizard

Risposte:


36

RProgN , 4 3 1 byte

Barrato 4 è ancora 4; (

E

La più semplice delle soluzioni, confronta se A e B sono uguali. Spinge vero, che RProgN vede come 1, se sono uguali, o falso aka 0 altrimenti.

Casi test

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

Provalo online!


22
Sono appena sceso nella tana del coniglio con il tuo link barrato. Lo considero <s> 4 </s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala hold my 4, I'm going in
Albert Renshaw

4
̶4̶ <- u + 0336 (che combina il personaggio) potrebbe essere un modo migliore per farlo
Albert Renshaw,


3
@AlbertRenshaw il vecchio PPCG sbarrato-4-a-roo?
R

15

Retina , 3 byte

 
1

Provalo online!

(La prima riga ha uno spazio prima della nuova riga. Stack Exchange non è molto bravo a mostrare spazi vuoti finali.)

L'input è i numeri in decimale, separati da uno spazio (ad es 12 34.). Questo programma cambia semplicemente lo spazio in a 1, creando un numero troppo grande per essere la somma dei numeri di input (ha necessariamente almeno 2 cifre in più rispetto a uno dei due, e l'aggiunta di due numeri produce un output con non più di 1 cifra in più del input più ampio).


2
0 0dovrebbe anche funzionare.
Dennis,

1
@Dennis: me lo stavo chiedendo. 010è considerato un numero intero tramite praticamente tutti i parser interi. Vedo un potenziale argomento che 0 8non è valido sulla base che 018è considerato ottale non valido tramite alcuni parser interi (sebbene sia considerato decimale 18 da altri). Si noti che questo programma è abbastanza felice di gestire gli zero iniziali nell'input , trattandoli come decimali; e ho scritto programmi che generano zero iniziali per altre domande senza che le persone vedano un problema. Esiste un meta post rilevante sull'argomento?

2
O . 1se non vuoi restituire tu stesso gli zeri iniziali.
Martin Ender,

@MartinEnder> ma è un numero naturale
wizzwizz4,

@ wizzwizz4 non sto seguendo.
Martin Ender,

15

Python , 13 byte

[(0,0)].count

Provalo online! Accetta input come tupla.

L'uso di un metodo oggetto per la funzione evita la caldaia di a lambda.

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

Qui, l'idea è quella di mappare (0,0)per 1e tutto il resto a 0. Dal momento che 0+0dà solo una somma 0tra i numeri naturali, ciò evita sempre di abbinare la somma.

Se uno potesse emettere un booleano qui, che trovo ombreggiato, un byte potrebbe essere salvato come

(0,0).__ge__

Controlla se la tupla di input è al massimo (0,0), il che è vero solo per (0,0). In Python True==1e False==0. Ancora più sfumato, l'output tramite il codice di uscita e il trattamento come Python Boolen salverebbero due byte:

[(0,0)].pop

Se l'I / O stringa è consentito e gli zeri iniziali sono OK, esiste la soluzione a 8 byte

'1'.join

Questo concatena a1b, che è sempre più grande di a+b.


1
int.__eq__per 10 byte
Blue

@muddyfish Sì, ho visto anche la risposta di suever, non ho pensato di usare l'uguaglianza. Restituisce comunque un bool, che penso sia incerto su una sfida che richiede un output numerico.
xnor

1
IMO se nuota come un numero e cade come un numero, è ragionevole supporre che sia un numero.
Calcolatrice

13

MATL, et al. 1 byte

=

Accetta due numeri naturali come input e li confronta. Se sono uguali, l'uscita è 1e se non sono uguali l'uscita è 0. Questo è lo stesso approccio della soluzione di @ ATaco.


3
La =soluzione funziona anche in Jelly per 1 byte. Ho pensato di menzionarlo nei commenti in quanto non vale la pena creare una risposta separata per la banale soluzione.

@ ais523 Aggiornato per includerlo. Grazie.
Suever,


Puoi aggiungere APL e J?
Adám,

@ Adám Certo. Hai un link TIO a cui posso collegarmi?
Suever,

10

Javascript, 10 byte

x=>y=>!x+y

Prende 2 numeri usando la sintassi del curry in questo modo:

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

4
Benvenuti nel sito! :)
DJMcMayhem

Grazie =) Sto leggendo le sfide da un po ', sto solo cercando di trovare un buon punto di partenza.
Malivil,

9

Vim, 3 byte / sequenze di tasti

<C-a>gJ

Provalo online!

Si noti che in <C-a>realtà è ctrl-a , che rappresenta byte 0x01.

Mi piace quando Vim (che non è nemmeno un linguaggio di programmazione) può competere con i linguaggi del golf. :) L'ingresso è disponibile in questo formato:

a
b

Questo semplicemente incrementa il primo numero di uno (Questa è la <C-a>parte) e quindi unisce insieme le rappresentazioni di stringa dei due numeri. Per quanto ne so, ciò non dovrebbe mai comportare la somma.


9

Brain-Flak , 8 byte

({}{}())

Provalo online!

Questa è la risposta più leggibile che io abbia mai scritto. :)

Spiegazione:

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

Soluzioni alternative (anche 8 byte):

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

Esistono molte altre soluzioni che funzionano solo con numeri positivi:

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

7

Gelatina , 2 byte

+‘

Il + aggiunge i due input insieme quindi l 'incremento della risposta di uno

Provalo online!


Questa risposta mi fa gelatina.
MD XF,

Scommetto che lo fa: P
Christopher,

Tecnicamente questo non è (a+b)+1, ma a+(b+1)perché la catena diade-monade fGè trattato come f(a, G(b)). In questo caso è la stessa cosa ma tecnicamente il modo in cui funziona è diverso: P
HyperNeutrino,

6

TI-Basic, 3 byte

not(max(Ans

Soluzioni alternative:

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

È interessante che tu abbia fatto gli esempi della domanda in TI-Basic, ma hai dimenticato il più breve A=B(o forse dipendeva da noi scoprirlo?)


1
A nessuno piace quando l'OP pubblica una soluzione super breve nella domanda, rendendo difficile battere.
mbomb007,

@ mbomb007 Suppongo, ma quelli erano solo frammenti e non programmi completi. Aggiungendoli si Prompt A,B:ottiene il conteggio dei byte a otto byte ciascuno.
Timtech,

1
@Timtech Exactly. Non volevo dare buone risposte come esempi, volevo solo esempi.
Julian Lachniet,

@JulianLachniet Lo capisco e lo apprezzo :)
Timtech,

6

Brachylog , 2 byte

+<

Provalo online!

Spiegazione

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

Ciò comporterà sempre A+B+1, se Input = [A, B].


5

Mathematica, 5 byte

1+##&

Emette la somma dei due argomenti più 1. Ad esempio, i 1+##&[2,5]rendimenti 8.

(Nota a margine: Binomialquasi funziona, anche se Binomial[1,0]=1e Binomial[4,2]=6sono controesempi; penso che siano gli unici controesempi, però.)


Pochhammersembra essere uno migliore di Binomial. Per quanto ne so, 1,0fallisce solo .
Martin Ender,

Ah, e KroneckerDeltafunziona per tutti gli input (essendo l'equivalente del controllo di uguaglianza in alcuni degli esolang). In realtà è più breve da reimplementare Boole[#==#2]&, ma suppongo che stavi cercando un built-in che funzioni così com'è.
Martin Ender,

5

PHP, 17 byte

<?=1-join($argv);

Esegui in questo modo:

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

Spiegazione

Questo concatena gli argomenti. Il primo argomento (nome dello script) contiene -. In questo modo si ottiene un numero negativo, che annullo con il segno meno. Quindi aggiungo 1, nel caso in cui il primo numero di input sia un 0(0123 = 123).



4

Turtlèd , 12 byte

fa numeri molto grandi

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

Provalo online!

Spiegazione:

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

Emette quindi 10 ** (x + y).



4

Java (OpenJDK 9) , 10 byte

a->b->a-~b

Provalo online!


1
Con currying, si può risparmiare un byte: a->b->a-~b. Funziona anche con Java 8, qualsiasi edizione (quindi non è necessario specificare OpenJDK 9)
Olivier Grégoire,

@ OlivierGrégoire Java ha iniziato a sembrare JS ora> _>
Kritixi Lithos

@KritixiLithos Beh ... abbiamo avuto un suggerimento che ciò accadrebbe per anni: Java Script ;-)
Olivier Grégoire

@KritixiLithos Le specifiche per Java 9 hanno una sezione su "Conformità ECMAScript 6".
Pavel,

@ OlivierGrégoire Sì, ma questa presentazione è stata generata automaticamente, motivo per cui è stata aggiunta la 9.
Pavel,

4

HODOR , 40 byte (non concorrenti)

Questo è probabilmente il programma più breve che Hodor abbia mai scritto!

Questo è ciò che accade quando non hai niente da fare per una vacanza scolastica di 2 settimane: produci un sacco di lingue di battuta facilmente codificabili che non fanno assolutamente nulla. Yay per le vacanze scolastiche !!!

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

Walder era il nome originale di Hodor ed è quindi necessario per iniziare il programma.

Hodor?! prende un numero da STDIN o un singolo carattere e imposta l'accumulatore sull'input

Hodor aggiungere 1 all'accumulatore

HODOR! genera l'accumulatore come numero

HODOR!!!uccide Hodor! Noooooo!

Questo è lo pseudo codice:

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

1
Penso che tu debba trovare un nome diverso per la tua lingua a meno che questo non sia un interprete del linguaggio Hodor preesistente creato nel 2015, che sono abbastanza certo che non lo sia.
mbomb007,

@ mbomb007 No, non è mio ma ci sono lingue con nomi duplicati. Conosco due chiamati 7 su questo sito (al momento non li trovo)
caird coinheringaahing

1
Sono abbastanza sicuro che ce n'è solo uno chiamato 7, ed è questo . Potresti cambiare la maiuscola del titolo per una soluzione semplice, qualcosa come HODOR.
mbomb007,

@ mbomb007 il mio è odore H e il loro è odore H così che potrebbe essere sufficiente?
caird coinheringaahing il

No, la loro ha la H maiuscola, come puoi vedere ogni volta che usa il nome della lingua sul suo sito web.
mbomb007,

3

SmileBASIC, 4 byte

!A+B

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


Per curiosità, come supporta questo 2+1?
ATaco,

2
2+1=3 -> !2+1 -> 0+1=1
Mee,

3

R, 13 byte

sum(scan()+1)

Grazie a Jonathan Allan per i suoi contributi!


@JonathanAllan: hai ragione, ho cambiato la mia risposta. Grazie !
Frédéric,

OK, abbastanza sicuro 00è lo stesso di 0forse, forse sep="1"?
Jonathan Allan,

@JonathanAllan: dannazione! Grazie ancora !
Frédéric,

Guardando i suggerimenti per giocare a golf in R sembra che scan()vada bene, accettare un input vettoriale, come questo . Ma possiamo fare un byte meglio con cat(sum(scan()+1)). Forse c'è più breve?
Jonathan Allan,

1
Con catesso è un programma completo, l'alternativa sarebbe una funzione senza nome per lo stesso costo in bytefunction(a,b)a+b+1
Jonathan Allan,

3

05AB1E , 1 byte

Q

Funziona come la RProgNrisposta.

Verifica se ae bsono gli stessi. In tal caso, stampa 1. Altrimenti, stampa0

Provalo online!


3
¢(a.count (b)) dovrebbe funzionare anche per 1 byte.
Riley,

@Riley potresti postarlo come risposta personale.
Okx,

2
Non è abbastanza diverso da soddisfare la propria risposta. Ho pensato che potremmo semplicemente combinare entrambe le soluzioni da 1 byte in una risposta.
Riley,

3

C 26 24 19 byte

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

Versione non golfata:

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

Spero di aver ottenuto le specifiche giuste. Può sicuramente essere abbreviato !?

@Pavel Grazie per aver salvato 2 byte

@Neil Grazie per il tuo contributo.


1
Ti serve in ()giro !c+d?
Pavel,

@Pavel Hai ragione, le parentesi erano inutili, aggiornate!
Abel Tom,

2
Non sono sicuro al 100% ma penso che tu possa rimuovere lo spazio nel tuo return, tiporeturn!c+d;
Metoniem

1
Perdi il ritorno e assegnalo invece con qualcosa come c + =! D
Ahemone,

1
@AlbertRenshaw Non è qualcosa su cui fare affidamento per la portabilità, ma qui ci sono un paio di esempi. Non riesco a farlo funzionare offline e sembra che debba essere assegnato a una variabile non argomento su TIO .. tio.run/nexus/…
Ahemone

3

MATLAB / Octave, 3 byte

@eq

Accetta due input e verifica l'uguaglianza e i rendimenti 1se sono uguali e 0non.

Demo online


4
Non dovrebbe essere @eq? Ciò restituisce un handle di funzione che può essere utilizzato per valutare la funzione desiderata, mentre non ha eqsenso.
Sanchises,

@Sanchise Ho visto molte risposte andare in entrambe le direzioni: codegolf.stackexchange.com/questions/106149/compute-the-median/… . In realtà non sono sicuro di quale sia preferito.
Suever,

Hmmm. Dovrei pensare che sia più simile a uno snippet, mentre @lo trasforma in un costrutto linguistico valido. Ma forse sono solo pedante.
Sanchises,

3

Brainfuck, 12 byte

Soluzione semplice che produce A+B+1.

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

Provalo online


Risposta alternativa (12 byte):,>,[-<++>]<.
Julian Lachniet,

@JulianLachniet che produrrà A + 2B?
george

A + 2B violato quando B = 0
l4m2

@ mbomb007 Sto dicendo la ,>,[-<++>]<.soluzione
l4m2

@JulianLachniet Sì, questa non è una risposta valida perché A + 2B per l'ingresso B = 0, dà A.
mbomb007

3

dc , 5 byte

?1n+n

Provalo online!

Input: due numeri naturali separati da uno spazio sullo stdin.

Output: la cifra 1 immediatamente seguita dalla somma dei due numeri, che è un numero maggiore della somma dei due numeri.

Esempio:

Ingresso: 222 333

Produzione: 1555


3

PHP, 13 byte; (17 senza REPL)

!max($argv)+0

Esempi

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

Per quelli senza uso REPL

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

ed esegui usando

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

Questa risposta non è valida perché non produce nulla
circa il

@aross Se il cast booleano era un problema, ho aggiornato la mia risposta
mleko,

Sì, hai affrontato entrambi i problemi. L'output sarebbe vero / falso, non 1/0. Inoltre, REPL :)
aross

3

Cubix, 9 8 byte

u-~OII/@

Spiegazione

Estesa, questa risposta è simile alla seguente:

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

L'ordine delle istruzioni eseguite è II~-O@

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

Testato per tutte le combinazioni di ingressi in cui entrambi sono nel range 0-100.

Provalo qui .


3

APL - 4 byte

1++/

Accetta array, somma i suoi elementi e ne aggiunge uno. Test:

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


3

Esagonia , 7 byte

?<.!?)@

Provalo online!

O in un formato più leggibile,

 ? <
. ! ?
 ) @

Questo batte l'attuale soluzione Hexagony di 11 byte.

Spiegazione:

Se il primo numero non è 0, il programma prende il seguente percorso:

Non 0

Questo legge il primo numero e le diramazioni a destra. Quindi legge il secondo numero, seguito dal wrapping e dal tentativo di leggere un terzo, ma questo non esiste quindi legge 0. Viene stampato e il programma è terminato (notare che se a> 0, poiché b non è negativo a + b> 0).

Se il primo numero è 0, il programma inizia con il seguente percorso per iniziare:

È 0

Questo legge il primo numero e i rami rimasti. Colpisce l'angolo, prendendo il percorso lungo il bordo nord-ovest perché il numero è 0 e legge il secondo numero. Si avvolge, quindi incrementa il secondo numero e stampa.

È ancora 0

Rimbalza contro <, stampando di nuovo il secondo ingresso incrementato. Incrementa il valore e riprende il bordo nord-est, ma questa volta perché il bordo corrente ha un valore non negativo a doppio incremento che è sicuramente positivo. Quindi tenta di ottenere un terzo input, ma riceve invece 0.

È ancora 0 un po 'di più

Alla fine si avvolge e viene deviato dalla freccia, quindi tenta di leggere un quarto input e ottiene di nuovo 0. Si avvolge e tenta di leggere un quinto input e riceve 0 per l'ultima volta. Questo stampa, si avvolge @e esce.

Nota che b * (10 ^ k + 1) * 10> 0 + b = b dove k è la lunghezza di b in cifre, quindi funziona.


2

Biliardo , 11 caratteri = 17 byte

⇲
⇲
+
1
+
↥

Implementa x + y + 1. Abbastanza elementare Prende gli input su due linee separate. (A proposito, la lingua è stata leggermente modificata dopo la sfida, ma solo per impedire l'inserimento del prompt, non sono sicuro che questa risposta sia ancora valida).

7 caratteri = 11 byte, non concorrenti

Questo è più breve ma possibile solo dopo un nuovo aggiornamento della lingua:

⇲
⇲
=
$

Questo usa x == y, che è stato spudoratamente rubato dalla soluzione RProgN di @ ATaco [spero che non ti dispiaccia (:]. $All'uscita, vengono emesse quante palline vi sono passate sopra.


slightly after the languageerrore di battitura, penso anche che quando la lingua avesse il prompt di input, sarebbe ancora valido. Non credo che gli standard di output siano così rigorosi e che gli output non sopprimibili siano consentiti Penso che
Destructible Lemon

@DestructibleWatermelon Oh, quello era un errore strano. Grazie per il chiarimento. In realtà ho modificato la lingua, poi sono arrivato e ho visto la sfida, quindi ho deciso di aggiungere quella nota nel caso in cui qualcuno avesse deciso di essere pignolo nel controllare quando è stata effettuata la spinta a GitHub, ma grazie per averlo chiarito.
HyperNeutrino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.