Die Saltine Challenge

23

Hier ist ein ASCII- Saltine-Cracker :

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

Hier sind zwei gestapelte Cracker:

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

Schreiben Sie das kürzestmögliche Programm, das eine positive ganze Zahl enthält und einen Stapel dieser vielen ASCII-Saltine-Cracker zeichnet.

Die Eingabe kann über stdin oder die Befehlszeile erfolgen, oder Sie können einfach eine Funktion schreiben. Die Eingabe ist immer gültig. Die Ausgabe muss auf stdout oder die nächstgelegene Alternative erfolgen.

Jeder gestapelte Cracker wird immer 2 Zeichen nach unten und 7 Zeichen rechts vom Cracker darunter verschoben. Es sollten keine nachgestellten Leerzeichen oder überflüssigen Zeilenumbrüche vorhanden sein.

Das kürzeste Programm in Bytes gewinnt.

Beispiele

Wenn der Eingang 1der Ausgang ist

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

Wenn der Eingang 2der Ausgang ist

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

Wenn der Eingang 3der Ausgang ist

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

Und so weiter.

die echte Saltine Herausforderung

Calvins Hobbys
quelle
1
Wie überschreibt der Umriss des darunter liegenden Crackers den Umriss des darüber liegenden?
stolzer Haskeller
1
@ Calvin'sHobbies: der obere Rand der gestapelten Crackern denke ich fragend die er warum ___|___statt _______. Ich vermute, es würde komisch aussehen, wenn es das letztere wäre
Claudiu
2
@Claudiu Oh. Ja, es ist nicht perfekt, aber in die andere Richtung sieht es seltsamer aus.
Calvins Hobbys
6
@ Calvin'sHobbies Tatsächlich denke ich, dass ein einzelner Charakter der interessanteste Teil dieser Herausforderung ist. ^^
Martin Ender
3
Übergeben von 0 sollte segfault.
Naftuli Kay

Antworten:

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

Probieren Sie es online aus.

Ein einziges Salz

Das Code-Snippet

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

Lässt Folgendes auf dem Stapel:

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

Gestapelte Saltine

Angenommen, das Salz von oben ist in Z gespeichert.

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
quelle
11

JavaScript (E6) 249 259 289 304 345

Nicht so sicher über die Saitenkomprimierung. Fand eine gute Kompression für die Saiten. Der einfache 1-Cracker-Fall scheint schwierig zu handhaben zu sein. Es könnte einen besseren Weg geben ...

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)
}

Mehr oder weniger ungolfed

Das ist der Grundcode, bevor ich mit dem Golfen anfing. Es ist nicht genau das gleiche und funktioniert nur für 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)+'|_________________|')
}

Test In FireFox / Firebug - Konsole

F(4)

Ausgabe

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     .     .     |
              |  .   |  .     .     .  |
              |______|     .     .     |
                     |  .     .     .  |
                     |_________________|
edc65
quelle
8

Python, 252 241 Zeichen

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)

Vielen Dank an FryAmTheEggman und Vincent für das Abschneiden von 11 Charakteren.

Ein Übergewicht an Crackern:

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

Dieser Code scheint wirklich ineffizient zu sein, aber andere Antworten werden es zeigen. Es kopiert einfach den Saltine Cracker und fügt ihn an der richtigen Stelle in ein Array ein. Der unterste Cracker weist ein Zeichen weniger auf und druckt dann alles aus.

Ich kann es auf 230 Zeichen reduzieren, wenn ich eine externe Datei verwende (202 Code + 38 Dateigröße + 1 Dateiname).

Claudiu
quelle
11
Bitte zeigen Sie jede Ausgabe an, n=1 upto 2^10damit wir sicher sein können, dass Ihr Programm wirklich das Richtige tut.
Fehler
list(' '*(7*N+12))könnte sein [' ']*(7*N+12).
FryAmTheEggman
1
@flawr: Sir, ist das zu sagen - sagen Sie - spielen Sie, ah, darauf an - unterstellen oder vielleicht nur andeuten, dass ich albern war?
Claudiu
1
@Claudiu Ich kann versichern, dass ich es nicht einmal wagen würde, Sie von einer Handlung anzudeuten, die sogar nur einen unermesslichen Hauch von Sillynes hätte. = P
flawr
1
Und G=[list(' '*(7*N+12))for _ in R(2*N+5)]mitG=map(list,[' '*(7*N+12)]*(2*N+5))
Vincent
7

Perl 189

Ich habe ein paar Ideen zur Komprimierung von Saiten aus dem Choroba gestohlen und Folgendes herausgefunden:

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]'

Zur einfacheren Anzeige in Ihrem Browser:

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]

Zum Kontext, mein bestes davor:

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]

Hinzufügen von Zeilenumbrüchen und Einrückungen, um das Lesen in Ihrem Browser zu erleichtern:

$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]

Sie können "pop" durch "<>" ersetzen, um die Zählung von STDIN anstelle eines Befehlszeilenparameters zu übernehmen und 206 Byte zu erhalten. Wenn Sie zu STDERR wechseln, wird der Wert auf 204 Byte reduziert.

Wenn ich die "Sagen" -Funktion ohne eine Byte-Strafe aktivieren könnte, könnte ich zu 202 gelangen.

$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]

aufgerufen als:

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
quelle
Sie können die Aktivierung sayohne Strafe durchführen, da dies mit der Ausführung in der Befehlszeile mit -Eanstelle von identisch ist -e. perl -E''zählt nicht zu deinen Gesamtcharakteren.
hmatt1
Ihre Ausgabe ist falsch. Überprüfen Sie die _|_.
Choroba
@choroba, danke! Ich habe vergessen, diesen Teil wieder einzufügen, nachdem ich versucht habe, ihn durch y / | / _ / zu ersetzen (aber immer mit längerem Code). Von 168 bis 189.
Tye
4

Perl 201

(Entfernen Sie Zeilenumbrüche mit Ausnahme der ersten, die das # erhalten)

$_=" 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
quelle
"Es sollte keine nachgestellten Leerzeichen geben"
Tye
@Tye: OK, zurück zu 202 :-(
choroba
2

Haskell, 215 Bytes

Dieser baut den Cracker-Stack induktiv auf und zieht Cracker-Teile und Abstände aus ein paar zyklischen Listen heraus:

(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

Der Kontrollfluss ist ziemlich einfach; Der größte Trick besteht darin, so viele Crackerteile wie möglich wiederzuverwenden.

Ungolfed:

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
quelle
1

Python, 299

Ich dachte, ich wäre schlau, aber die Lösung erwies sich als übermäßig kompliziert und länger als jeder einfache Ansatz, aber ich konnte nicht widerstehen, sie zu posten. Das Programm berechnet explizit, welches Zeichen an den verschiedenen Positionen der Ausgabezeichenfolge gezeichnet werden muss, ohne die einzelnen Cracker in einer Schleife zu durchlaufen.

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

Und die letzte Zeile wurde erweitert, um zu sehen, was los ist:

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
quelle
1

C 284

Für die Funktion fund die #defines, ohne unnötige Leerzeichen undmain . Entsprechend dem Kommentar von edc65 habe ich einen 128-Bit-Integer-Typ eingefügt (was ich sowieso tun wollte), aber ich habe mich erneut verrechnet und ich kann nur 29 Cracker ausführen, bevor die Spitzen verschwinden.

Vollständige Funktion und Testprogramm unten. Werde es später kommentieren.

#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);
}

Die Ausgabe enthält nur vier verschiedene Zeichen. Diese werden aus den Binärzahlen 0-3 von decodiert" _.|" . Das Array s[]enthält eine Ganzzahl für jede Spalte der Ausgabe, 2 Bits pro Symbol, die initialisiert wird, um den Cracker ganz rechts zu enthalten.

Der Erste for Schleife kopiert den vorherigen Cracker, verschiebt ihn nach links, um ihn nach oben zu verschieben, löscht die untere rechte Ecke mit& und ODER-Verknüpfung mit dem vorherigen Cracker, 7 Schritte nach links.

Der Zweite for Schleife decodiert die 2-Bit-Darstellung jedes Zeichens in das tatsächliche Zeichen und druckt das Zeichen. Es gibt hier eine Menge Code, um unnötige Leerzeichen in der Ausgabe zu unterdrücken. Ich bin enttäuscht, dass meine Punktzahl gegenüber meiner vorherigen Überarbeitung gestiegen und nicht gesunken ist.

Ausgabe

Das sind 29 Cracker. Ich habe das Leerzeichen durch ein ersetzt, -um ein anderes Aussehen zu erhalten und um zu zeigen, dass in der Ausgabe keine nachgestellten Leerzeichen oder überflüssigen Zeilenumbrüche enthalten sind.

-_________________
|--.-----.-----.--|
|-----.-__________|______
|--.---|--.-----.-----.--|
|-----.|-----.-__________|______
|--.---|--.---|--.-----.-----.--|
|______|-----.|-----.-__________|______
-------|--.---|--.---|--.-----.-----.--|
-------|______|-----.|-----.-__________|______
--------------|--.---|--.---|--.-----.-----.--|
--------------|______|-----.|-----.-__________|______
---------------------|--.---|--.---|--.-----.-----.--|
---------------------|______|-----.|-----.-__________|______
----------------------------|--.---|--.---|--.-----.-----.--|
----------------------------|______|-----.|-----.-__________|______
-----------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------|______|-----.|-----.-__________|______
------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-----.-----|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.-----.-----|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|_________________|
Level River St
quelle
Es gab keinen Maximalwert in der Frage, nur "eine positive ganze Zahl". Also 1 bis 5 ist Ihre Vorstellung von einer positiven ganzen Zahl?
edc65
@ edc65 Für einige weitere Bytes können Sie einen 128-Bit-Integer-Typ anstelle von 32 Bit verwenden. Das wird bis zu 56 Cracker benötigen, was ausreichen sollte (das sind über 20kb Output). Ich gebe zu, ich habe die Anzahl der Cracker falsch berechnet, die ich mit einer 32-Bit-Ganzzahl bekommen konnte, als ich anfing. Ich dachte, es waren mindestens zehn. Aber ja, alle Programme haben eine Obergrenze für die Anzahl der Cracker, die sie produzieren können, und es ist Sache des OP, zu entscheiden, was das ist. Es sollte in der Frage angegeben werden. Wie es ist, werde ich die Entscheidung des OP über die Gültigkeit meiner Antwort akzeptieren (die noch nicht abgeschlossen ist.)
Level River St
0

JavaScript (ES6) HTML5 - 233 236 Bytes

Wahrscheinlich keine gültige Antwort, aber ich konnte einfach nicht widerstehen, es tut mir leid :-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+"_____|"}

Test in Firefox mit F(1), F(2), F(3)etc.

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

Ich und meine Katze
quelle
Ich kenne kein JavaScript, aber diese Geige scheint nichts zu tun (während ich andere Geigen problemlos ausführen konnte.) Ich habe Google Chrome und Internet Explorer.
Level River St
@steveverrill es funktioniert nur in Firefox, wie fast alles, was hier als JavaScript verkauft wird. Chrome und IE unterstützen EcmaScript 6 nicht.
Ich und meine Katze
Es funktioniert (in Firefox), obwohl es nicht ganz das ist, wonach ich suche;)
Calvins Hobbys
Ich kann nicht das scheint zur Arbeit zu kommen : entweder ... Ich erhalte eine „undefiniert“ Antwort , wenn ich eingeben F(1)oder eine andere Zahl, nachdem Sie diesen Code in JS - Konsole in Firefox ... eingegeben haben
WallyWest