Tantangan
Tulis sebuah program yang mengambil array 4 bilangan bulat ( yang mewakili urutan angka yang dihasilkan oleh algoritma tertentu ) dan mengembalikan bilangan bulat berikutnya yang akan mengikuti.
Kami hanya akan menggunakan algoritma penjumlahan, pengurangan, perkalian, dan pembagian sederhana dengan variasi konstan (yaitu non-variabel).
Untuk divisi kita akan menggunakan nilai floor
integer: 133/4 = 33
dan33/4 = 8
Anda dapat mengasumsikan bahwa akan selalu ada satu nilai pengembalian yang valid
Uji kasus
[14,24,34,44]
harus mengembalikan 54 (tambahan Algoritma)
[105,45,-15,-75]
harus mengembalikan -135 (algoritma pengurangan)
[5,25,125,625]
harus mengembalikan 3125 (algoritme multiplikatif)
[256,64,16,4]
harus mengembalikan 1 (algoritma pembagian)
Aturan umum
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte memenangkan tantangan.
- Celah standar dilarang
-81/4
adalah21 r 3
atau-20 r -1
.Jawaban:
05AB1E ,
181618 bytePenjelasan
Cobalah online!
sumber
[-325, -82, -21, -6]
Javascript (ES6),
444244 byte (tetap)Disimpan 2 byte, mengikuti saran IsmaelMiguel.
Memperbaiki versi untuk
[2,1,0,0]
dan[1,0,0,0]
seperti yang disarankan oleh edc65Versi 30 byte
Sebagai catatan, upaya pertama saya adalah
3230 byte tetapi kurang dukungan lantai () untuk divisi. Itu juga gagal untuk kasus khusus seperti[2,1,0,0]
dan[1,0,0,0]
.Demo
sumber
[a,b]=>
untuk parameter fungsi. Dibutuhkan tanda kurung.b*2==c+a
<=> algoritma penambahan / substraksiBrachylog ,
373327 byteCobalah online!atau verifikasi semua kasus uji .
Disimpan 10 byte berkat @LeakyNun .
Penjelasan
Seperti yang LeakyNun tunjukkan, kita tidak perlu kasus pengurangan karena
I
bisa berupa bilangan bulat apa pun.sumber
Haskell, 65 byte
sumber
Python 2, 40 byte
Ini benar-benar jawaban JS porting ke Python (terima kasih @LeakyNun!). Pendekatan saya sebelumnya sangat panjang, tapi ini dia:
Python 2,
169166 byteLevel kedua dan ketiga adalah tab mentah dan tab mentah ditambah spasi, yang masing-masing memainkan sangat buruk dengan Markdown, sehingga tab telah digantikan oleh 2 spasi.
Cukup mudah; mencoba setiap konstanta dan operator yang dianggapnya adalah konstanta, maka jika kombinasi konstanta / operator berfungsi untuk setiap elemen dalam daftar (menggunakan a
try
/except
pair untuk menghindariZeroDivisionError
s), ia mencetak hasil untuk elemen terakhir dalam daftar.Saya yakin ada metode yang lebih baik di sini, ini adalah metode naif.
sumber
[1,0,0,0]
yang seharusnya menghasilkan0
TSQL, 55 byte
Skrip ini mencoba menambahkan dan mengurangi dalam centang yang sama, kemudian mencoba untuk menggandakan, jika gagal, itu harus pembagian.
Biola
sumber
C #, 63 byte
Cek apakah perbedaan antara elemen pertama dan kedua sama dengan perbedaan antara elemen kedua dan ketiga. Jika demikian, ia melakukan penambahan / pengurangan, jika tidak maka akan terjadi perkalian / pembagian.
sumber
JavaScript, 73 byte
Tes :
Bekerja untuk mereka semua.
sumber
Bahasa GameMaker, 70 byte
sumber
R,
6874Array: 68 byte
4 input: 45 byte
Solusi bonus dengan
log
,exp
,var
, 71 bytespembaruan: pembagian integer
sumber
b-a
untuk menyimpan byte (dan saya perhatikan bahwa panggilan contoh Anda menambahkan spasi kembali).261,65,16,4
Mengembalikan0.9961686
daripada1
(tentu saja harus ada uji kasus untuk ini dalam pertanyaan).Java,
125123 byteGolf:
Tidak Disatukan:
Kode ini pasti memiliki beberapa masalah karena tidak menangani pembagian dengan nol dan hal-hal semacam itu. Tentu saja ini juga tidak akan berfungsi jika ada lebih dari (atau kurang) dari 4 bilangan bulat di dalam array input
a
. Yang membuatnya sangat bodoh, tapi aku bersenang-senang :)Cobalah: https://ideone.com/nELH5I
sumber
TI-Basic, 37 byte
Berfungsi pada kalkulator TI-83/84
sumber
Python 2,
75 66 6561 byteJauh lebih lama dari entri 38 byte saya sebelumnya yang tidak memenuhi seri divisi dengan benar (seperti kebanyakan orang lain tidak).
Kasus uji dan lebih banyak kasus tepi ada di ideone
Catatan: pembagian integer untuk negatif di sini didefinisikan sebagai memiliki sisa dengan tanda yang sama dengan pembagi, sehingga
-81/4
akan-21
dengan sisa3
dan-81/-4
akan20
dengan sisa-1
.sumber
-81/-4 != -21
Jelly, 14 bytes
Try it online!
sumber
Pyth, 18 Bytes
Accepts input as a newline-separated list of values.
Try it online!
Explanation:
sumber