Kiriman Anda harus mengambil daftar angka (dalam format daftar apa pun yang didukung bahasa Anda, atau menggunakan beberapa fungsi / parameter baris perintah) atau serangkaian angka yang dipisahkan oleh karakter apa pun yang tidak 0123456789
. Dalam satu bahasa, ia harus menambahkan semuanya dan menampilkan jumlahnya. Dalam bahasa lain, itu harus output mereka dikurangi satu sama lain secara berurutan. Contoh:
12
5
7
2
Dalam satu bahasa, itu harus output 26
, dan dalam bahasa lain itu harus output -2
. Perhatikan bahwa semua angka yang dimasukkan akan bilangan bulat positif kurang dari 100
. Tidak akan pernah ada lebih dari 20
angka yang diberikan, sehingga Anda tidak akan pernah menghasilkan lebih dari 2000
atau kurang dari -1899
. Ada pertanyaan? Komentar dibawah!
[code-golf] -[polyglot]
?Jawaban:
Jelly / 05AB1E , 3 byte
Ini adalah hexdump (xxd) dari program yang dikirimkan.
Cobalah online!
Jelly: Jumlah
Jelly menggunakan halaman kode Jelly , sehingga ia melihat karakter berikut.
Cobalah online!
Bagaimana itu bekerja
05AB1E: Perbedaan
05AB1E menggunakan Windows-1252 , jadi ia melihat karakter berikut.
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2/3, 52 byte
int(1-(1/2)*4)
kembali1
dalam Python 2 karena1/2
mengevaluasi dulu0
, lalu0 * 4 = 0
.int(1-(1/2)*4)
kembali-1
dalam Python 3 karena1/2
mengevaluasi dulu0.5
, laluint(0.5 * 4) = int(2.0) = 2
.sumber
C dan C ++ (keduanya dari GCC),
817573 byteMembawa pointer ke array dan panjang.
Penjelasan: masih menggunakan penjelasan @Steadybox ': p Dalam C,
auto d=.5
mendeklarasikan variabel integer dengan kelas penyimpanan otomatis (yang merupakan default), yang kemudian diinisialisasi ke 0, sedangkan dalam C ++ 11 menyatakan double, yang diinisialisasi ke 0,5.Bahasa C - plus: Coba online!
C ++ - minus bahasa: Cobalah online!
sumber
05AB1E / Jelly , 5 byte
Cobalah online! (05AB1E)
Cobalah online! (Jeli)
05AB1E melihat :
Penjelasan:Jelly melihat :
Penjelasan:sumber
7f
.Sebenarnya / Jelly , 4 byte
Ini adalah hexdump (xxd) dari program yang dikirimkan. Itu tidak dapat diuji dalam bentuk mentah online; TIO tidak mendukung pengkodean CP437.
Sebenarnya: Sum
Sebenarnya menggunakan CP 437 , jadi itu melihat karakter berikut.
Cobalah online!
Bagaimana itu bekerja
Jelly: Perbedaan
Jelly menggunakan halaman kode Jelly , sehingga ia melihat karakter berikut.
Cobalah online!
Bagaimana itu bekerja
sumber
actually, Jelly.
:)ṛ
:)ü
ditetapkan ke fungsi yang sempurna> _>jelly, actually
.Python 2 dan 3,
4441 byteMembawa angka yang dipisahkan ruang.
-3 byte terima kasih kepada @JonathanAllan
Cobalah online: Python 2 (minus) Python 3 (plus)
sumber
'-+'[1/2>0]
untuk menyimpan tiga byte.CJam / Jelly , 6 byte
CJam
Cobalah online!
Jeli
(menggunakan UTF-8, bukan halaman kode Jelly)
q~:-
adalah tautan pembantu. Karena tidak dipanggil, itu benar-benar tidak peduli apa fungsinya.S
menghitung jumlah array.Cobalah online!
sumber
q~:-½S
. Sayangnya, perbaikan (q~:-e#\x7fS
) lebih besar. Cobalah online! (CJam) dan Coba online! , masing-masing dengan encoding sendiri untuk menguji sendiri.JavaScript / Cubix, 36 byte
Cobalah!
Fungsi JavaScript dapat diuji menggunakan cuplikan di bawah ini, program Cubix dapat diuji di sini .
Bagaimana cara kerjanya?
JavaScript
Baris pertama adalah komentar baris untuk JavaScript, karena dimulai dengan dua garis miring, jadi JavaScript hanya melihat garis bawah (
a=>eval(a.join`-`)
), yang menggunakan array sebagai input, bergabung dengan tanda minus di antara, dan kemudian menjalankannya sebagai kode, menghasilkan pengurangan semua elemen dalam array.Cubix
Cubix melihat kubus berikut (perhatikan bahwa Cubix mengabaikan semua spasi putih):
Awal mula
IP dimulai pada baris ketiga, menunjuk ke timur. Itu hits
'I'
perintah, yang mengambil nomor dari input, dan mendorongnya ke tumpukan. Kemudian, diarahkan'^'
ke sum-loop.Jumlah loop
Saya menghapus semua karakter bukan bagian dari jumlah loop, dan menggantinya dengan no-ops (
'.'
). IP awalnya tiba di baris kedua, menunjuk ke timur.Pertama,
'!'
perintah memeriksa elemen atas. Jika itu0
(yaitu kita telah mencapai akhir input), instruksi selanjutnya ('v'
) dijalankan, yang mencerminkan IP dari loop. Jika kami belum mencapai akhir input, kami menambahkan dua item teratas bersamaan ('+'
, item kedua adalah jumlah hingga titik itu, item teratas input baru). Kemudian, IP membungkus ke wajah lain dari kubus, ke dalam'u'
karakter, yang menyebabkan IP untuk berbelok-u, dan menjalankan'I'
perintah (baca integer input lain), sambil menunjuk ke utara. IP membungkus kembali ke wajah atas, melompati ('$'
) instruksi hapus (';'
) dan melakukan putaran u lainnya, kembali ke titik di mana kita mulai.Tamat
Jika IP tercermin dari loop, karakter berikut dieksekusi:
Instruksi-instruksi ini menghapus elemen atas (yang nol), dan kemudian menampilkan elemen atas (jumlahnya) sebagai bilangan bulat. Kemudian
'@'
perintah tercapai, sehingga program berakhir.sumber
Python 2 dan 3, 33 byte
Mengambil input sebagai parameter terpisah.
Python 2.
Python 3.
sumber
lambda l,*r:l+sum(r)*(1/2-.5)*2
untuk 31 byte*(1/2*4-1)
byte lebih kecil dari milik Anda.JS (ES6), CGL (CGL Golfing Language) ,
3226 byteJS melakukan pengurangan dan CGL melakukan penambahan.
JS:
Fungsi anonim yang mengurangi setiap elemen dalam array menggunakan
Array#reduce
.Komentar.
CGL
Apa yang tampak seperti spasi di baris pertama sebenarnya adalah ruang yang tidak melanggar, komentar di CGL. Baris pertama diabaikan.
Itu
/
tidak melakukan apa-apa. The-
decrements stack pointer saat ini sehingga menunjuk ke masukan.⨥
menambahkan tumpukan saat ini (input) bersama-sama, mendorongnya ke tumpukan berikutnya, dan menambah tumpukan saat ini. Secara implisit dihasilkan.sumber
x=>eval(x.join`-`)
, menghemat 5BJavaScript (ES6) / QBasic,
8483 byteSolusi lain dengan hack komentar!
JavaScript menghitung jumlahnya. Dibutuhkan dalam array yang berisi angka sebagai input. Output sebagai fungsi
return
. Anda dapat memanggil fungsi sepertialert(f([10,20,30]))
.QBasic menghitung perbedaannya. Berkali-kali meminta input. Segera setelah Anda memasukkan nilai, itu menghasilkan perbedaan dari semua angka yang Anda masukkan sampai waktu memukul Enterdan lagi meminta input. Terus melakukan hal yang sama hingga akhir segalanya.
Bagaimana cara kerjanya?
Dalam QBasic (bahasa keluarga BASIC terstruktur; tidak memerlukan nomor baris),
'
menandai awal dari komentar yang berlangsung sampai akhir baris. Sedangkan dalam JavaScript, ini menandai dimulainya string. Jadi, seluruh baris pertama ditandai sebagai komentar di QBasic tetapi dalam JavaScript, baris dieksekusi (dan baris ini berisi bagian JavaScript yang menambahkan angka serta/*
pada bagian akhir yang memulai komentar untuk menyembunyikan sisanya) kode QBasic dari penerjemah JavaScript.)Kode dari baris kedua ke baris kedua terakhir berisi kode QBasic untuk menghitung perbedaan semua nomor input (kode ini sangat jelas).
Baris terakhir berisi
'*/
.'
menyebabkan juru bahasa QBasic untuk menafsirkan kode berikut sebagai komentar, sedangkan dalam JavaScript, itu tidak memiliki efek apa pun karena merupakan bagian dari komentar (yang dimulai pada akhir baris pertama). Kode berikut (*/
) menyebabkan JavaScript untuk mengakhiri komentar yang dimulai pada baris pertama, tetapi tidak dieksekusi dalam QBasic karena QBasic menganggapnya sebagai bagian dari komentar.Uji Kasus
JavaScript (menambahkan):
QBasic (kurangi):
Pergi ke situs web ini . Salin tempel kode berikut dalam editor teks mereka:
Alasan mengapa nomor baris diperlukan adalah bahwa situs web yang saya sebutkan hanya mendukung bahasa BASIC yang tidak terstruktur. Dan situs web itu adalah satu-satunya penerjemah BASIC online yang layak yang dapat saya temukan. Namun, menjalankan kode yang ada di bagian atas posting (kode tanpa nomor baris) harus berfungsi dengan baik dalam setiap juru bahasa QBasic yang baik yang mendukung BASIC terstruktur dan
'
sebagai starter-komentar (beberapa tidak, sebagian melakukannya, sebagian besar melakukannya).Catatan
END
karena penerjemah tidak akan pernah mencapainya! (Ini akan selamanya terjebak dalam infinite loop; selalu meminta lebih banyak input.)sumber
Brain-Flak / Brain-Flueue , 20 byte
Cobalah online! (Brain-Flak) (plus)
Cobalah online! (Brain-Flueue) (minus)
Penjelasan
Satu-satunya perbedaan antara Brain-Flak dan Brain-Flueue adalah Brain-Flueue menggantikan dua tumpukan (last in first out) yang digunakan di Brain-Flak dengan dua antrian (first in first out). Secara alami program ini menggunakan perbedaan ini.
Kode Beranotasi
sumber