Deskripsi Braid
Dalam jalinan ini, ketika sebuah untai melintas di atas untai lain, itu menambah nilai untai lain untuk dirinya sendiri dan semua nilai untai lainnya melewati. Jalinan memiliki tiga untai dan setiap untai dimulai pada 1. Crossover pertama adalah untai paling kiri yang melintasi untai tengah. Crossover berikutnya adalah untai paling kanan melintasi untai tengah baru (sebelumnya untai paling kiri). Kedua langkah crossover ini diulang. Dengan kata lain, crossover pertama adalah [a, b, c] -> [b, a+b, c]
dan yang kedua adalah [a, b, c] -> [a, b+c, b]
. Menggunakan aturan-aturan ini di sini adalah enam tingkat kepang pertama:
1,1,1
1,2,1
1,3,2
3,4,2
3,6,4
6,9,4
Tugas Anda
Tulis program atau fungsi golf yang menerima integer sebagai tingkat kepang dan output tiga nilai untuk tingkat kepang itu. Anda harus menunjukkan apakah level Anda berbasis nol atau satu. Input dan output dapat datang dalam format apa pun yang masuk akal dan ruang kosong tambahan diperbolehkan.
Kasus Uji (berbasis 1)
1 -> 1,1,1
2 -> 1,2,1
5 -> 3,6,4
10 -> 28,41,19
Jawaban:
MATL ,
181716 byteInput berbasis 0.
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
Diberikan vektor baris
[a b c]
, vektor berikutnya diperoleh pasca-matriks-mengalikannya dengan baikatau
tergantung pada apakah indeks iterasi aneh atau genap. Sebagai contoh, produk matriks
[1 3 2]*[0 1 0; 1 1 0; 0 0 1]
memberi[3 4 2]
. Kemudian[3,4,2]*[1 0 0; 0 1 1; 0 1 0]
memberi[3 6 4]
, dan seterusnya.Perhatikan juga bahwa matriks kedua sama dengan 180 derajat pertama yang diputar, yang dapat dieksploitasi untuk menghemat beberapa byte.
sumber
[[0, 1, 0], [1, 1, 1], [1, 1, 0]]
dan posisi awal yang berbeda cukup mirip untuk genap dan ganjiln
Haskell, 51 byte
Ini menggunakan pengindeksan berbasis 0. Contoh penggunaan:
(f(1,1,1)!!) 10
->(28,60,41)
.f
menciptakan daftar tiga kali lipat kepang yang tak terbatas dan(f(1,1,1)!!)
mengambil yang ke-n.f
itu sendiri adalah rekursi sederhana yang membuat daftar argumennya, diikuti oleh crossover kiri dan panggilan rekursif dengan crossover kiri dan kanan.sumber
Ruby,
6057 byteLevelnya berbasis 1.
Berdasarkan rumus berikut:
Terima kasih kepada Neil untuk 3 byte off dengan beberapa shenanigans bitwise bagus.
sumber
[f[n-2|1],f[n],f[n-1&-2]]
.Python 2 , 57 byte
Cobalah online!
sumber
Jelly , 14 byte
Cobalah online!
Bagaimana itu bekerja
sumber
TI-Basic, 58 byte
Berbasis satu.
sumber
Prompt
adalah perintah 2-byte.Prompt
hanya satu byte. Tetapi terima kasih telah menjelaskan konsep token :)PowerShell 2+, 75 byte
Indeks berbasis 1
Cobalah online! atau Coba semua Uji Kasus!
Loop selalu berjalan sekali jadi untuk kasus tingkat kepang
1
saya cukup mulai dengan array1,1,0
sehingga hasil dari algoritma dengan membuatnya1,1,1
.$a[1]
selalu di tengah, maka saya hanya menentukan apakah indeks elemen lainnya ($d
) akan menjadi0
atau2
berdasarkan pada apakah level saat ini genap atau ganjil. PowerShell mendukung banyak tugas sekaligus sehingga bertukar menjadi semudah$x,$y=$y,$x
yang pada dasarnya apa yang saya lakukan dengan elemen array, hanya menyematkan penambahan dalam tugas itu.sumber
Javascript (ES6), 55 byte
repl.it
Berbasis 1
Ini hanyalah port dari jawaban Ruby @ Doorknob dengan golf bitwise @ Neil yang luar biasa.
sumber
Befunge, 64 byte
Cobalah online!
Penjelasan
sumber
05AB1E , 17 byte
Cobalah online!
sumber
Java 8, 121
Ini menggunakan tingkat berbasis satu:
Tidak disatukan, dengan program uji:
Keluaran:
sumber
Bahasa GameMaker, 113 byte
Satu diindeks, berdasarkan solusi rekursif Doorknob. Tolong jangan tanya mengapa Anda tidak bisa menginisialisasi array primitif sekaligus di GameMaker, saya benar-benar tidak tahu ...
Program utama (69 byte):
Subprogram
a
(46 byte):sumber
Perl 6 , 60 byte
Berbasis nol.
Terus-menerus menghasilkan urutan malas yang tak terbatas, dan kemudian mengindeksnya.
Kemungkinan ada pendekatan yang lebih baik.
sumber
Clojure, 98 byte
Melacak nilai saat ini
v
dan dari posisi mana penjumlahan harus dilakukan untuk putaran selanjutnya. Mulai satu status sebelum[1 1 1]
pengindeksan berbasis 1.sumber
C #
8886 BytesPenjelasan
sumber
Mathematica, 68 byte
Definisi rekursif langsung dari fungsi yang tidak disebutkan namanya, mengambil argumen bilangan bulat positif dan mengembalikan daftar tiga bilangan bulat yang dipesan.
sumber