Notcalc (Hitung jawaban yang salah)


33

Tujuan:

Diberi dua bilangan asli (bilangan bulat dari 0 hingga tak terbatas), menghasilkan angka yang bukan jumlah dari angka-angka itu, tetapi merupakan bilangan alami.

Contoh solusi (TI-Basic):

  • A+B+1

  • not(A+B)

Solusi tidak valid:

  • A+B-1(untuk input 0,0, ia kembali -1, yang tidak alami)

  • "ABC"( ABCbukan angka)

Catatan:

  • Output harus selalu merupakan jumlah dari dua bilangan asli (yang sebenarnya hanya bilangan alami)

  • -1, undefined, infinity, NaNDan pesan kesalahan tidak alam nomor. Untuk tujuan kita, 0adalah wajar (meskipun tidak semua ahli matematika setuju).


1
Mungkin kita mengambil angka sebagai string dan output sebagai string?
xnor

1
Bisakah output memiliki angka nol di depan?
Kritixi Lithos

1
Saya kira luapan harus diperhitungkan, jadi hasil 2 ^ 32 -1 dan 2 tidak boleh negatif, kan?
adrianmp

1
Hanya sebuah komentar kecil karena saya suka memperhatikan detail yang tidak berguna: 0 bukan bilangan alami. Jika Anda mengubah kalimat pertama menjadi "Diberikan dua bilangan bulat non-negatif ...", tidak akan ada detail yang tersisa untuk saya komentari. :)
peech

6
@peech Ini tidak benar. 0 dianggap sebagai bilangan alami di bawah beberapa definisi. Anda tidak dapat melihatnya karena telah dihapus tetapi telah ada percakapan yang luas tentang masalah ini.
Wheat Wizard

Jawaban:


36

RProgN , 4 3 1 Byte

Dicoret 4 masih 4; (

E

Solusi paling sederhana, bandingkan jika A dan B sama. Dorong true, yang RProgN lihat sebagai 1, jika mereka sama, atau salah alias 0 sebaliknya.

Uji Kasus

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

Cobalah online!


22
Saya baru saja pergi ke lubang kelinci dengan tautan dicoret. Saya memberi peringkat <s> 4 </s> / 4
Rohan Jhunjhunwala

2
@RohanJhunjhunwala pegang 4 saya, saya akan masuk
Albert Renshaw

4
̶4̶ <- u + 0336 (menggabungkan karakter) mungkin cara yang lebih baik untuk melakukannya
Albert Renshaw


3
@AlbertRenshaw PPCG tua dicoret-out-4-a-roo?
Rɪᴋᴇʀ

15

Retina , 3 byte

 
1

Cobalah online!

(Baris pertama memiliki ruang sebelum baris baru. Stack Exchange tidak terlalu bagus dalam menunjukkan spasi spasi.)

Input adalah angka dalam desimal, dipisahkan oleh spasi (misalnya 12 34). Program ini hanya mengubah ruang menjadi a 1, membuat angka terlalu besar untuk menjadi jumlah dari angka-angka input (itu harus memiliki setidaknya 2 digit lebih banyak dari keduanya, dan menambahkan dua angka menghasilkan output dengan tidak lebih dari 1 digit lebih dari input lebih besar).


2
0 0juga harus bekerja.
Dennis

1
@ Dennis: Saya ingin tahu tentang itu. 010dianggap bilangan bulat melalui dasarnya semua parser bilangan bulat. Saya bisa melihat argumen potensial yang 0 8tidak valid atas dasar yang 018dianggap oktal tidak valid melalui beberapa parser integer (meskipun itu dianggap desimal 18 oleh orang lain). Perhatikan bahwa program ini cukup senang menangani angka nol terkemuka di input , memperlakukannya sebagai desimal; dan saya telah menulis program yang menghasilkan nol terkemuka untuk pertanyaan lain tanpa orang melihat masalah. Apakah ada meta pos yang relevan tentang masalah ini?

2
Atau . 1jika Anda sendiri tidak ingin mengembalikan nol yang memimpin.
Martin Ender

@MartinEnder> tetapi merupakan bilangan alami
wizzwizz4

@ wizzwizz4 Saya tidak mengikuti.
Martin Ender

15

Python , 13 byte

[(0,0)].count

Cobalah online! Mengambil input sebagai tuple.

Menggunakan metode objek untuk fungsi menghindari pelat ketel dari a lambda.

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

Di sini, idenya adalah untuk memetakan (0,0)untuk 1dan segala sesuatu yang lain untuk 0. Karena hanya 0+0memberikan jumlah di 0antara bilangan alami, itu selalu menghindari pencocokan jumlah.

Jika seseorang bisa mengeluarkan Boolean di sini, yang menurut saya teduh, byte bisa disimpan sebagai

(0,0).__ge__

Ini memeriksa apakah masukan tuple paling banyak (0,0), yang hanya berlaku untuk (0,0). Dengan Python, True==1dan False==0. Yang lebih memalukan, mengeluarkan melalui kode keluar dan memperlakukannya sebagai Python Boolen akan menghemat dua byte:

[(0,0)].pop

Jika string I / O diizinkan dan nol nol di depannya, ada solusi 8-byte

'1'.join

Ini menggabungkan a1b, yang selalu lebih besar dari a+b.


1
int.__eq__untuk 10 byte
Biru

@uddyfish Ya, saya melihat jawaban suever juga, tidak berpikir untuk menggunakan kesetaraan. Ia mengembalikan bool, yang saya pikir rapuh pada tantangan yang meminta sejumlah output.
xnor

1
IMO jika berenang seperti angka dan dukun seperti angka, masuk akal untuk menganggap itu angka.
CalculatorFeline

13

MATL, dkk. 1 byte

=

Menerima dua bilangan alami sebagai input dan membandingkannya. Jika mereka sama, output adalah 1dan jika mereka tidak sama dengan output 0. Ini adalah pendekatan yang sama dengan solusi @ ATaco.


3
The =solusi juga bekerja di Jelly untuk 1 byte. Saya pikir saya akan menyebutkannya di komentar karena sepertinya tidak layak membuat jawaban terpisah untuk solusi sepele.

@ ais523 Diperbarui untuk memasukkan itu. Terima kasih.
Suever

2
Juga di Stacked. Cobalah online!
Conor O'Brien

Bisakah Anda menambahkan APL dan J?
Adám

@ Adám Tentu. Apakah Anda memiliki tautan TIO yang dapat saya tautkan?
Suever

10

Javascript, 10 byte

x=>y=>!x+y

Membawa 2 angka menggunakan sintaks currying seperti:

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

4
Selamat datang di situs ini! :)
DJMcMayhem

Terima kasih =) Saya telah membaca tantangan untuk sementara waktu, hanya mencoba mencari tempat yang baik untuk memulai.
Malivil

9

Vim, 3 byte / penekanan tombol

<C-a>gJ

Cobalah online!

Perhatikan bahwa <C-a>sebenarnya ctrl-a , yang mewakili byte 0x01.

Saya suka ketika vim (yang bahkan bukan bahasa pemrograman) dapat bersaing dengan bahasa golf. :) Masukan datang dalam format ini:

a
b

Ini hanya menambah angka pertama dengan satu (Ini adalah <C-a>bagian) dan kemudian bergabung dengan representasi string dari dua angka bersama. Sejauh yang saya tahu, ini seharusnya tidak menghasilkan jumlah.


9

Brain-Flak , 8 byte

({}{}())

Cobalah online!

Ini adalah jawaban kritik yang paling mudah dibaca yang pernah saya tulis. :)

Penjelasan:

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

Solusi alternatif (juga 8 byte):

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

Ada banyak solusi lain yang hanya bekerja dengan angka positif:

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

7

Jelly , 2 byte

+‘

Tanda + menambahkan dua input bersamaan kemudian 'menambah jawaban dengan satu

Cobalah online!


Jawaban ini membuatku jeli.
MD XF

Saya yakin itu terjadi: P
Christopher

Secara teknis ini bukan (a+b)+1tapi a+(b+1)karena rantai angka dua-monad fGdiperlakukan sebagai f(a, G(b)). Dalam hal ini adalah hal yang sama tetapi secara teknis cara kerjanya berbeda: P
HyperNeutrino

6

TI-Basic, 3 byte

not(max(Ans

Solusi alternatif:

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

Sangat menarik bahwa Anda membuat contoh pertanyaan di TI-Basic, tetapi Anda lupa yang lebih pendek A=B(atau mungkin terserah kita untuk mengetahuinya?)


1
Tidak ada yang suka ketika OP memposting solusi super pendek dalam pertanyaan, membuatnya sulit dikalahkan.
mbomb007

@ mbomb007 Saya kira, tapi itu hanya cuplikan dan bukan program lengkap. Menambahnya Prompt A,B:membawa masing-masing jumlah byte menjadi delapan byte.
Timtech

1
@Timtech Tepat. Saya tidak ingin memberikan jawaban yang baik sebagai contoh, saya hanya ingin contoh.
Julian Lachniet

@JulianLachniet Saya mengerti dan menghargai itu :)
Timtech

6

Brachylog , 2 byte

+<

Cobalah online!

Penjelasan

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

Ini akan selalu menghasilkan A+B+1, jika Input = [A, B].


5

Mathematica, 5 byte

1+##&

Menghasilkan jumlah dari dua argumen ditambah 1. Misalnya, 1+##&[2,5]menghasilkan 8.

(Catatan: Binomialhampir berhasil, meskipun Binomial[1,0]=1dan Binomial[4,2]=6merupakan contoh tandingan; saya pikir mereka satu-satunya contoh tandingan.)


Pochhammertampaknya menjadi yang lebih baik daripada Binomial. Sejauh yang saya tahu hanya 1,0gagal.
Martin Ender

Ah, dan KroneckerDeltabekerja untuk semua input (menjadi setara dengan pemeriksaan kesetaraan di beberapa esolang). Sebenarnya ini lebih pendek untuk diimplementasikan ulang Boole[#==#2]&, tetapi saya berasumsi Anda sedang mencari built-in yang berfungsi sebagaimana mestinya.
Martin Ender

5

PHP, 17 byte

<?=1-join($argv);

Jalankan seperti ini:

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

Penjelasan

Ini hanya menyatukan argumen. Argumen pertama (nama skrip) berisi -. Sehingga menghasilkan angka negatif, yang saya negasikan dengan tanda minus. Lalu saya menambahkan 1, kalau-kalau nomor input pertama adalah 0(0123 = 123).



4

Turtlèd , 12 byte

membuat angka yang sangat besar

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

Cobalah online!

Penjelasan:

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

Dengan demikian menghasilkan 10 ** (x + y).



4

Java (OpenJDK 9) , 10 byte

a->b->a-~b

Cobalah online!


1
Dengan currying, Anda bisa meluangkan byte: a->b->a-~b. Juga bekerja dengan Java 8, edisi apa pun (jadi tidak perlu menentukan OpenJDK 9)
Olivier Grégoire

@ OlivierGrégoire Java sudah mulai terlihat seperti JS sekarang> _>
Kritixi Lithos

@KritixiLithos Baiklah ... kami punya petunjuk bahwa ini akan terjadi selama bertahun-tahun: Java Script ;-)
Olivier Grégoire

@KritixiLithos Spesifikasi untuk Java 9 memiliki bagian tentang 'Kepatuhan ECMAScript 6'.
Pavel

@ OlivierGrégoire Ya, tapi kiriman ini dibuat secara otomatis, itulah sebabnya 9 ditambahkan.
Pavel

4

HODOR , 40 byte (tidak bersaing)

Ini mungkin program terpendek yang pernah ditulis Hodor!

Inilah yang terjadi ketika Anda tidak memiliki apa-apa untuk dilakukan selama liburan sekolah 2 minggu: menghasilkan sekelompok bahasa lelucon yang sangat mudah dikodekan yang sama sekali tidak melakukan apa pun. Yay untuk liburan sekolah !!!

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

Walder adalah nama asli Hodor dan diperlukan untuk memulai program.

Hodor?! mengambil nomor dari STDIN atau karakter tunggal dan mengatur akumulator ke input

Hodor tambahkan 1 ke akumulator

HODOR! mengeluarkan akumulator sebagai angka

HODOR!!!membunuh Hodor! Tidaaaaaak!

Ini adalah kode semu:

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

1
Saya pikir Anda perlu membuat nama yang berbeda untuk bahasa Anda kecuali jika ini adalah juru bahasa dari bahasa Hodor yang sudah ada yang dibuat pada tahun 2015, yang saya cukup yakin ini bukan.
mbomb007

@ mbomb007 Tidak bukan milik saya tetapi ada bahasa dengan nama rangkap. Saya tahu ada dua yang disebut 7 di situs ini (saya tidak dapat menemukan mereka saat ini)
caird coinheringaahing

1
Saya cukup yakin hanya ada satu yang disebut 7, dan yang ini . Anda dapat mengubah kapitalisasi judul untuk perbaikan yang mudah, sesuatu seperti HODOR.
mbomb007

@ mbomb007 saya adalah H bau dan mereka adalah h bau sehingga bisa cukup?
caird coinheringaahing

Tidak, mereka memiliki huruf H besar, seperti yang dapat Anda lihat dari setiap kali dia menggunakan nama bahasa di situs webnya.
mbomb007

3

SmileBASIC, 4 byte

!A+B

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


Karena penasaran, bagaimana hal ini mendukung 2+1?
ATaco

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

3

R, 13 byte

sum(scan()+1)

Terima kasih kepada Jonathan Allan untuk masukannya!


@ JonathanAllan: Anda benar, saya mengubah jawaban saya. Terima kasih!
Frédéric

OK, cukup yakin 00sama saja 0, mungkin sep="1"?
Jonathan Allan

@JonathanAllan: sial! Terima kasih lagi !
Frédéric

Melihat Tips Untuk Bermain Golf di R sepertinya scan()akan baik-baik saja, menerima input vektor, seperti ini . Tapi kita bisa melakukan satu byte dengan lebih baik cat(sum(scan()+1)). Mungkin ada yang lebih pendek?
Jonathan Allan

1
Dengan catitu adalah program lengkap, alternatifnya adalah fungsi yang tidak disebutkan namanya untuk biaya byte yang samafunction(a,b)a+b+1
Jonathan Allan

3

05AB1E , 1 byte

Q

Bekerja sama dengan RProgNjawabannya.

Cek apakah adan bsama. Jika demikian, cetak 1. Kalau tidak, cetak0

Cobalah online!


3
¢(a.count (b)) juga harus bekerja untuk 1 byte.
Riley

@Riley Anda bisa memposting itu sebagai jawaban Anda sendiri.
Okx

2
Tidak cukup berbeda untuk membutuhkan jawaban itu sendiri. Saya pikir kami hanya bisa menggabungkan kedua solusi 1 byte menjadi satu jawaban.
Riley

3

C 26 24 19 byte

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

Versi tidak disatukan:

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

Saya harap spesifikasi saya benar. Pasti bisa dipersingkat !?

@Pavel Terima kasih telah menyimpan 2 byte

@Neil Terima kasih atas masukan Anda.


1
Apakah Anda perlu ()berkeliling !c+d?
Pavel

@Pavel Anda benar, tanda kurung tidak berguna, diperbarui!
Abel Tom

2
Tidak 100% yakin tapi saya pikir Anda dapat menghapus ruang di Anda return, sepertireturn!c+d;
Metoniem

1
Kalah pengembalian dan alih-alih tetapkan dengan sesuatu seperti c + =! D
Ahemone

1
@AlbertRenshaw Ini bukan sesuatu yang saya andalkan untuk portabilitas tetapi di sini ada beberapa contoh. Saya tidak bisa menjalankannya secara offline dan tampaknya perlu ditugaskan ke variabel non-argumen di TIO .. tio.run/nexus/…
Ahemone

3

MATLAB / Oktaf, 3 byte

@eq

Menerima dua input dan memeriksa kesetaraan dan hasil 1jika sama dan 0sebaliknya.

Demo online


4
Bukankah ini seharusnya @eq? Itu mengembalikan pegangan fungsi yang dapat digunakan untuk mengevaluasi ke fungsi yang diinginkan, sementara eqtidak ada artinya.
Sanchises

@Sanchises Saya telah melihat banyak jawaban berjalan dua arah: codegolf.stackexchange.com/questions/106149/compute-the-median/… . Saya tidak benar-benar yakin mana yang disukai.
Suever

Hmmm. Saya harus berpikir ini lebih seperti cuplikan, sementara sebuah @mengubahnya menjadi bahasa yang valid. Tapi mungkin aku hanya bertele-tele.
Sanchises

3

brainfuck, 12 byte

Solusi sederhana yang dihasilkan A+B+1.

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

Cobalah online


Alternatif jawaban (12 byte):,>,[-<++>]<.
Julian Lachniet

@JulianLachniet akankah output A + 2B?
george

A + 2B diretas ketika B = 0
l4m2

@ mbomb007 Saya katakan ,>,[-<++>]<.solusinya
l4m2

@JulianLachniet Ya, itu bukan jawaban yang valid karena A + 2B untuk input B = 0, memberikan A.
mbomb007

3

dc , 5 byte

?1n+n

Cobalah online!

Input: Dua bilangan alami dipisahkan oleh spasi di stdin.

Output: Digit 1 segera diikuti oleh jumlah dari dua angka, yang merupakan angka yang lebih besar dari jumlah dari dua angka.

Contoh:

Memasukkan: 222 333

Keluaran: 1555


3

PHP, 13 byte; (17 REPL-kurang)

!max($argv)+0

Contohnya

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

Bagi mereka yang tidak menggunakan REPL

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

dan jalankan menggunakan

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

Jawaban ini tidak valid karena tidak menghasilkan apa pun
aross

@aross Jika para pemain boolean bermasalah, saya memperbarui jawaban saya
mleko

Ya, Anda mengatasi kedua masalah tersebut. Outputnya akan benar / salah, bukan 1/0. Juga, REPL :)
aross

3

Cubix, 9 8 byte

u-~OII/@

Penjelasan

Diperluas, jawaban ini terlihat seperti ini:

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

Urutan instruksi yang dieksekusi adalah II~-O@

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

Diuji untuk semua kombinasi input di mana keduanya berada dalam kisaran 0-100.

Coba di sini .


3

APL - 4 Bytes

1++/

Mengambil array, menjumlahkan elemen-elemennya dan menambahkan satu. Uji:

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


3

Hexagony , 7 byte

?<.!?)@

Cobalah online!

Atau dalam format yang lebih mudah dibaca,

 ? <
. ! ?
 ) @

Ini mengalahkan solusi Hexagony saat ini sebesar 11 byte.

Penjelasan:

Jika angka pertama bukan 0, program akan mengambil jalur berikut:

Bukan 0

Ini membaca angka pertama dan cabang kanan. Kemudian ia membaca angka kedua, diikuti dengan membungkus dan mencoba membaca yang ketiga, tetapi tidak ada sehingga berbunyi 0. Ini dicetak dan program dihentikan (perhatikan bahwa jika a> 0, karena b adalah non-negatif a + b> 0).

Jika angka pertama adalah 0, program akan mengambil jalur berikut untuk memulai dengan:

Apakah 0

Ini membaca angka pertama dan cabang yang tersisa. Itu menyentuh sudut, mengambil rute dari sepanjang tepi barat laut karena angkanya 0, dan membaca angka kedua. Itu membungkus, lalu menambah angka kedua dan mencetak.

Masih 0

Ini memantul terhadap <, mencetak input kedua yang meningkat lagi. Ini menambah nilai dan mengambil tepi timur laut lagi, tapi kali ini karena tepi saat ini nilai non-negatif dua kali lipat yang pasti positif. Kemudian mencoba untuk mendapatkan input ketiga, tetapi menerima 0 sebagai gantinya.

Masih 0 lagi

Akhirnya ia membungkus dan dialihkan oleh panah, kemudian mencoba membaca input keempat dan mendapat 0 lagi. Itu membungkus dan mencoba membaca input kelima dan menerima 0 untuk terakhir kalinya. Ini itu mencetak, dan membungkus ke @dan keluar.

Perhatikan bahwa b * (10 ^ k + 1) * 10> 0 + b = b di mana k adalah panjang b dalam digit, jadi ini berfungsi.


2

Biliar , 11 karakter = 17 byte

⇲
⇲
+
1
+
↥

Implements x + y + 1. Dasar cantik. Dibutuhkan input pada dua jalur terpisah. (Omong-omong, bahasa tersebut dimodifikasi sedikit setelah tantangan, tetapi hanya untuk menekan prompt dari penginputan, tidak yakin apakah jawaban ini masih valid).

7 karakter = 11 byte, tidak bersaing

Yang ini lebih pendek tetapi hanya mungkin setelah pembaruan bahasa yang baru:

⇲
⇲
=
$

Penggunaan ini x == y, yang dicuri tanpa malu-malu dari solusi RProgN @ ATaco [harap Anda tidak keberatan (:]. Saat $keluar, mengeluarkan berapa banyak bola yang melewatinya.


slightly after the languagekesalahan ketik, juga saya pikir ketika bahasa memiliki input prompt, itu masih akan valid. Saya tidak berpikir standar output yang ketat, dan output non-supresif diperbolehkan saya pikir
Destructible Lemon

@DestructibleWatermelon Oh, itu kesalahan ketik yang aneh. Terimakasih atas klarifikasinya. Saya benar-benar memodifikasi bahasa, kemudian datang dan melihat tantangannya, jadi saya memutuskan untuk menambahkan catatan itu di sana kalau-kalau ada orang yang pilih-pilih untuk memeriksa kapan ada push to GitHub, tapi terima kasih sudah menjelaskannya.
HyperNeutrino
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.