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

Downgoat
sumber
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:

1

Pyth, 55 byte

K"|__|"IQ>7<*3%Q2r"3 7_"9?tQjb+XW%Q2J+KtKZd*/tQ2]J+*3dK

Cobalah online. Suite uji.

Ini sangat cepat dan kotor, tertulis di ponsel saya. Akan lebih banyak bermain golf nanti.

PurkkaKoodari
sumber
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 _=""
yyny
sumber
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 ...

Produksi ETH
sumber
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

yyny
sumber
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.

Mama Fun Roll
sumber
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.
timmyRS
sumber
1

Retina, 69 byte

r`(1?)1
$1__|__|¶
^__(?=\D{5}$)

^.
$0____¶ $0
^\D

^1
___
 ?1
|

Mengambil input di unary.

Cobalah online di sini.

randomra
sumber
1

Japt, 60 57 byte

U%2?[S³'_²²RSU¥1?S²:'_²"|__|"]¬:U?'_p7 :P +"
|__|__|"pU/2

Hanya jawaban dasar. Mungkin bisa ditingkatkan. Uji secara online!

Produksi ETH
sumber