Comer la barra de chocolate

11

Tengo una barra de chocolate y necesito ayuda para comerla, así que escribirás un programa solo para hacerlo.

Explicación

La primera línea es la entrada. Los ejemplos están separados por una línea vacía.

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

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

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

0


1
   ____
   |__|

Especificaciones

Esperemos que los ejemplos especifiquen claramente este desafío, pero para evitar cualquier posible confusión, aquí hay una especificación:

Puede tener un solo espacio en blanco final / final opcional

Una entrada de 0es una salida vacía.

Si la entrada es par, las filas superiores se ven así:

_______
|__|__|

Si es extraño, la fila superior es:

   ____
   |__|

Si es impar y mayor que 1, las filas superiores son:

  ____
__|__|

Las siguientes filas son:

|__|__|

hasta que el número de instancias de |__|sea ​​igual a la entrada

Downgoat
fuente
¿Cuál es la salida para la entrada 1? ¿La entrada de 0necesita ser apoyada?
Pomo de la puerta
@Doorknob sí, he actualizado el desafío
Downgoat
1. ¿Podemos enviar una función? 2. ¿Podemos tomar la entrada de STDIN / argumentos de función? 3. ¿Tenemos que generar UNA o TODAS las iteraciones?
yyny
@YoYoYonnY sí, por defecto puedes (este enlace también responde a tu segunda pregunta) . No estoy seguro de lo que quieres decir con iteraciones. Eche un vistazo a los ejemplos, eso es todo lo que tiene que mostrar
Downgoat
¿Están permitidas las líneas en blanco iniciales?
Neil

Respuestas:

1

Pyth, 55 bytes

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

Pruébalo en línea. Banco de pruebas.

Esto es realmente rápido y sucio, escrito en mi teléfono. Llegará a más golf más tarde.

PurkkaKoodari
fuente
4

Haskell, 101 bytes

Haskell nunca ha sido excelente para el golf de código ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""
yyny
fuente
Depende de como lo veas. Java> Python> Haskell> GolfLang. Yo uso python;)
J Atkin
@JAtkin Bueno, mira mi respuesta PHP , entonces ves lo que es peor
timmyRS
3

JavaScript ES6, 80 bytes

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

Utiliza la misma técnica que mi respuesta de Japt, y sorprendentemente no es mucho más ...

ETHproductions
fuente
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("|__|__|");}

Tal vez pueda usar algunos trucos de printf para mejorar esto ...
Aparentemente puedo

yyny
fuente
1

𝔼𝕊𝕄𝕚𝕟, 53 caracteres / 67 bytes

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

Try it here (Firefox only).

Esto es bastante similar a la respuesta Javascript ES6, aunque lo encontré de forma independiente. Explicación por venir cuando termine de jugar al golf.

Mama Fun Roll
fuente
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 no fue construido para golf de código
  • Me divertí mucho haciendo este fragmento
  • Lanza un error si argv no está definido
  • Cualquier ayuda para acortar es apreciada.
timmyRS
fuente
1

Japt, 60 57 bytes

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

Solo una respuesta básica. Probablemente se puede mejorar. ¡Pruébalo en línea!

ETHproductions
fuente