Urutan Sumac dimulai dengan dua bilangan bulat: t 1 dan t 2 .
Istilah berikutnya, t 3 , = t 1 - t 2
Secara umum, t n = t n-2 - t n-1
Urutan berakhir ketika t n <0.
Tantangan Anda: Tulis program atau fungsi yang mencetak panjang urutan Sumac, dimulai dengan t 1 dan t 2 .
- t 1 dan t 2 adalah bilangan bulat dalam rentang bahasa Anda.
- Celah standar berlaku.
Uji kasus
t1 t2 sumac_len(t1,t2)
120 71 5
101 42 3
500 499 4
387 1 3
Bonus jalan bonus:
3 -128 1
-314 73 2
Ini adalah kode-golf, jadi jawaban tersingkat dalam byte menang.
code-golf
sequence
arithmetic
SIGSTACKFAULT
sumber
sumber
t1
dant2
sebagai masukan? Dan apa yang adai
dalam kasus uji?t_1 = t_2 = 0
? Apakah "bonus street credit" berarti kita tidak harus menanganit_1 < 0
ataut_2 < 0
?Jawaban:
Sekam , 8 byte
Mengambil input sebagai daftar 2-elemen. Cobalah online!
Penjelasan
sumber
Haskell , 22 byte
Cobalah online!
Saya benar-benar berharap ada cara untuk mencocokkan pola untuk angka negatif ...
Penjelasan
sumber
Sekam ,
1211 byteCobalah online!
Mengambil bonus jalan kredit untuk apa pun yang bernilai.
Penjelasan
sumber
Ruby , 29 byte
Cobalah online!
sumber
a<b=a-a=b
... Bagaimana Ruby menguraikan itu ..?MATL , 13 byte
Ini menangani input negatif (dua kasus uji terakhir).
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Brain-Flak ,
14290 byteCobalah online!
Tidak terlalu pendek. Membawa input mundur.
Penjelasan
sumber
05AB1E , 11 byte
Cobalah online!
Penjelasan
Mengambil input sebagai
t2, t1
sumber
Mathematica, 55 byte
Cobalah online!
dan sekarang pendekatan membosankan biasa oleh @totallyhuman
Mathematica, 25 byte
Cobalah online!
sumber
#1
ke#
J , 22 byte
Bagaimana itu bekerja:
Cobalah online!
sumber
C (gcc) ,
322726 byte-5 byte terima kasih atas penyalahgunaan gcc yang benar-benar manusiawi (tampaknya bekerja pada tcc juga)
-1 byte berkat PrincePolka
Cobalah online!
sumber
Python 2 , 29 byte
Cobalah online!
Mengembalikan Benar, bukan 1 .
sumber
JavaScript (ES6), 24 byte
Mengembalikan nilai true sebagai ganti 1 .
Uji kasus
Tampilkan cuplikan kode
sumber
f(b)(a-b)
menyimpan.a<0
? (1 lagi)Pyth , 11 byte
Ini adalah fungsi rekursif yang membutuhkan dua argumen,
G
danH
. Tautan ini sedikit dimodifikasi untuk benar-benar memanggil fungsi pada input yang diberikan.Suite uji.
sumber
APL (Dyalog) , 23 byte
Cobalah online!
Bagaimana?
2∘
- dengan akumulator awal 2,-/⍵
- jika istilah berikutnya0>
- di bawah 0,⍺
- kembalikan akumulator. jika tidak,(⍺+1)
- menambah akumulator∇
- dan berulang dengan-⍨\⌽⍵
- dua item terakhir dibalik dan dibedakan.sumber
Java (OpenJDK 8) , 44 byte
Cobalah online!
Iteratif terpendek yang saya temukan (50 byte)
Cobalah online!
sumber
dc , 24 byte
Cobalah online!
Penjelasan
sumber
Z80 Assembly, 10 byte
Versi ini mencoba melakukan versi "street cred" dari tugas. Namun, untuk kasus uji yang disarankan di mana t1 = -314, t2 = 73 program ini menghasilkan jawaban "0", yang, terus terang, lebih masuk akal daripada "2".
Program pengujian untuk ZX Spectrum 48K yang ditulis menggunakan assembler Sjasmplus dapat diunduh di sini . Snapshot yang dikompilasi juga tersedia .
sumber
Loop: ret c
?2
hasilnya benar-benar hanya hal dengan program saya.0
adalah jawaban yang dapat diterima untuk kasus uji itu? Atau maksud Anda lebih baik memodifikasi program saya menjadi keluaran2
?Java (OpenJDK 8) ,
8575 byteCobalah online!
ungolfed:
sumber
Common Lisp,
5942 byteCobalah online!
sumber
Perl 6 ,
2419 byte-5 byte berkat b2gills Brad Gilbert.
Cobalah online!
Penjelasan : Seluruh hal dalam tanda kurung persis urutan yang dimaksud (
|@_
adalah 2 istilah pertama (= dua parameter),*-*
adalah fungsi yang mengambil dua argumen dan mengembalikan perbedaannya, dan* <0
merupakan kondisi berhenti (istilah kurang dari 0) Kami menghilangkan istilah terakhir dengan^
setelah...
). Kami kemudian memaksa konteks numerik oleh+
operator, yang menghasilkan panjang urutan.sumber
{+(|@_,*-*...^0>*)}
* <0*, but why you don't need it in
0> * `...%h<a>