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

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

1

Pitão, 55 bytes

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

Experimente online. Suíte de teste.

Isso é realmente rápido e sujo, escrito no meu telefone. Chegará a mais golfe mais tarde.

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

ETHproductions
fonte
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

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

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

Retina, 69 bytes

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

^.
$0____¶ $0
^\D

^1
___
 ?1
|

Recebe entrada em unário.

Experimente online aqui.

randomra
fonte
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!

ETHproductions
fonte