(terinspirasi oleh pertanyaan SO ini )
Anda diberi input bilangan bulat positif tunggal n .
Dalam karakter sesedikit mungkin, menghasilkan roket dalam seni ASCII dengan kepala, ekor, dan tubuh yang terdiri dari n segmen. Seharusnya tidak ada spasi tambahan atau baris baru.
Kepala dan ekor roket selalu sama untuk nilai n . Tubuh terdiri dari dua jenis segmen yang bergantian. Contoh-contoh harus membuat struktur roket jelas.
Output untuk n = 1:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Output untuk n = 2:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Output untuk n = 3:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Jawaban:
CJam,
6763 karakterIni harus bekerja pada penerjemah online .
Bagaimana itu bekerja
Setelah mendorong string Unicode, snippet
mengubah string dari basis 60000 ke basis 127, melempar ke string dan mengevaluasi hasilnya.
Kode yang dijalankan adalah sebagai berikut:
sumber
CJam, 121 byte
Cobalah online
Mengambil input n melalui STDIN.
Saya akan menambahkan penjelasan di beberapa titik nanti. Pada dasarnya itu semua hanya sekelompok loop dengan cara yang sangat naif. Untuk bergantian di antara dua bagian tubuh yang berbeda, saya punya loop bersarang di atas bagian dan satu lingkaran di atas
0
dan1
. Lalu saya hanya menambahkan iterator luar dan yang dalam, dan menggunakan paritas mereka untuk memutuskan antara segitiga menunjuk ke atas atau ke bawah.sumber
java.util.NoSuchElementException
salinan + menempelkan kode (menunjukLri
)Ruby, 203
Tidak disatukan
Saya pikir dalam hal ini bermanfaat memiliki versi non-golf.
Penjelasan
Saya ragu ini mendekati efisien, tapi tetap menyenangkan.
ARGV
.h
berisi "kepala" dan "ekor" roket,r
berisi "punggungan" yang memisahkan berbagai bagian roket danm
danp
merupakan bagian atas dan bawah dari "tubuh" roket.Array
["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]
dan mengambil3*n
elemen pertama .puts
memastikan semuanya mendapatkan jalurnya sendiri.sumber
Python, 120 + 77 + 1 = 198 karakter
Ini akhirnya menjadi pendekatan yang salah, tetapi saya sudah selesai ketika Martin memposting jawabannya.
Membutuhkan file
R
(+1 untuk nama file) sebesar 77 byte, yang dapat Anda hasilkan sebagai berikut:sumber
JS, WIP, 252b atau 173 karakter
Ini bukan fungsi, jadi Anda harus mengatur nilai n di awal (3 di sini), kemudian jalankan di konsol atau di nodeJS.
Inilah versi 252b:
Dan inilah versi 173 karakter (menggunakan http://xem.github.io/obfuscatweet/ )
sumber
JavaScript (E6) 252
257Terlalu sering menggunakan string. Ulangi
sumber
Javascript (ES3): 243
219bytesumber
SyntaxError: function statement requires a name