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 input0,0
, ia kembali-1
, yang tidak alami)"ABC"
(ABC
bukan angka)
Catatan:
Output harus selalu merupakan jumlah dari dua bilangan asli (yang sebenarnya hanya bilangan alami)
-1
,undefined
,infinity
,NaN
Dan pesan kesalahan tidak alam nomor. Untuk tujuan kita,0
adalah wajar (meskipun tidak semua ahli matematika setuju).
code-golf
number
arithmetic
Julian Lachniet
sumber
sumber
Jawaban:
RProgN ,
431 ByteDicoret 4 masih 4; (
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
Cobalah online!
sumber
Retina , 3 byte
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 a1
, 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).sumber
0 0
juga harus bekerja.010
dianggap bilangan bulat melalui dasarnya semua parser bilangan bulat. Saya bisa melihat argumen potensial yang0 8
tidak valid atas dasar yang018
dianggap 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?.
1
jika Anda sendiri tidak ingin mengembalikan nol yang memimpin.Python , 13 byte
Cobalah online! Mengambil input sebagai tuple.
Menggunakan metode objek untuk fungsi menghindari pelat ketel dari a
lambda
.Di sini, idenya adalah untuk memetakan
(0,0)
untuk1
dan segala sesuatu yang lain untuk0
. Karena hanya0+0
memberikan jumlah di0
antara bilangan alami, itu selalu menghindari pencocokan jumlah.Jika seseorang bisa mengeluarkan Boolean di sini, yang menurut saya teduh, byte bisa disimpan sebagai
Ini memeriksa apakah masukan tuple paling banyak
(0,0)
, yang hanya berlaku untuk(0,0)
. Dengan Python,True==1
danFalse==0
. Yang lebih memalukan, mengeluarkan melalui kode keluar dan memperlakukannya sebagai Python Boolen akan menghemat dua byte:Jika string I / O diizinkan dan nol nol di depannya, ada solusi 8-byte
Ini menggabungkan
a1b
, yang selalu lebih besar daria+b
.sumber
int.__eq__
untuk 10 byteMATL, dkk. 1 byte
Menerima dua bilangan alami sebagai input dan membandingkannya. Jika mereka sama, output adalah
1
dan jika mereka tidak sama dengan output0
. Ini adalah pendekatan yang sama dengan solusi @ ATaco.MATL
Jelly (oleh @ ais523)
Stacked (oleh @Conor O'Brien)
APL (Dyalog APL) (oleh @ Adám)
J (oleh @ Adám)
Sebenarnya (oleh @Mego)
Tersirat (oleh @MD XF)
sumber
=
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.Javascript, 10 byte
Membawa 2 angka menggunakan sintaks currying seperti:
sumber
Vim, 3 byte / penekanan tombol
Cobalah online!
Perhatikan bahwa
<C-a>
sebenarnya ctrl-a , yang mewakili byte0x01
.Saya suka ketika vim (yang bahkan bukan bahasa pemrograman) dapat bersaing dengan bahasa golf. :) Masukan datang dalam format ini:
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.sumber
Brain-Flak , 8 byte
Cobalah online!
Ini adalah jawaban kritik yang paling mudah dibaca yang pernah saya tulis. :)
Penjelasan:
Solusi alternatif (juga 8 byte):
Ada banyak solusi lain yang hanya bekerja dengan angka positif:
sumber
Jelly , 2 byte
Tanda + menambahkan dua input bersamaan kemudian 'menambah jawaban dengan satu
Cobalah online!
sumber
(a+b)+1
tapia+(b+1)
karena rantai angka dua-monadfG
diperlakukan sebagaif(a, G(b))
. Dalam hal ini adalah hal yang sama tetapi secara teknis cara kerjanya berbeda: PTI-Basic, 3 byte
Solusi alternatif:
Sangat menarik bahwa Anda membuat contoh pertanyaan di TI-Basic, tetapi Anda lupa yang lebih pendek
A=B
(atau mungkin terserah kita untuk mengetahuinya?)sumber
Prompt A,B:
membawa masing-masing jumlah byte menjadi delapan byte.Brachylog , 2 byte
Cobalah online!
Penjelasan
Ini akan selalu menghasilkan
A+B+1
, jikaInput = [A, B]
.sumber
Mathematica, 5 byte
Menghasilkan jumlah dari dua argumen ditambah 1. Misalnya,
1+##&[2,5]
menghasilkan8
.(Catatan:
Binomial
hampir berhasil, meskipunBinomial[1,0]=1
danBinomial[4,2]=6
merupakan contoh tandingan; saya pikir mereka satu-satunya contoh tandingan.)sumber
Pochhammer
tampaknya menjadi yang lebih baik daripadaBinomial
. Sejauh yang saya tahu hanya1,0
gagal.KroneckerDelta
bekerja untuk semua input (menjadi setara dengan pemeriksaan kesetaraan di beberapa esolang). Sebenarnya ini lebih pendek untuk diimplementasikan ulangBoole[#==#2]&
, tetapi saya berasumsi Anda sedang mencari built-in yang berfungsi sebagaimana mestinya.PHP, 17 byte
Jalankan seperti ini:
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 adalah0
(0123 = 123).sumber
Perl 6 , 4 byte
Sebuah lambda (dibentuk oleh Apapun-currying ), yang menambahkan kebalikan boolean (1 atau 0) dari argumen pertama ke argumen kedua.
Cobalah online!
sumber
Turtlèd , 12 byte
membuat angka yang sangat besar
Cobalah online!
Penjelasan:
Dengan demikian menghasilkan 10 ** (x + y).
sumber
PHP, 19 byte
sumber
Java (OpenJDK 9) , 10 byte
Cobalah online!
sumber
a->b->a-~b
. Juga bekerja dengan Java 8, edisi apa pun (jadi tidak perlu menentukan OpenJDK 9)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
adalah nama asli Hodor dan diperlukan untuk memulai program.Hodor?!
mengambil nomor dari STDIN atau karakter tunggal dan mengatur akumulator ke inputHodor
tambahkan 1 ke akumulatorHODOR!
mengeluarkan akumulator sebagai angkaHODOR!!!
membunuh Hodor! Tidaaaaaak!Ini adalah kode semu:
sumber
SmileBASIC, 4 byte
bukan (A) + B
1+1=2 -> !1+1 -> 0+1=1
0+1=1 -> !0+1 -> 1+1=2
sumber
2+1
?2+1=3 -> !2+1 -> 0+1=1
R, 13 byte
Terima kasih kepada Jonathan Allan untuk masukannya!
sumber
00
sama saja0
, mungkinsep="1"
?scan()
akan baik-baik saja, menerima input vektor, seperti ini . Tapi kita bisa melakukan satu byte dengan lebih baikcat(sum(scan()+1))
. Mungkin ada yang lebih pendek?cat
itu adalah program lengkap, alternatifnya adalah fungsi yang tidak disebutkan namanya untuk biaya byte yang samafunction(a,b)a+b+1
05AB1E , 1 byte
Bekerja sama dengan
RProgN
jawabannya.Cek apakah
a
danb
sama. Jika demikian, cetak1
. Kalau tidak, cetak0
Cobalah online!
sumber
¢
(a.count (b)) juga harus bekerja untuk 1 byte.C
262419 byteVersi tidak disatukan:
Saya harap spesifikasi saya benar. Pasti bisa dipersingkat !?
@Pavel Terima kasih telah menyimpan 2 byte
@Neil Terima kasih atas masukan Anda.
sumber
()
berkeliling!c+d
?return
, sepertireturn!c+d;
MATLAB / Oktaf, 3 byte
Menerima dua input dan memeriksa kesetaraan dan hasil
1
jika sama dan0
sebaliknya.Demo online
sumber
@eq
? Itu mengembalikan pegangan fungsi yang dapat digunakan untuk mengevaluasi ke fungsi yang diinginkan, sementaraeq
tidak ada artinya.@
mengubahnya menjadi bahasa yang valid. Tapi mungkin aku hanya bertele-tele.brainfuck, 12 byte
Solusi sederhana yang dihasilkan
A+B+1
.Cobalah online
sumber
,>,[-<++>]<.
,>,[-<++>]<.
solusinyadc , 5 byte
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
sumber
PHP, 13 byte; (17 REPL-kurang)
Contohnya
Bagi mereka yang tidak menggunakan REPL
dan jalankan menggunakan
sumber
Cubix,
98 bytePenjelasan
Diperluas, jawaban ini terlihat seperti ini:
Urutan instruksi yang dieksekusi adalah
II~-O@
Diuji untuk semua kombinasi input di mana keduanya berada dalam kisaran
0-100
.Coba di sini .
sumber
APL - 4 Bytes
Mengambil array, menjumlahkan elemen-elemennya dan menambahkan satu. Uji:
sumber
√ å ı ¥ ® Ï Ø ¿ , 4 byte
Untuk menghasilkan, tambahkan
o
sampai akhir.sumber
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:
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:
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.
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.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.
sumber
Biliar , 11 karakter = 17 byte
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.sumber
slightly after the language
kesalahan 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