Untuk keperluan pertanyaan ini, kurva berkelok-kelok adalah kurva yang mengikuti arah umum dari kiri ke kanan, tetapi berulang kali membuat n + 1 berbelok pada 90 derajat ke kiri dan kemudian n + 1 berbelok ke kanan (untuk n> 0).
Bahkan berliku-liku itu sendiri akan memiliki n
segmen.
Gilirannya dilambangkan dengan +
.
Lebar berkelok-kelok (jarak antara dua +
) adalah 3 di cakrawala ( ---
) dan 1 di vertikal ( |
)
Berikut adalah segmen tunggal kurva berkelok-kelok dengan ukuran n dari 1 hingga 5:
+-------------------+
| |
+---------------+ | +-----------+ |
| | | | | |
+-----------+ | +-------+ | | | +---+ | |
| | | | | | | | | | | |
+-------+ | +---+ | | +---+ | | | +---+ | | |
| | | | | | | | | | | | | |
+---+ +---+ | +---+ | | +-------+ | | +-----------+ | |
| | 1 | | 2 | | 3 | | 4 | | 5
---+ +-------+ +-----------+ +---------------+ +-------------------+ +
Tantangan:
Diberi dua angka positif n
dan m
, gambarkan m
segmen kurva berkelok-kelok dengan ukuran n
. Anda dapat menulis program atau fungsi lengkap.
Memasukkan:
n
> 0 Ukuran kurva
m
> 0 Jumlah segmen untuk menggambar
Keluaran:
Representasi ASCII dari kurva berkelok-kelok.
Contoh:
n = 3
m = 2
+-----------+ +-----------+
| | | |
| +---+ | | +---+ |
| | | | | | | |
+---+ | | +---+ | |
| | | |
-----------+ +-----------+ +
n = 2
m = 5
+-------+ +-------+ +-------+ +-------+ +-------+
| | | | | | | | | |
+---+ | +---+ | +---+ | +---+ | +---+ |
| | | | | | | | | |
-------+ +-------+ +-------+ +-------+ +-------+ +
n = 4
m = 4
+---------------+ +---------------+ +---------------+ +---------------+
| | | | | | | |
| +-------+ | | +-------+ | | +-------+ | | +-------+ |
| | | | | | | | | | | | | | | |
| +---+ | | | +---+ | | | +---+ | | | +---+ | |
| | | | | | | | | | | | | | | |
+-------+ | | +-------+ | | +-------+ | | +-------+ | |
| | | | | | | |
---------------+ +---------------+ +---------------+ +---------------+ +
Kriteria menang:
Ini adalah kode-golf , jadi kode terpendek dalam byte di setiap bahasa menang. Tolong jelaskan kode Anda, jika Anda punya waktu untuk melakukannya.
n
dibiarkan belok?n+1
ketika melihat contoh-contoh, terutama antara segmen tunggal ..Jawaban:
Arang ,
523433 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan ukuran berliku-liku.
Putar ke atas saat gambar dimulai di kanan dan bekerja ke kiri.
Simpulkan jumlah meander yang diinginkan.
Lingkari bagian yang berliku-liku.
Cetak a
+
.k
Bergantian antara menggandakan dan melipatgandakan panjang karena garis horizontal dua kali lebih panjang, tetapi kurangi hasilnya sebelum dicetak untuk memperhitungkan
+
yang baru saja dicetak.Putar tepat untuk segmen berikutnya.
sumber
APL (Dyalog Classic) ,
10810195 byteCobalah online!
sumber
Python 3 ,
371354346328298290 byte-20B Terima kasih untuk ceilingcat
Cobalah online!
Pra-golf:
sumber
C (gcc) ,
559 540 523 511 494 484 476 468 456 447443 byteCobalah online!
Sedikit kurang golf
sumber
Dash - skrip POSIX Shell, 528 byte
Cobalah online!
golf:
ungolfed:
sumber
Python 2 , 261 byte
Cobalah online!
5 byte dari tip ini oleh Esolanging Fruit .
sumber