Mangez la barre de chocolat

11

J'ai une barre de chocolat et j'ai besoin d'aide pour la manger, vous allez donc écrire un programme juste pour ça.

Explication

La première ligne est l'entrée. Les exemples sont séparés par une ligne vide.

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

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

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

0


1
   ____
   |__|

Spec

Espérons que les exemples précisent clairement ce défi, mais pour éviter toute confusion possible, voici une spécification:

Vous pouvez avoir un seul espace de fin / de début facultatif

Une entrée de 0est une sortie vide.

Si l'entrée est paire, les lignes du haut ressemblent à:

_______
|__|__|

Si c'est étrange, la rangée du haut est:

   ____
   |__|

S'il est impair et supérieur à 1, les rangées supérieures sont:

  ____
__|__|

Les lignes suivantes sont:

|__|__|

jusqu'à ce que le nombre d'instances de |__|soit le même que l'entrée

Downgoat
la source
Quelle est la sortie pour l'entrée 1? L'entrée du 0besoin doit-elle être prise en charge?
Poignée de porte
@ Doorknob yes, j'ai mis à jour le défi
Downgoat
1. Pouvons-nous soumettre une fonction? 2. Pouvons-nous prendre l'entrée des arguments STDIN / fonction? 3. Doit-on produire UNE ou TOUTES les itérations?
yyny
@YoYoYonnY oui, par défaut vous pouvez (ce lien répond aussi à votre deuxième question) . Je ne sais pas ce que vous entendez par itérations. Jetez un œil aux exemples, c'est tout ce que vous avez à produire
Downgoat
Les premières lignes vierges sont-elles autorisées?
Neil

Réponses:

1

Pyth, 55 octets

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

Essayez-le en ligne. Suite de tests.

C'est vraiment rapide et sale, écrit sur mon téléphone. Arrivera à plus de golf plus tard.

PurkkaKoodari
la source
4

Haskell, 101 octets

Haskell n'a jamais été parfait pour le golf à code ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""
yyny
la source
Cela dépend de la façon dont vous le regardez. Java> Python> Haskell> GolfLang. J'utilise python;)
J Atkin
@JAtkin Eh bien, regardez ma réponse PHP , alors vous voyez ce qui est pire
timmyRS
3

JavaScript ES6, 80 octets

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

Utilise la même technique que ma réponse Japt, et n'est étonnamment pas beaucoup plus longue ...

ETHproductions
la source
1

C, 104 102 octets

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

Je peux peut-être utiliser une astuce printf pour améliorer cela ...
Apparemment, je peux

yyny
la source
1

𝔼𝕊𝕄𝕚𝕟, 53 caractères / 67 octets

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

Try it here (Firefox only).

C'est assez similaire à la réponse Javascript ES6, même si je l'ai trouvée indépendamment. Explication à venir quand j'aurai fini de jouer au golf.

Mama Fun Roll
la source
1

PHP, 134 caractères

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

Remarques:

  • PHP n'a pas été construit pour jouer au code
  • Je me suis bien amusé à faire cet extrait
  • Il génère une erreur si argv n'est pas défini
  • Toute aide pour la raccourcir est appréciée.
timmyRS
la source
1

Japt, 60 57 octets

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

Juste une réponse basique. Peut probablement être amélioré. Testez-le en ligne!

ETHproductions
la source