Eat the Chocolate Bar


11

Saya memiliki cokelat batangan dan saya butuh bantuan untuk memakannya sehingga Anda akan menulis program hanya untuk melakukannya.

Penjelasan

Baris pertama adalah input. Contoh dipisahkan oleh garis kosong.

7
   ____
 __|__|
|__|__|
|__|__|
|__|__|

6
_______
|__|__|
|__|__|
|__|__|

5
   ____
 __|__|
|__|__|
|__|__|

0


1
   ____
   |__|

Spec

Semoga contoh-contohnya dengan jelas menentukan tantangan ini, tetapi untuk menghindari kemungkinan kebingungan, berikut spesifikasinya:

Anda dapat memiliki satu spasi trailing / leading opsional tunggal

Input dari 0adalah output kosong.

Jika inputnya genap, baris paling atas terlihat seperti:

_______
|__|__|

Jika aneh, baris teratas adalah:

   ____
   |__|

Jika aneh dan lebih besar dari 1, baris teratas adalah:

  ____
__|__|

Baris-baris berikut adalah:

|__|__|

hingga jumlah instance |__|sama dengan input


Apa output untuk input 1? Apakah input 0perlu didukung?
Gagang pintu

@ Doorknob ya, saya telah memperbarui tantangan
Downgoat

1. Bisakah kita mengirimkan fungsi? 2. Bisakah kita mengambil input dari argumen STDIN / fungsi? 3. Apakah kita harus menampilkan satu atau semua iterasi?
yyny

@YoYoYonnY ya, secara default Anda bisa (tautan ini juga menjawab pertanyaan kedua Anda) . Saya tidak yakin apa yang Anda maksud dengan iterasi. Lihatlah contoh-contohnya, itu saja yang Anda harus
hasilkan

Apakah memimpin jalur kosong diizinkan?
Neil

Jawaban:



4

Haskell, 101 byte

Haskell tidak pernah hebat untuk bermain golf kode ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""

Itu tergantung pada bagaimana Anda melihatnya. Java> Python> Haskell> GolfLang. Saya menggunakan python;)
J Atkin

@JAtkin Yah lihat jawaban PHP saya , maka Anda akan melihat yang terburuk
timmyRS

3

JavaScript ES6, 80 byte

x=>(x%2?`   ____
 ${x<2?"  ":"__"}|__|`:x?"_______":"")+`
|__|__|`.repeat(x/2)

Menggunakan teknik yang sama dengan jawaban Japt saya, dan secara mengejutkan tidak lebih lama ...


1

C, 104 102 byte

f(x){x?x%2?printf("   ____\n%3s|__|\n",x<2?"":"__"):puts("_______"):0;for(x/=2;x>0;x--)puts("|__|__|");}

Mungkin saya bisa menggunakan tipuan printf untuk meningkatkan ini ...
Rupanya saya bisa


1

𝔼𝕊𝕄𝕚𝕟, 53 karakter / 67 byte

ï%2?`   ⟮__⟯Ⅰ
 ⦃ï<2?⍞  :⍞Ⅰ⦄|Ⅰ|`:ï?⍘_ď7:⬯⦄
|Ⅰ|Ⅰ|`ď ï/2

Try it here (Firefox only).

Ini sangat mirip dengan jawaban Javascript ES6, meskipun saya menemukannya secara mandiri. Penjelasan yang akan datang ketika saya selesai bermain golf.


1

PHP, 134 karakter

<?$i=$argv[1];if($i>0){echo($i%2===0?"_______\n|__":"   ____\n".($i>1?"___":"   "))."|__|\n";echo str_repeat("|__|__|\n",($i-1)/2);}?>

Catatan:

  • PHP tidak dibuat untuk kode golf
  • Saya yakin telah MENYENANGKAN cuplikan ini
  • Itu melempar kesalahan jika argv tidak terdefinisi
  • Setiap bantuan untuk mempersingkat itu dihargai.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.