Terima kasih kepada FryAmTheEggman untuk ide untuk versi kedua ini.
Versi 1 di sini .
Tantangan yang tidak terlalu sederhana: diberikan sejumlah kartu, bangun rumah kartu terbesar yang Anda bisa dengan jumlah kartu itu, sesuai dengan urutan bangunan berikut:
/\ /\ /\ /\/\
-- -- -- ---- ----
/\ → /\/\ → /\/\ → /\/\ → /\/\/\ → /\/\/\ → /\/\/\ →
/\ /\
-- -- --
/\/\ /\/\ /\/\
---- ---- ----
→ /\/\/\ → /\/\/\ → /\/\/\/\ → ...
Jadi Anda mulai dengan rumah satu lantai, kemudian membangun kelompok yang berdekatan, kemudian meletakkan kartu jembatan, kemudian membangun kelompok di lantai dua, kemudian mulai membangun kelompok dan jembatan dari lantai pertama secara diagonal untuk mencapai lantai tiga, dan seterusnya di.
Satu kartu akan diwakili dengan a /
, a \
atau a --
. Jika setelah menggunakan sebanyak mungkin kartu, Anda memiliki satu kartu tersisa, cukup outputkan apa yang telah Anda capai sejauh ini (lihat contoh untuk 3 kartu, hasilnya sama dengan 2 kartu). Satu-satunya pengecualian adalah kasus 1 kartu, yang harus mengeluarkan kartu datar.
Contoh:
Input: 1
Output:
-- <a card lying on the floor>
Input: 2
Output:
/\
Input: 3
Output:
/\
Input: 5
Output:
--
/\/\
Input: 10
Output:
/\
----
/\/\/\
Input: 20
Output:
/\
--
/\/\/\
------
/\/\/\/\
Input: 39
Output:
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
Input: 40
Output:
/\
--
/\/\
----
/\/\/\
------
/\/\/\/\
--------
/\/\/\/\/\
Input dapat berupa angka atau string, dan akan selalu menjadi bilangan bulat positif. Keluaran harus persis seperti yang ditunjukkan, dengan spasi di depan dan di belakang serta baris baru diizinkan.
Ini adalah kode-golf , jadi semoga program / fungsi terpendek untuk setiap bahasa menang!
Jawaban:
Arang , 67 byte
Cobalah online! Catatan: Versi terbaru dari Charcoal tidak perlu
»«
untuk -2 byte. Penjelasan:Baca input sebagai bilangan bulat
θ
.Kasus khusus: jika inputnya 1, cetak a
-
.η
mewakili jumlah kartu yang dibutuhkan untuk membangun lapisan berikutnya, awalnya 2. A while loop berulang selama ada cukup kartu untuk lapisan.Cetak setengah kiri lapisan berikutnya. (Saya ingin mencetak setengah yang tepat, tetapi saya tidak bisa membuatnya mencerminkan dengan benar karena beberapa alasan.) Jumlah
-
s adalah sepertiga dari jumlah kartu di lapisan, dibulatkan ke bawah. (Lihat juga jawaban saya untuk bagian 1.)Kurangi jumlah kartu dari nomor input, dan tambahkan tiga kartu ke nomor yang diperlukan untuk lapisan berikutnya.
Cermin rumah sejauh ini. (Ini juga mengubah
-
ke--
dalam kasus 1 kartu.)Pindahkan kursor ke kanan rumah.
Ulangi untuk setiap kartu yang tersisa (jika ada).
Jika kartu modulo 3 adalah:
1, lalu cetak sepasang kartu;
2, lalu cetak kartu horisontal;
Kalau tidak, lewati kartu (karena pasangan diperlukan pada saat ini).
sumber
--
(kartu datar), tetapi jika Anda memulai program Anda sebelum saya mengubah persyaratan itu saya akan melewatkan itu ...Python 2 , 167
182byte167 byte
182 byte
Penjelasan (versi 167-byte)
Cobalah online!
sumber
<pre><code>...
</code></pre>
tag di sekitar kode Anda, masing-masing blok dengan indentasi 4 spasi<pre><code>
tag , tag tersebut ditangkap<3))+"\n"+" "*v+"/\\"*(h+(r>
sebagai tag lain dan tidak menampilkan wilayah solusi tersebut. Mungkin seseorang di komunitas yang memahami ini sedikit lebih baik dapat memberi tahu kami bagaimana cara menghindarinya ... tetapi selain itu pemformatan Anda saat ini dapat dibaca dengan sempurna dan karenanya meniadakan kebutuhan untuk pemformatan jenis ini bersama<
untuk<
dan>
untuk>
Perl 5 , 129 byte
Cobalah online!
sumber