吃巧克力吧


11

我有一条巧克力棒,需要帮助我才能食用,因此您将编写一个程序来实现该目的。

说明

第一行是输入。示例用空行分隔。

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

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

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

0


1
   ____
   |__|

规格

希望这些示例清楚地说明了这一挑战,但是为了避免任何可能的混淆,这是一个规范:

您可以有一个可选的尾随/前导空格

的输入为0空输出。

如果输入为偶数,则最上面的行如下所示:

_______
|__|__|

如果很奇怪,第一行是:

   ____
   |__|

如果它是奇数且大于1,则最上面的行是:

  ____
__|__|

以下行是:

|__|__|

直到的实例数|__|与输入相同


输入的输出是1什么?是否0需要支持输入?
门把手

@Doorknob是的,我已经更新了挑战
Downgoat

1.我们可以提交功能吗?2.我们可以从STDIN /函数参数中获取输入吗?3.我们是否必须输出一个或所有信号?
yyny

@YoYoYonnY是的,默认情况下您可以(此链接也回答您的第二个问题)。我不确定迭代是什么意思。看一下示例,这就是您所需要输出的一切
Downgoat

是否允许前导空白行?
尼尔

Answers:



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,104102字节

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不是为代码打高尔夫球而构建的
  • 我确定有有趣的片段
  • 如果未定义argv,则会引发错误
  • 任何帮助缩短它的赞赏。


1

Japt,60 57字节

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

只是一个基本答案。可能可以改善。在线测试!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.