Le défi salin

23

Voici un cracker salé ASCII :

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

Voici deux crackers empilés:

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

Écrivez le programme le plus court possible qui prend un entier positif et dessine une pile de ce nombre de crackers salins ASCII.

L'entrée peut provenir de stdin, de la ligne de commande, ou vous pouvez simplement écrire une fonction. L'entrée sera toujours valide. La sortie doit aller à stdout ou à l'alternative la plus proche.

Chaque cracker empilé est toujours décalé de 2 caractères vers le bas et 7 caractères à droite du cracker en dessous. Il ne doit pas y avoir d'espaces de fin ni de nouvelles lignes superflues.

Le programme le plus court en octets gagne.

Exemples

Si l'entrée est 1la sortie est

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

Si l'entrée est 2la sortie est

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

Si l'entrée est 3la sortie est

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

Etc.

le vrai défi salin

Loisirs de Calvin
la source
1
Comment le contour du cracker ci-dessous remplace-t-il le contour de celui au-dessus?
fier haskeller
1
@ Calvin'sHobbies: Je pense qu'il se demande pourquoi la bordure supérieure des crackers empilés est à la ___|___place _______. Je suppose que ce serait bizarre si c'était ce dernier
Claudiu
2
@Claudiu Oh. Ouais, ce n'est pas parfait mais ça a l'air plus étrange dans l'autre sens.
Calvin's Hobbies
6
@ Calvin'sHobbies En fait, je pense que le personnage unique est la partie la plus intéressante de ce défi. ^^
Martin Ender
3
Réussir 0 devrait segfault.
Naftuli Kay

Réponses:

4

CJAM, 140 125 119 116 octets

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

Essayez-le en ligne.

Une seule saline

L'extrait de code

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

laisse ce qui suit sur la pile:

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

Saltines empilées

Supposons que la saline d'en haut est enregistrée dans 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
la source
11

JavaScript (E6) 249 259 289 304 345

Pas si sûr de la compression des cordes. Trouvé une bonne compression pour les cordes. Le boîtier simple 1 cracker semble difficile à gérer. Il y a peut-être une meilleure façon ...

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

Plus ou moins non golfé

C'est le code de base, avant de commencer à jouer au golf. Ce n'est pas exactement la même chose et ne fonctionne que pour 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 dans la console FireFox / FireBug

F(4)

Sortie

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     .     .     |
              |  .   |  .     .     .  |
              |______|     .     .     |
                     |  .     .     .  |
                     |_________________|
edc65
la source
8

Python, 252 241 caractères

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)

Merci à FryAmTheEggman et Vincent d'avoir coupé 11 caractères.

Une prépondérance de crackers:

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

Ce code semble vraiment inefficace, mais d'autres réponses le diront. Il copie et colle simplement le cracker salé dans un tableau au bon endroit, explique que le cracker le plus bas est à 1 caractère, puis imprime le tout.

Je peux le réduire à 230 caractères si j'utilise un fichier externe (code 202 + 38 taille de fichier + 1 nom de fichier).

Claudiu
la source
11
Veuillez montrer chaque sortie pour n=1 upto 2^10que nous puissions être sûrs que votre programme fait vraiment la bonne chose.
flawr
list(' '*(7*N+12))pourrait être [' ']*(7*N+12).
FryAmTheEggman
1
@flawr: Monsieur, est-ce à dire - dites-vous - êtes-vous, ah, en train de faire allusion - insinuer ou peut-être simplement suggérer que j'étais stupide?
Claudiu
1
@Claudiu Je peux vous assurer que je n'oserais même pas penser à vous insinuer d'un acte qui n'aurait même qu'une touche impalable de sillynes. = P
flawr
1
Et G=[list(' '*(7*N+12))for _ in R(2*N+5)]avecG=map(list,[' '*(7*N+12)]*(2*N+5))
Vincent
7

Perl 189

Volant des idées de compression de cordes à Choroba, je l'ai résolu comme suit:

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

Pour une visualisation plus facile dans votre navigateur:

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]

Pour le contexte, mon meilleur avant cela:

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]

Ajout de nouvelles lignes et de retrait pour faciliter la lecture dans votre navigateur:

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

Vous pouvez remplacer "pop" par "<>" pour prendre le compte de STDIN au lieu d'un paramètre de ligne de commande et obtenir 206 octets. Aller à STDERR le ramènerait à 204 octets.

Si je pouvais activer la fonction «dire» sans pénalité d'octet, je pourrais atteindre 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]

invoqué comme:

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
la source
Vous êtes autorisé à activer saysans pénalité car cela revient à exécuter sur la ligne de commande avec -Eau lieu de -e. perl -E''ne compte pas pour le nombre total de vos personnages.
hmatt1
Votre sortie est incorrecte. Vérifiez le _|_.
choroba
@choroba, merci! J'ai oublié de remettre ce substrat après avoir essayé de le remplacer par y / | / _ / (mais toujours avec un code plus long). Du 168 au 189.
Tye
4

Perl 201

(supprimez les sauts de ligne sauf le premier pour obtenir le #)

$_=" 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
la source
"Il ne devrait pas y avoir d'espaces de fuite"
Tye
@Tye: OK, retour à 202 :-(
choroba
2

Haskell, 215 octets

Celui-ci construit la pile de craquelins par induction, en tirant les pièces du craqueur et en les espaçant de quelques listes cycliques:

(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

Le flux de contrôle est assez simple; la plus grande partie de la ruse consiste à réutiliser autant de pièces de cracker que possible.

Non 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
la source
1

Python, 299

Je pensais que j'étais intelligent, mais la solution s'est avérée trop compliquée et plus longue que toute approche directe, mais je n'ai pas pu résister à la publier. Le programme calcule explicitement quel caractère doit être tracé aux différentes positions de la chaîne de sortie, sans boucler sur les crackers individuels.

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

Et la dernière ligne s'est développée pour voir ce qui se passe:

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
la source
1

C, 284

Pour la fonction fet le #defines, à l'exclusion des espaces inutiles et main. Conformément au commentaire d'edc65, j'ai inclus un type entier 128 bits (que j'allais faire de toute façon) mais j'ai mal calculé nouveau et je ne peux faire que 29 crackers avant que les sommets ne commencent à disparaître.

Fonction complète et programme de test ci-dessous. Le commentera plus tard.

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

Il n'y a que quatre caractères différents dans la sortie. Ceux-ci sont décodés à partir des nombres binaires 0-3 par" _.|" . Le tableaus[] contient un entier pour chaque colonne de la sortie, 2 bits par symbole, qui est intitulé pour contenir le pirate le plus à droite.

La première for boucle copie le cracker précédent, le déplace à gauche pour le déplacer vers le haut, supprime le coin inférieur droit à l'aide de& et l'OR avec le cracker précédent, 7 étapes vers la gauche.

La deuxième forboucle décode la représentation sur 2 bits de chaque caractère en caractère réel et imprime le caractère. Il y a beaucoup de code ici juste pour supprimer les espaces inutiles dans la sortie. Je suis déçu que mon score ait augmenté au lieu de baisser par rapport à ma précédente révision.

Sortie

C'est 29 crackers. J'ai remplacé l'espace par un -pour un look différent, et pour montrer qu'il n'y a pas d'espaces de fin ou de nouvelles lignes superflues dans la sortie.

-_________________
|--.-----.-----.--|
|-----.-__________|______
|--.---|--.-----.-----.--|
|-----.|-----.-__________|______
|--.---|--.---|--.-----.-----.--|
|______|-----.|-----.-__________|______
-------|--.---|--.---|--.-----.-----.--|
-------|______|-----.|-----.-__________|______
--------------|--.---|--.---|--.-----.-----.--|
--------------|______|-----.|-----.-__________|______
---------------------|--.---|--.---|--.-----.-----.--|
---------------------|______|-----.|-----.-__________|______
----------------------------|--.---|--.---|--.-----.-----.--|
----------------------------|______|-----.|-----.-__________|______
-----------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------|______|-----.|-----.-__________|______
------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-----.-----|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.-----.-----|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|_________________|
Level River St
la source
Il n'y avait pas de valeur maximale dans la question, juste "un entier positif". Donc, 1 à 5 est votre idée d'un entier positif?
edc65
@ edc65 Pour quelques octets supplémentaires, vous pouvez avoir un type entier 128 bits au lieu de 32 bits. Cela prendra jusqu'à 56 crackers, ce qui devrait être suffisant (c'est plus de 20 Ko de sortie). J'avoue avoir mal calculé le nombre de crackers que je pouvais avoir avec un entier 32 bits quand j'ai commencé, je pensais que c'était au moins dix. Mais oui, tous les programmes auront une sorte de limite supérieure sur le nombre de crackers qu'ils peuvent produire et c'est au PO de décider ce que c'est. Il doit être précisé dans la question. En l'état, j'accepterai la décision du PO sur la validité de ma réponse (qui n'est pas terminée.)
Level River St
0

JavaScript (ES6) HTML5 - 233 236 octets

Probablement pas une réponse valide, mais je n'ai pas pu résister à la publication, désolé :-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 dans Firefox avec F(1), F(2), F(3), etc.

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

moi et mon chat
la source
Je ne connais pas JavaScript, mais ce Fiddle ne semble rien faire (alors que j'ai pu exécuter d'autres Fiddles sans problème.) J'ai Google Chrome et Internet Explorer.
Level River St
@steveverrill cela ne fonctionne que dans Firefox, comme presque tout ce qui est vendu en JavaScript ici. Chrome et IE ne prennent pas en charge EcmaScript 6.
moi et mon chat
Cela fonctionne (dans Firefox), bien que ce ne soit pas tout à fait ce que je recherche;)
Calvin's Hobbies
Je n'arrive pas à faire fonctionner cela non plus ... Je reçois une réponse "non définie" chaque fois que j'entre F(1)ou tout autre numéro, après avoir entré ce code dans la console JS dans Firefox ...
WallyWest