Sebuah Arus Ular, juga dikenal sebagai kurva Gosper , adalah kurva fraktal, tumbuh secara eksponensial dalam ukuran dengan setiap pesanan / iterasi dari proses yang sederhana. Di bawah ini adalah detail tentang konstruksi dan beberapa contoh untuk berbagai pesanan:
Pesanan 1 Alur Ular :
____
\__ \
__/
Pesanan 2 Flow Snake :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \
/ __ \__ \ \/
\ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
Pesanan 3 Flow Snake :
____
____ \__ \
\__ \__/ / __
__/ ____ \ \ \ ____
/ __ \__ \ \/ / __ \__ \
____ \ \ \__/ / __ \/ / __/ / __
____ \__ \ \/ ____ \/ / __/ / __ \ \ \
\__ \__/ / __ \__ \__/ / __ \ \ \ \/
__/ ____ \ \ \__/ ____ \ \ \ \/ / __
/ __ \__ \ \/ ____ \__ \ \/ / __ \/ /
\ \ \__/ / __ \__ \__/ / __ \ \ \__/
\/ ____ \/ / __/ ____ \ \ \ \/ ____
\__ \__/ / __ \__ \ \/ / __ \__ \
__/ ____ \ \ \__/ / __ \/ / __/ / __
/ __ \__ \ \/ ____ \/ / __/ / __ \/ /
\/ / __/ / __ \__ \__/ / __ \/ / __/
__/ / __ \ \ \__/ ____ \ \ \__/ / __
/ __ \ \ \ \/ ____ \__ \ \/ ____ \/ /
\ \ \ \/ / __ \__ \__/ / __ \__ \__/
\/ / __ \/ / __/ ____ \ \ \__/
\ \ \__/ / __ \__ \ \/
\/ \ \ \__/ / __
\/ ____ \/ /
\__ \__/
__/
Konstruksi
Pertimbangkan urutan 1 Alur Ular yang akan dibangun dari jalur yang berisi 7 tepi dan 8 simpul (berlabel di bawah. Diperbesar untuk kelayakan):
4____5____6
\ \
3\____2 7\
/
0____1/
Sekarang untuk setiap pesanan berikutnya, Anda cukup mengganti tepi dengan versi yang diputar dari pola pesanan 1 asli ini. Gunakan 3 aturan berikut untuk mengganti tepi:
1 Untuk tepi horizontal, gantikan dengan bentuk aslinya seperti:
________
\ \
\____ \
/
____/
2 Untuk /
tepi ( 12
dalam konstruksi di atas), ganti dengan versi yang dirotasi berikut:
/
/ ____
\ / /
\/ /
/
____/
3 Untuk \
tepi ( 34
dan di 67
atas), ganti dengan versi yang dirotasi berikut:
/
/ ____
\ \ \
\ \ \
\ /
\/
Jadi misalnya, urutan 2 dengan simpul dari urutan 1 berlabel akan terlihat seperti
________
\ \
________ \____ \6
\ \ / /
\____ \5___/ / ____
/ \ \ \
4___/ ________ \ \ \7
/ \ \ \ /
/ ____ \____ \2 \/
\ \ \ / /
\ \ \3___/ / ____
\ / \ / /
\/ ________ \/ /
\ \ /
\____ \1___/
/
0___/
Sekarang untuk urutan yang lebih tinggi, Anda cukup memecah level saat ini menjadi tepi dengan panjang 1 /
, 1 \
atau 2 _
dan ulangi prosesnya. Perhatikan bahwa bahkan setelah penggantian, simpul umum antara dua tepi berurutan masih bertepatan.
Tantangan
- Anda harus menulis fungsi dari program penuh yang menerima integer tunggal
N
melalui argumen fungsi STDIN / ARGV / atau yang setara terdekat dan mencetak urutanN
Snake Flow pada STDOUT. - Bilangan bulat input selalu lebih besar dari
0
. - Seharusnya tidak ada ruang utama yang bukan bagian dari pola.
- Seharusnya tidak ada ruang trailing atau ruang trailing yang cukup untuk membentuk pola untuk mengisi persegi panjang batas minimum sepenuhnya.
- Mengejar baris baru adalah opsional.
Fakta menyenangkan
- Flow Snakes adalah permainan kata Snow Flakes, yang menyerupai pola ini untuk urutan 2 dan di atasnya
- Aliran dan Ular benar-benar memainkan bagian dalam pola karena polanya terdiri dari jalur tunggal yang mengalir di seluruh.
- Jika Anda perhatikan dengan seksama, pola urutan 2 (dan lebih tinggi juga) terdiri dari rotasi pola urutan 1 yang diputar pada simpul umum arus dan tepi sebelumnya.
- Ada varian Non ASCII dari Flow Snakes yang dapat ditemukan di sini dan di beberapa lokasi lain.
Ini adalah kode-golf sehingga kode terpendek dalam byte menang!
Papan peringkat
Posting pertama dari seri menghasilkan leaderboard.
Untuk memastikan jawaban Anda muncul, mulailah setiap jawaban dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes