pengantar
Dalam geometri, kurva Peano adalah contoh pertama dari kurva pengisian-ruang yang ditemukan, oleh Giuseppe Peano pada tahun 1890. Kurva Peano adalah fungsi surjective, kontinu dari interval satuan ke unit square, namun itu tidak injeksi. Peano termotivasi oleh hasil sebelumnya dari Georg Cantor bahwa dua set ini memiliki kardinalitas yang sama. Karena contoh ini, beberapa penulis menggunakan frasa "kurva Peano" untuk merujuk secara lebih umum ke kurva pengisian-ruang.
Tantangan
Program ini mengambil input yang merupakan bilangan bulat n
, dan mengeluarkan gambar yang mewakili n
iterasi kurva Peano, mulai dari sisi 2 yang ditunjukkan di bagian paling kiri gambar ini:
Memasukkan
Integer n
memberikan angka iterasi dari kurva Peano. Opsional, input tambahan dijelaskan di bagian bonus.
Keluaran
Sebuah gambar dari n
iterasi kurva Peano. Gambar dapat berupa seni ASCII atau gambar "nyata", mana yang paling mudah atau paling pendek.
Aturan
- Input dan output dapat diberikan dalam format apa pun yang nyaman (pilih format yang paling sesuai untuk bahasa / solusi Anda).
- Tidak perlu menangani nilai negatif atau input yang tidak valid
- Program lengkap atau fungsi dapat diterima.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online sehingga orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Bonus
Karena ini seharusnya bukan jalan-jalan di taman (paling tidak dalam sebagian besar bahasa yang bisa saya pikirkan), poin bonus diberikan untuk hal berikut:
- -100 byte jika kode Anda menghasilkan gif konstruksi kurva Peano hingga
n
. - -100 byte jika kode Anda menggambar kurva ruang-mengisi untuk segala bentuk persegi panjang (kurva Peano hanya bekerja untuk kotak, jelas). Anda dapat mengasumsikan bahwa input kemudian mengambil bentuk di
n l w
manan
memiliki arti yang sama seperti sebelumnya (jumlah iterasi), tetapi di manal
danw
menjadi panjang dan lebar persegi panjang untuk menggambar kurva. Jikal == w
, ini menjadi kurva Peano biasa.
Skor negatif diizinkan (tetapi apakah mungkin ...).
Edit
Harap sertakan hasil program Anda dalam solusi untuk n == 3 (l == w == 1)
.
n
digunakan untuk jikal
danw
yang juga masukan ??????????? Dan apakah kurva Peano akan menjadi kasus khusus - itu bukan satu-satunya kurva spacefilling, jadi beberapa algoritma mungkin harus membuatnya khususJawaban:
Mathematica, skor 60 - 100 - 100 = -140
Fungsi murni. Mengambil
n
dan{l, w}
(lebar dan tinggi) sebagai input, dan memberikan grafik animasi sebagai output. Ini pertama menciptakan n th rangka Peano kurva denganPeanoCurve
. Karena kasus l = w masih perlu membuat kurva Peano, kami membalikkan ekspresi pada level 3, mirip dengan jawaban DavidC ; untuk l ≠ w , kita hanyaScale
kurva ke persegi panjang. Kurva ini akan tetap mengisi ruang, memuaskan bonus kedua. Untuk bonus pertama, kami cukupkanAnimate
semua ukuran. Perhatikan bahwa OP menyarankan bahwa ini cukup berbeda dari DavidC untuk menjamin jawabannya sendiri. Hasil untuk n = 3, l = w = 1 adalah sebagai berikut:sumber
GFA Basic 3.51 (Atari ST),
156134124 byteDaftar yang diedit secara manual dalam format .LST. Semua baris diakhiri dengan
CR
, termasuk yang terakhir.Diperluas dan dikomentari
Contoh output
sumber
Perl 6 , 117 byte
Cobalah online!
Diindeks 0. Mengembalikan array 2D karakter Unicode. Ide dasarnya adalah untuk baris bawah, ekspresi
menghasilkan pola
Untuk baris atas, ungkapannya adalah
Penjelasan
sumber
K (ngn / k) ,
372726 byteCobalah online!
mengembalikan matriks boolean
|'y
sintaks khusus untuk ngn / k. dialek lain membutuhkan a:
untuk membuat kata kerja monadik:|:'y
sumber
1
(jika didukung oleh browser Anda)Bahasa Wolfram
8336 byte, (mungkin -48 byte dengan bonus)Pada versi 11.1,
PeanoCurve
adalah built-in.Pengajuan asli saya yang canggung membuang banyak byte pada
GeometricTransformation
danReflectionTransform.
Versi yang jauh berkurang ini disarankan oleh alephalpha .
Reverse
diperlukan untuk mengarahkan output dengan benar.Contoh 36 byte
Bonus
Jika ini memenuhi syarat untuk bonus 100 pt, itu berbobot di 52 - 100 = -48 Kode
[5]
tidak dihitung, hanya fungsi murni.sumber
Graphics[Reverse/@#&/@PeanoCurve@#]&
BBC BASIC, 142 karakter ASCII (130 byte ditandai)
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/download.html
sumber
HTML + SVG + JS,
224213 byteOutputnya dicerminkan secara horizontal.
Cobalah online!(mencetak HTML)
Tampilkan cuplikan kode
sumber
Logo, 89 byte
Jawaban Atari BASIC dari @ Arnauld. Untuk menggunakan, lakukan sesuatu seperti ini :
sumber
Stax , 19 byte
Jalankan dan debug itu
Output untuk 3:
sumber