Ешьте шоколадку


11

У меня есть шоколадная плитка, и мне нужна помощь, чтобы съесть ее, так что вы будете писать программу для этого.

объяснение

Первая строка - это ввод. Примеры разделены пустой строкой.

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

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

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

0


1
   ____
   |__|

спекуляция

Надеемся, что примеры четко указывают на эту проблему, но чтобы избежать возможной путаницы, вот спецификация:

Вы можете иметь один необязательный трейлинг / лидирующий пробел

Вход 0является пустым выходом.

Если ввод четный, верхние строки выглядят так:

_______
|__|__|

Если это странно, верхний ряд:

   ____
   |__|

Если он нечетный и больше 1, верхние строки:

  ____
__|__|

Следующие строки:

|__|__|

пока количество экземпляров не |__|будет таким же, как на входе


Какой выход для ввода 1? Нужно ли 0поддерживать ввод ?
Ручка двери

@ Doorknob да, я обновил вызов
Downgoat

1. Можем ли мы представить функцию? 2. Можем ли мы получить входные данные из аргументов STDIN / функции? 3. Нужно ли выводить ОДИН или ВСЕ иттерации?
yyny

@YoYoYonnY да, по умолчанию вы можете (эта ссылка также отвечает на ваш второй вопрос) . Я не уверен, что вы подразумеваете под итерациями. Взгляните на примеры, это все, что вам нужно вывести
Downgoat

Разрешены ли ведущие пустые строки?
Нил

Ответы:



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 Аткин

@JAtkin Хорошо, посмотрите на мой ответ по PHP , затем вы увидите, что
выглядит

3

JavaScript ES6, 80 байт

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

Использует ту же технику, что и мой ответ Япта, и на удивление не намного дольше ...


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, 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 не был построен для игры в гольф
  • Я уверен, что было весело делать этот фрагмент
  • Выдает ошибку, если argv не определен
  • Любая помощь в короткой это ценится.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.