El desafío de la salina

23

Aquí hay una galleta salada ASCII :

 _________________
|  .     .     .  |
|     .     .     |
|  .     .     .  |
|     .     .     |
|  .     .     .  |
|_________________|

Aquí hay dos galletas apiladas:

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     .     .     |
|  .   |  .     .     .  |
|______|     .     .     |
       |  .     .     .  |
       |_________________|

Escriba el programa más corto posible que tome un número entero positivo y dibuje una pila de tantas galletas saladas ASCII.

La entrada puede provenir de stdin, línea de comando, o simplemente puede escribir una función. La entrada siempre será válida. La salida debe ir a stdout o la alternativa más cercana.

Cada galleta apilada siempre se desplaza 2 caracteres hacia abajo y 7 caracteres a la derecha de la galleta debajo de ella. No debe haber espacios finales ni líneas nuevas extrañas.

El programa más corto en bytes gana.

Ejemplos

Si la entrada es 1la salida es

 _________________
|  .     .     .  |
|     .     .     |
|  .     .     .  |
|     .     .     |
|  .     .     .  |
|_________________|

Si la entrada es 2la salida es

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     .     .     |
|  .   |  .     .     .  |
|______|     .     .     |
       |  .     .     .  |
       |_________________|

Si la entrada es 3la salida es

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     .     .     |
       |  .   |  .     .     .  |
       |______|     .     .     |
              |  .     .     .  |
              |_________________|

Y así.

el verdadero desafío de la salina

Pasatiempos de Calvin
fuente
1
¿Cómo anula el contorno de la galleta de abajo el contorno de la galleta de arriba?
orgulloso Haskeller
1
@ Calvin'sHobbies: Creo que se pregunta por qué el borde superior de las galletas apiladas es en ___|___lugar de _______. Supongo que se vería raro si fuera lo último
Claudiu
2
@ Claudiu Oh. Sí, no es perfecto, pero se ve más raro al revés.
Aficiones de Calvin
66
@ Calvin'sHobbies De hecho, creo que ese personaje único es la parte más interesante de este desafío. ^^
Martin Ender
3
Pasar 0 debería segfault.
Naftuli Kay

Respuestas:

4

CJAM, 140 125 119 116 bytes

li__7*C+S*a\2*5+*\{5m>S'|6*+_" ."5*5/{'__@\++}:U%3*0@t{S5*U_}%\a+zsB'|tJ/{\(J>@\+a+}/{7m<}%}*{Cm<0{;)_' =}g+}%N*B'_t

Pruébalo en línea.

Una sola salina

El fragmento de código

S'|6*+_      " Push ' ||||||' twice.                                                      ";
" ."5*5/     " Push [' . . ' '. . .'].                                                    ";
{'__@\++}:U% " Prepend and append an underscore to each string in the previous array.     ";
3*           " Repeat the resulting array thrice.                                         ";
0@t          " Replace its first element with ' ||||||'.                                  ";
{S5*U_}%     " Insert '_     _' after each element of the array.                          ";
\a+          " Append ' ||||||' to the array.                                             ";
z            " Zip; transpose rows with columns.                                          ";
sB'\t        " Flatten the array of strings and replace the 12th element with a '|'.      ";
19/          " Split into chunks of length 19.                                            ";

deja lo siguiente en la pila:

[
  " __________|______ "
  "|  .     .     .  |"
  "|     .     .     |"
  "|  .     .     .  |"
  "|     .     .     |"
  "|  .     .     .  |"
  "|_________________|"
]

Galletas saladas apiladas

Suponga que la salina de arriba se guarda en Z.

li               " I := int(input())                                                      ";
__7*C+S*a\2*5+*  " R:= [(I * 7 + 12) * ' '] * (I * 2 + 5)                                 ";
\{               " Repeat I times:                                                        ";
  5m>            "   R := R[-5:] + R[:-5]                                                 ";
  Z              "   Push a single saltine, as an array of lines.                         ";
  {              "   For each line L of the saltine:                                      ";
    \(J>@\+a+    "     R := R[1:] + [R[0][19:] +     L]                                   ";
  }/             "                                                                        ";
  {7m<}%         "   R := [ L[7:] + L[:7] : L in R ]                                      ";
}*               "                                                                        ";
{                " R := [                                                                 ";
  Cm<            "   (L[12:] + L[:12])                                                    ";
  0{;)_' =}g+    "                    .rstrip()                                           ";
}%               " : L in R ]                                                             ";
N*               " R := '\n'.join(R)                                                      ";
B'_t             " R[11] := '|'                                                           ";
Dennis
fuente
11

JavaScript (E6) 249 259 289 304 345

No estoy tan seguro de la compresión de la cuerda. Encontró una buena compresión para las cuerdas. El simple caso de 1 cracker parece difícil de manejar. Puede haber una mejor manera ...

F=n=>{
  for(B=",|4.,|1.2,|1.4.4.1|,|5,|4.4.4|, 9|5, 87 ,|87|".replace(/\d/g,c=>' _'[c>4|0][R='repeat'](-~c)).split(','),
  O=(c,b=0,a=0)=>console.log(' '[R](y)+B[a]+B[b][R](x)+B[c]),
  r=x=y=0,
  O(7);
  O(3,2),
  !(z=++r>2)|x;)
    x+=(v=r<n)-z,O(v+5,1,z*4),y+=z*7;
  O(8)
}

Ungolfed más o menos

Ese es el código básico, antes de comenzar a jugar al golf. No es exactamente lo mismo y funciona solo para n> 2

F=n=>{
  O=t=>console.log(t)

  r=0
  x=0
  y=0

  O(' _________________')
  O(' '.repeat(y)+'|  .   '.repeat(x)+'|  .     .     .  |')

  while (++r<n)
  {
    x++;
    if (r>2)
    {
       x--;
       O(' '.repeat(y)+'|______'+'|     .'.repeat(x)+' __________|______')
       y+=7;
       O(' '.repeat(y)+'|  .   '.repeat(x)+'|     .     .     |')
    }
    else
    {
       O(' '.repeat(y)+'|     .'.repeat(x)+' __________|______')
       O(' '.repeat(y)+'|  .   '.repeat(x)+'|  .     .     .  |')
    }

  }  
  while(x--)
  {
     O(' '.repeat(y)+'|______'+'|     .'.repeat(x)+'|  .     .     .  |')
     y+=7;
     O(' '.repeat(y)+'|  .   '.repeat(x)+'|     .     .     |')
  }

  O(' '.repeat(y)+'|_________________|')
}

Prueba en la consola FireFox / FireBug

F(4)

Salida

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     .     .     |
              |  .   |  .     .     .  |
              |______|     .     .     |
                     |  .     .     .  |
                     |_________________|
edc65
fuente
8

Python, 252 241 caracteres

s="eJxTiIeDGgiloBBRo6CgpwACcLIGJKaAKlxDmbp4dFADAL+oIFI=".decode('base64').decode('zip').split('X')
N=input()
R=range
G=map(list,[' '*(7*N+12)]*(2*N+5))
for n in R(N):
 for y in R(7):G[2*n+y][7*n:]=s[y]
G[0][11]='_'
for g in G:print''.join(g)

Gracias a FryAmTheEggman y Vincent por recortar 11 personajes.

Una preponderancia de galletas:

$ echo 17 | python saltines.py
 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     . __________|______
              |  .   |  .   |  .     .     .  |
              |______|     .|     . __________|______
                     |  .   |  .   |  .     .     .  |
                     |______|     .|     . __________|______
                            |  .   |  .   |  .     .     .  |
                            |______|     .|     . __________|______
                                   |  .   |  .   |  .     .     .  |
                                   |______|     .|     . __________|______
                                          |  .   |  .   |  .     .     .  |
                                          |______|     .|     . __________|______
                                                 |  .   |  .   |  .     .     .  |
                                                 |______|     .|     . __________|______
                                                        |  .   |  .   |  .     .     .  |
                                                        |______|     .|     . __________|______
                                                               |  .   |  .   |  .     .     .  |
                                                               |______|     .|     . __________|______
                                                                      |  .   |  .   |  .     .     .  |
                                                                      |______|     .|     . __________|______
                                                                             |  .   |  .   |  .     .     .  |
                                                                             |______|     .|     . __________|______
                                                                                    |  .   |  .   |  .     .     .  |
                                                                                    |______|     .|     . __________|______
                                                                                           |  .   |  .   |  .     .     .  |
                                                                                           |______|     .|     . __________|______
                                                                                                  |  .   |  .   |  .     .     .  |
                                                                                                  |______|     .|     .     .     |
                                                                                                         |  .   |  .     .     .  |
                                                                                                         |______|     .     .     |
                                                                                                                |  .     .     .  |
                                                                                                                |_________________|

Este código parece realmente ineficiente, pero otras respuestas lo dirán. Simplemente copia y pega la galleta de salina en una matriz en el lugar correcto, explica que la galleta más inferior tenga 1 carácter, luego la imprime todo.

Puedo reducirlo a 230 caracteres si uso un archivo externo (código 202 + tamaño de archivo 38 + 1 nombre de archivo).

Claudiu
fuente
11
Muestre cada salida para n=1 upto 2^10que podamos estar seguros de que su programa realmente hace lo correcto.
flawr
list(' '*(7*N+12))podría ser [' ']*(7*N+12).
FryAmTheEggman
1
@flawr: Señor, ¿es eso decir? ¿Estás diciendo? ¿Estás, ah, aludiendo a ... insinuando o quizás simplemente sugiriendo que estaba siendo tonto?
Claudiu
1
@Claudiu Puedo asegurar que ni siquiera me atrevería a pensar en insinuarlo en un acto que solo tendría un toque imparable de tontos. = P
error
1
Y G=[list(' '*(7*N+12))for _ in R(2*N+5)]conG=map(list,[' '*(7*N+12)]*(2*N+5))
Vincent
7

Perl 189

Robando algunas ideas de compresión de cuerdas de choroba, lo resumí en:

echo 4 | perl -E 's/\d/($&<8?$":_)x$&/ge for@l=("|2.5.5.2|"," 98","|5.5.5|","|98|",7)[102020344=~/./g];map{say for@l[0,1];$l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;substr$l[0],-7,1,"|"}2..<>;say for@l[0..6]'

Para una visualización más fácil en su navegador:

s/\d/($&<8?$":_)x$&/ge for@l=
("|2.5.5.2|"," 98","|5.5.5|","|98|",7)[102020344=~/./g];map{
    say for@l[0,1];
    $l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;
    substr$l[0],-7,1,"|"
}2..<>;say for@l[0..6]

Para el contexto, mi mejor antes de eso:

Perl 207

$u='_'x11;s/:/ .  /g,s/.(.)/$&$1/g,$_.=$/for@l=("|:: . |"," $u","|  :: |","|$u|",$"x5)[102020344=~/./g];map{print@l[0,1];$l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;substr$l[0],-8,1,'|'}2..pop;print@l[0..6]

Agregar nuevas líneas y sangría para facilitar la lectura en su navegador:

$u="_"x11;
s/:/ .  /g,s/.(.)/$&$1/g,$_.=$/for@l=
("|:: . |"," $u","|  :: |","|$u|",$"x5)[102020344=~/./g];
map{
    print@l[0,1];
    $l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;
    substr$l[0],-8,1,"|"
}2..pop;
print@l[0..6]

Puede reemplazar "pop" con "<>" para tomar el recuento de STDIN en lugar de como un parámetro de línea de comandos y llegar a 206 bytes. Ir a STDERR lo dejaría en 204 bytes.

Si pudiera habilitar la función 'decir' sin una penalización de byte, entonces podría llegar a 202.

$u="_"x11;s/:/ .  /g,s/.(.)/$&$1/g for@l=("|:: . |"," $u","|  :: |","|$u|",$"x5)[102020344=~/./g];map{say for@l[0,1];$l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;substr$l[0],-7,1,"|"}2..<>;say for@l[0..6]

invocado como:

echo 4 | perl -E '$u="_"x11;s/:/ .  /g,s/.(.)/$&$1/g for@l=("|:: . |"," $u","|  :: |","|$u|",$"x5)[102020344=~/./g];map{say for@l[0,1];$l[$_]=substr($l[$_+2],0,7).$l[$_]for 0..6;substr$l[0],-7,1,"|"}2..<>;say for@l[0..6]'
Tye
fuente
Se le permite habilitar saysin penalización porque es lo mismo que ejecutar en la línea de comando con en -Elugar de -e. perl -E''no cuenta para tus personajes totales.
hmatt1
Su salida es incorrecta. Comprueba el _|_.
choroba
@ choroba, gracias! Olvidé volver a colocar ese substr después de intentar reemplazarlo con y / | / _ / (pero siempre terminando con un código más largo). De 168 a 189.
Tye
4

Perl 201

(eliminar nuevas líneas excepto la primera para obtener el #)

$_=" 46|6
15.5.5|15.5.5|198|";
s/1/|  .5.5.  ||/g;
s/\d/(5^$&?_:$")x$&/ge;
@o=@l=/.{18}.?/g;
map{
$s=$_*7;
substr$o[$_-5],$s,12,$l[$_]for 0..4;
push@o,($"x$s).$l[$_]for 5,6
}1..-1+pop;
$o[$,=$/]=~y/|/_/;
print@o

say+ <>= 198.

choroba
fuente
"No debería haber espacios finales"
Tye
@Tye: OK, volviendo a 202 :-(
choroba
2

Haskell, 215 bytes

Este acumula la pila de galletas de forma inductiva, sacando partes de galletas y separándolas de un par de listas cíclicas:

(b:u:i)=" _|"
(%)=replicate
z=5%b++'.':z
m!n=i++map(z!!)[m..n]
s=7%b:s
d=3!19++i
e=0!16++i
y=i++6%u
g 1=[e,d,e,d,i++17%u++i]
g k=zipWith(++)(0!5:3!8:0!5:3!8:y:s)$(b:10%u++y):d:g(k-1)
f k=mapM putStrLn$(b:17%u):d:g k

El flujo de control es bastante sencillo; La mayor parte del truco consiste en reutilizar la mayor cantidad posible de piezas de craqueo.

Sin golf:

top     = " _________________"
top'    = " __________|______"
dots3   = "|  .     .     .  |"
dots2   = "|     .     .     |"
bot     = "|_________________|"

halfR   = "|     ."
halfL   = "|  .   "
halfBot = "|______"

spacer  = "       "
spaces = repeat spacer

saltine = above ++ [dots2, dots3, dots2, dots3, bot]
above   = [top, dots3]
left    = [halfR, halfL, halfR, halfL, halfBot] ++ spaces

another (oldTop:oldCracker) = above ++ zipWith (++) left (top' : oldCracker)

crackers 1 = saltine
crackers k = another $ crackers (k - 1)

test = putStr . unlines . crackers
Matt Noonan
fuente
1

Python, 299

Pensé que estaba siendo inteligente, pero la solución resultó ser demasiado complicada y más larga que cualquier enfoque directo, sin embargo, no pude resistirme a publicarla. El programa calcula explícitamente qué carácter debe trazarse en las diferentes posiciones de la cadena de salida, sin recorrer los crackers individuales.

N=input()
m,n,c,r=12+7*N,5+2*N,3.5,range
print''.join(i>m-2and'\n'or(i%7<(i/c<j<7+i/c)*(i<N*7)or(i+4)%7<(i/c<j+4<2+4*(i>m-3)+i/c)*(i>16))and'|'or j%2<(j*c<i<17+j*c)*(j<n-5)+(j*c<i+22<8+10*(j>n-3)+j*c)*(j>5)and'_'or(i-j*3-min(i/7,~-j/2,N-1)+1)%6<(-3<-~i/7-j/2<3)and'.'or' 'for j in r(n)for i in r(m))

Y la última línea se expandió para ver qué está pasando:

print ''.join(
              '\n' if i>m-2 else
              '|' if i%7<(i/c<j<7+i/c)*(i<N*7) or (i+4)%7<(i/c<j+4<2+4*(i>m-3)+i/c)*(i>16) else
              '_' if j%2<(j*c<i<17+j*c)*(j<n-5)+(j*c<i+22<8+10*(j>n-3)+j*c)*(j>5) else
              '.' if (i-j*3-min(i/7,~-j/2,N-1)+1)%6<(-3<-~i/7-j/2<3) else
              ' '
              for j in r(n)
              for i in r(m)
             )
Emil
fuente
1

C, 284

Para la función fy la #defines, excluyendo espacios en blanco y innecesarios main. De acuerdo con el comentario de edc65, he incluido un tipo entero de 128 bits (que iba a hacer de todos modos) pero calculé mal nuevamente y solo puedo hacer 29 crackers antes de que las partes superiores comiencen a faltar.

Función completa y programa de prueba a continuación. Lo comentaré más tarde.

#define C b,b,c,b,b
#define S s[i/v*7-i%v
f(n){
  __int128 a=4095,b=a+2,c=6281,d=4641,w=998,v=19,s[998]={a,C,d,C,d,C,a},i=v;
  for(;i<n*v;i++)S+18]|=S+11]*16&-1<<(12+i/v*2-i%v/18)*(i%v>7); 
  for(i=(5+n*2)*w;i--;i%w||puts(""))i%w>i/w/2*7-21+i/w%2*6&&s[i%w]&&putchar(" _.|"[(s[i%w]>>i/w*2)&3]);
}


main(){
  int m;
  scanf("%d",&m);f(m);
}

Solo hay cuatro caracteres diferentes en la salida. Estos se decodifican a partir de números binarios 0-3 por " _.|". La matriz s[]contiene un número entero para cada columna de la salida, 2 bits por símbolo, que se inicializa para contener el cracker más a la derecha.

El primer forbucle copia el craqueador anterior, lo desplaza a la izquierda para moverlo hacia arriba, elimina la esquina inferior derecha usando &y lo OR con el craqueador anterior, 7 pasos a la izquierda.

El segundo forbucle decodifica la representación de 2 bits de cada carácter en el carácter real e imprime el carácter. Hay mucho código aquí solo para suprimir espacios en blanco innecesarios en la salida. Estoy decepcionado de que mi puntaje haya subido en lugar de bajar de mi revisión anterior.

Salida

Eso es 29 galletas. Reemplacé el espacio con un -para una apariencia diferente, y para mostrar que no hay espacios finales o nuevas líneas extrañas en la salida.

-_________________
|--.-----.-----.--|
|-----.-__________|______
|--.---|--.-----.-----.--|
|-----.|-----.-__________|______
|--.---|--.---|--.-----.-----.--|
|______|-----.|-----.-__________|______
-------|--.---|--.---|--.-----.-----.--|
-------|______|-----.|-----.-__________|______
--------------|--.---|--.---|--.-----.-----.--|
--------------|______|-----.|-----.-__________|______
---------------------|--.---|--.---|--.-----.-----.--|
---------------------|______|-----.|-----.-__________|______
----------------------------|--.---|--.---|--.-----.-----.--|
----------------------------|______|-----.|-----.-__________|______
-----------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------|______|-----.|-----.-__________|______
------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-----.-----|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.-----.-----|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|_________________|
Level River St
fuente
No había un valor máximo en la pregunta, solo "un número entero positivo". Entonces, ¿1 a 5 es su idea de un número entero positivo?
edc65
@ edc65 Para algunos bytes más, puede tener un tipo entero de 128 bits en lugar de 32 bits. Eso lo llevará hasta 56 crackers, lo que debería ser suficiente (más de 20kb de salida). Admito que calculé mal la cantidad de galletas que podía obtener con un número entero de 32 bits cuando comencé, pensé que era al menos diez. Pero sí, todos los programas tendrán algún tipo de límite superior en la cantidad de galletas que pueden producir y depende del OP decidir qué es eso. Se debe especificar en la pregunta. Tal como está, aceptaré la decisión del OP sobre la validez de mi respuesta (que no está terminada).
Level River St
0

JavaScript (ES6) HTML5 - 233 236 bytes

Probablemente no sea una respuesta válida, pero no pude resistir publicar, lo siento :-P

F=n=>{d="______";b="\n|  .     .     .  |";a=b+"\n|     .     .     |";for(i=0;i<n;)document.body.innerHTML+="<pre style='background:#fff;position:fixed;top:"+i*28+"px;left:"+i*56+"px'> ____"+d+'|_'[+!i++]+d+a+a+b+"\n|"+d+d+"_____|"}

Prueba en Firefox con F(1), F(2), F(3), etc.

Ejemplo: http://jsfiddle.net/Lvmg9fe8/7/

mi gato y yo
fuente
No conozco JavaScript, pero este Fiddle no parece hacer nada (mientras que he podido ejecutar otros Fiddles sin ningún problema). Tengo Google Chrome e Internet Explorer.
Level River St
@steveverrill solo funciona en Firefox, como casi todo lo que se vende como JavaScript aquí. Chrome e IE no son compatibles con EcmaScript 6.
mi gato y yo el
Funciona (en Firefox), aunque no es exactamente lo que estoy buscando;)
Calvin's Hobbies
Parece que tampoco puedo hacer que esto funcione ... Recibo una respuesta "indefinida" cada vez que ingreso F(1)o cualquier otro número, después de haber ingresado este código en la consola JS en Firefox ...
WallyWest