Ingat kincir-kincir kecil yang Anda sukai dan mereka berputar-putar? Mari kode satu!
Kincir akan memiliki set karakter yang \ | / _
menggambar pusat dan lengannya. Satu roda kincir mungkin bisa terlihat seperti ini:
|
|
|_ ___
___|_|
|
|
|
Tapi apa roda gila yang tidak berputar? Tidak menyenangkan! Kita dapat membuatnya berputar dengan mengatur ulang simbol:
/
\ /
\ /
\/\
\/\
/ \
/ \
/
Tantangannya adalah membuat program yang membutuhkan tiga bilangan bulat dan mengeluarkan roda gila seperti yang ditentukan di bawah ini. Yang pertama dari ini adalah jumlah lengan yang dimilikinya, yang kedua adalah panjang lengan kincir, dan yang ketiga adalah berapa kali ia berputar seperdelapan putaran searah jarum jam.
Anda dapat mengasumsikan sebagai berikut:
- Jumlah lengan akan selalu 0, 1, 2, 4, atau 8.
- Semua lengan akan ditempatkan dengan jarak yang sama satu sama lain.
Posisi awal roda kincir akan memiliki pusatnya seperti ini:
_ |_|
Jika jumlah lengan adalah 1, Anda dapat memutuskan ke arah mana lengan menunjuk.
- Jika jumlah lengan adalah 2, Anda dapat memutuskan untuk membuat titik lengan secara vertikal atau horizontal.
Anda dapat menulis program lengkap yang mengambil input melalui STDIN atau argumen baris perintah, atau fungsi yang mengambil input melalui argumen fungsi. Program Anda harus menunjukkan urutan output yang menunjukkan pemintalan roda gila, masing-masing dipisahkan oleh setidaknya satu baris kosong. Bagian tengah roda kincir seharusnya tidak bergerak lebih dari satu ruang. Anda dapat menghasilkan sebanyak mungkin ruang awal dan spasi tambahan.
Berikut ini beberapa contohnya:
0 2 1
_
|_|
/\
\/
1 3 2
|
|
|_
|_|
/
/
/
/\
\/
_ ___
|_|
2 2 0
_ __
__|_|
8 4 1
\ | /
\ | /
\ | /
\|_/____
____|_|
/ |\
/ | \
/ | \
/ | \
| /
\ | /
\ | /
\ |/
____\/\____
\/\
/| \
/ | \
/ | \
/ |
Ini kode golf, jadi kode terpendek menang. Semoga berhasil!
1 3 5
dan lengan awalnya mengarah ke atas), ruang perlu ditambahkan pada output sebelumnya untuk mengakomodasi hal ini.Jawaban:
Python 2
535 517 473468 byteDisimpan 5 byte berkat @Easterly Ink!
Input diharapkan dipisahkan koma (yaitu, numArms, armLength, numRots)
Versi Golf
Versi Tidak Serigala
Penjelasan
Cukup sederhana ketika itu rusak. Pertama-tama cari tahu seberapa besar kisi-kisi yang dibutuhkan, kemudian plot alas persegi atau berlian.
Lokasi awal masing-masing lengan, simbol dan arah di-hardcode untuk masing-masing dari 8 lengan yang mungkin untuk dasar persegi dan berlian. Kemudian, menggambar mereka cukup mudah.
Untuk memutar semuanya, saya cukup beralih antara dasar persegi dan berlian, lalu menambah masing-masing lengan, memutarnya searah jarum jam sekali.
sumber
' ' for
untuk' 'for'
,] for
untuk]for'
, 8 untuk ke8for'
,print ''
untukprint''
.