Coma a barra de chocolate


11

Eu tenho uma barra de chocolate e preciso de ajuda para comê-la, então você estará escrevendo um programa apenas para fazer isso.

Explicação

A primeira linha é a entrada. Os exemplos são separados por uma linha vazia.

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

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

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

0


1
   ____
   |__|

Spec

Esperamos que os exemplos especifiquem claramente esse desafio, mas para evitar qualquer possível confusão, aqui está uma especificação:

Você pode ter um único espaço em branco à direita / à esquerda opcional

Uma entrada de 0é uma saída vazia.

Se a entrada for par, as linhas superiores se parecerão com:

_______
|__|__|

Se for estranho, a linha superior é:

   ____
   |__|

Se for ímpar e maior que 1, as linhas principais são:

  ____
__|__|

As seguintes linhas são:

|__|__|

até que o número de instâncias |__|seja igual à entrada


Qual é a saída para entrada 1? A entrada de 0precisa ser suportada?
Maçaneta

@Doorknob sim, eu atualizei o desafio
Downgoat

1. Podemos enviar uma função? 2. Podemos receber informações dos argumentos STDIN / function? 3. Temos que gerar uma ou TODAS iterações?
yyny 6/02/16

@YoYoYonnY sim, por padrão você pode (este link também responde à sua segunda pergunta) . Não sei o que você quer dizer com iterações. Dê uma olhada nos exemplos, isso é tudo que você tem a saída
Downgoat

São permitidas linhas em branco à esquerda?
611 Neil

Respostas:



4

Haskell, 101 bytes

Haskell nunca foi ótimo para o código de golfe ...

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

Depende de como você olha para isso. Java> Python> Haskell> GolfLang. Eu uso python;)
J Atkin

@JAtkin olhar bem na minha resposta PHP , então você ver o que é como pior
timmyRS

3

JavaScript ES6, 80 bytes

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

Utiliza a mesma técnica da minha resposta em japonês e surpreendentemente não demora muito ...


1

C, 104 102 bytes

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

Talvez eu possa usar alguns truques de impressão para melhorar isso ...
Aparentemente eu posso


1

, 53 caracteres / 67 bytes

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

Try it here (Firefox only).

Isso é bastante semelhante à resposta do Javascript ES6, mesmo que eu a tenha encontrado de forma independente. Explicação para vir quando eu terminar o golfe.


1

PHP, 134 caracteres

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

Notas:

  • PHP não foi construído para o código de golfe
  • Eu com certeza me diverti fazendo esse trecho
  • Emite um erro se argv for indefinido
  • Qualquer ajuda a curto é apreciada.


1

Japt, 60 57 bytes

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

Apenas uma resposta básica. Provavelmente pode ser melhorado. Teste online!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.