Їжте шоколад


11

У мене шоколадна плитка, і мені потрібна допомога її з'їсти, щоб ви писали програму просто для цього.

Пояснення

Перший рядок - це вхід. Приклади розділені порожнім рядком.

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

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

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

0


1
   ____
   |__|

Спец

Сподіваємось, приклади чітко визначають цю проблему, але щоб уникнути можливої ​​плутанини, ось специфікація:

Ви можете мати єдиний необов'язковий пробіл / провідний пробіл

Вхід 0- це порожній вихід.

Якщо вхід рівний, верхні рядки виглядають так:

_______
|__|__|

Якщо це не дивно, верхній ряд:

   ____
   |__|

Якщо вона непарна і більша за 1, верхніми рядками є:

  ____
__|__|

Наступні рядки:

|__|__|

поки кількість екземплярів |__|не збігається з вхідним


Який вихід для введення 1? Чи 0потрібно підтримувати вхід ?
Дверна ручка

@Doorknob так, я оновив виклик
Downgoat

1. Чи можна подати функцію? 2. Чи можемо ми взяти дані з аргументів STDIN / функцій? 3. Чи потрібно виводити одну або ВСІ ітерації?
yyny

@YoYoYonnY так, за замовчуванням ви можете (це посилання відповідає і на ваше друге запитання) . Я не впевнений, що ви маєте на увазі під ітераціями. Погляньте на приклади, це все, що вам потрібно вивести
Пуховик

Чи дозволено провідні порожні рядки?
Ніл

Відповіді:



4

Haskell, 101 байт

Haskell ніколи не був чудовим для гольфу з кодом ...

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

Це залежить від того, як ти на це дивишся. Java> Python> Haskell> GolfLang. Я використовую python;)
J Atkin

@JAtkin Добре подивіться на мою відповідь PHP , тоді ви бачите, що найгірше
timmyRS

3

JavaScript ES6, 80 байт

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

Використовує ту саму техніку, що і моя відповідь Japt, і на диво не набагато довше ...


1

C, 104 102 байти

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

Можливо, я можу використати якусь хитрість printf, щоб покращити це ...
Мабуть, можу


1

𝔼𝕊𝕄𝕚𝕟, 53 символів / 67 байт

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

Try it here (Firefox only).

Це досить схоже на відповідь Javascript ES6, навіть якщо я знайшов його самостійно. Пояснення, коли я закінчу гольф.


1

PHP, 134 чол

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

Примітки:

  • PHP не був побудований для гольфу з кодом
  • Я впевнений, що FUN робив цей фрагмент
  • Він видає помилку, якщо аргумент не визначений
  • Будь-яка допомога, щоб коротко це цінується.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.