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


¿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:



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 _=""

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


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


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.


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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.