Wyzwanie Saltine

23

Oto krakers solny ASCII :

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

Oto dwa ułożone krakersy:

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

Napisz najkrótszy możliwy program, który przyjmuje dodatnią liczbę całkowitą i rysuje stos tak wielu krakersów solnych ASCII.

Dane wejściowe mogą pochodzić ze stdin, wiersza poleceń lub możesz po prostu napisać funkcję. Dane wejściowe zawsze będą prawidłowe. Dane wyjściowe muszą przejść do standardowej lub najbliższej alternatywy.

Każdy ułożony cracker jest zawsze przesunięty o 2 znaki w dół i 7 znaków na prawo od crackera poniżej. Nie powinno być żadnych spacji ani obcych znaków nowej linii.

Najkrótszy program w bajtach wygrywa.

Przykłady

Jeśli wejście jest 1wyjściem jest

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

Jeśli wejście jest 2wyjściem jest

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

Jeśli wejście jest 3wyjściem jest

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

I tak dalej.

prawdziwe wyzwanie solone

Hobby Calvina
źródło
1
W jaki sposób zarys krakersa poniżej zastępuje obrys tego powyżej?
dumny haskeller
1
@ Calvin'sHobbies: Myślę, że pyta, dlaczego ___|___zamiast tego znajduje się górna granica ułożonych crackerów _______. Domyślam się, że wyglądałoby to dziwnie, gdyby było to drugie
Claudiu
2
@Claudiu Oh. Tak, nie jest idealny, ale wygląda dziwniej.
Calvin's Hobbies,
6
@ Calvin'sHobbies W rzeczywistości uważam, że pojedyncza postać jest najbardziej interesującą częścią tego wyzwania. ^^
Martin Ender
3
Podanie 0 powinno spowodować awarię.
Naftuli Kay

Odpowiedzi:

4

CJam, 140 125 119 116 bajtów

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

Wypróbuj online.

Jedna sól

Fragment kodu

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

pozostawia na stosie:

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

Ułożone solanki

Załóżmy, że sól z góry jest zapisana w 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
źródło
11

JavaScript (E6) 249 259 289 304 345

Nie jestem tak pewny kompresji łańcucha. Znaleziono dobrą kompresję ciągów. Prosta skrzynka na 1 cracker wydaje się trudna do zarządzania. Może być lepszy sposób ...

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

Mniej więcej golfisty

To jest podstawowy kod, zanim zacząłem grać w golfa. To nie jest dokładnie to samo i działa tylko dla 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)+'|_________________|')
}

Testuj w konsoli FireFox / FireBug

F(4)

Wydajność

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     .     .     |
              |  .   |  .     .     .  |
              |______|     .     .     |
                     |  .     .     .  |
                     |_________________|
edc65
źródło
8

Python, 252 241 znaków

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)

Dzięki FryAmTheEggman i Vincentowi za wycięcie 11 postaci.

Przewaga krakersów:

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

Ten kod wydaje się naprawdę nieefektywny, ale pokażą inne odpowiedzi. Po prostu kopiuje i wkleja krakersa solnego do tablicy we właściwym miejscu, odpowiada, że ​​najniższy krakers jest wyłączony o 1 znak, a następnie drukuje wszystko.

Mogę sprowadzić go do 230 znaków, jeśli użyję pliku zewnętrznego (kod 202 + rozmiar pliku 38 + 1 nazwa pliku).

Claudiu
źródło
11
Pokaż wszystkie dane wyjściowe n=1 upto 2^10, abyśmy mogli być pewni, że Twój program naprawdę postępuje właściwie.
flawr
list(' '*(7*N+12))może być [' ']*(7*N+12).
FryAmTheEggman
1
@flawr: Sir, czy to znaczy - czy mówisz - czy masz na myśli aluzję do - insynuowania, czy może tylko sugerowania, że ​​byłem głupi?
Claudiu
1
@Claudiu Mogę zapewnić, że nawet nie odważyłbym się pomyśleć o insynuacji, że akt miałby nawet nieuchronny dotyk głupot. = P
błąd
1
I G=[list(' '*(7*N+12))for _ in R(2*N+5)]zG=map(list,[' '*(7*N+12)]*(2*N+5))
Vincent
7

Perl 189

Kradnąc kilka pomysłów na kompresję łańcucha od choroby, sprowadziłem się do:

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

Aby ułatwić przeglądanie w przeglądarce:

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]

W kontekście, najlepiej jak potrafię wcześniej:

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]

Dodanie nowego wiersza i wcięcia w celu ułatwienia czytania w przeglądarce:

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

Możesz zamienić „pop” na „<>”, aby wziąć licznik ze STDIN zamiast parametru wiersza poleceń i uzyskać 206 bajtów. Przejście do STDERR spowodowałoby spadek do 204 bajtów.

Gdybym mógł włączyć funkcję „powiedz” bez kary bajtowej, mógłbym dostać się do 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]

wywoływane jako:

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
źródło
Możesz włączyć saybez kary, ponieważ jest to to samo, co uruchamianie w wierszu poleceń z -Ezamiast -e. perl -E''nie liczy się do wszystkich twoich postaci.
hmatt1
Twoje dane wyjściowe są nieprawidłowe. Sprawdź _|_.
choroba
@choroba, dzięki! Zapomniałem ponownie wstawić to podłoże po próbie zastąpienia go y / | / _ / (ale zawsze kończy się to dłuższym kodem). Od 168 do 189.
Tye
4

Perl 201

(usuń nowe wiersze oprócz pierwszego, który uzyska #)

$_=" 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
źródło
„Nie powinno być spacji końcowych”
Tye
@Tye: OK, powrót do 202 :-(
choroba
2

Haskell, 215 bajtów

Ten buduje stos krakersów indukcyjnie, wyciągając części krakersów i odstępy od kilku cyklicznych list:

(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

Przepływ sterowania jest dość prosty; większość podstępu polega na ponownym wykorzystaniu jak największej części krakersów.

Nie golfowany:

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
źródło
1

Python, 299

Myślałem, że jestem sprytny, ale rozwiązanie okazało się zbyt skomplikowane i dłuższe niż jakiekolwiek proste podejście, ale nie mogłem się oprzeć opublikowaniu go. Program wyraźnie oblicza, który znak musi być narysowany w różnych pozycjach ciągu wyjściowego, bez zapętlania poszczególnych krakersów.

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

Ostatnia linia została rozwinięta, aby zobaczyć, co się dzieje:

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
źródło
1

C 284

Dla funkcji fi #defines, z wyłączeniem niepotrzebnych białych znaków i main. Zgodnie z komentarzem edc65, zawarłem 128-bitową liczbę całkowitą (co i tak zamierzałem zrobić), ale ponownie przeliczyłem się i mogę zrobić tylko 29 crackerów, zanim zaczną brakować blaty.

Poniżej pełna funkcja i program testowy. Skomentuje to później.

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

Dane wyjściowe zawierają tylko cztery różne znaki. Są one dekodowane z liczb binarnych 0-3 przez " _.|". Tablica s[]zawiera liczbę całkowitą dla każdej kolumny danych wyjściowych, 2 bity na symbol, która jest zainicjalizowana tak, aby zawierała skrajnie prawy krakers.

Pierwsza forpętla kopiuje poprzedni cracker, przesuwa go w lewo, aby go przesunąć w górę, usuwa prawy dolny róg za pomocą, &a LUB - z poprzednim crackerem, 7 kroków w lewo.

Druga forpętla dekoduje 2-bitową reprezentację każdego znaku na rzeczywisty znak i drukuje znak. Jest tu dużo kodu, aby po prostu wyeliminować niepotrzebne białe znaki na wyjściu. Jestem rozczarowany, że mój wynik poszedł w górę zamiast w dół od mojej poprzedniej wersji.

Wydajność

To 29 krakersów. Zastąpiłem spację -innym wyglądem, aby pokazać, że nie ma końcowych spacji ani obcych znaków nowego wiersza na wyjściu.

-_________________
|--.-----.-----.--|
|-----.-__________|______
|--.---|--.-----.-----.--|
|-----.|-----.-__________|______
|--.---|--.---|--.-----.-----.--|
|______|-----.|-----.-__________|______
-------|--.---|--.---|--.-----.-----.--|
-------|______|-----.|-----.-__________|______
--------------|--.---|--.---|--.-----.-----.--|
--------------|______|-----.|-----.-__________|______
---------------------|--.---|--.---|--.-----.-----.--|
---------------------|______|-----.|-----.-__________|______
----------------------------|--.---|--.---|--.-----.-----.--|
----------------------------|______|-----.|-----.-__________|______
-----------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------|______|-----.|-----.-__________|______
------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-----.-----|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.-----.-----|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|_________________|
Level River St
źródło
W pytaniu nie było wartości maksymalnej, tylko „dodatnia liczba całkowita”. Więc od 1 do 5 jest twoim zdaniem dodatniej liczby całkowitej?
edc65,
@ edc65 Dla kilku dodatkowych bajtów możesz mieć 128-bitową liczbę całkowitą zamiast 32 bitów. To zajmie do 56 crackerów, co powinno wystarczyć (to ponad 20kb mocy wyjściowej). Przyznaję, że przeliczyłem liczbę crackerów, które mogłem uzyskać z 32-bitową liczbą całkowitą, kiedy zaczynałem, myślałem, że to co najmniej dziesięć. Ale tak, wszystkie programy będą miały pewien górny limit liczby crackerów, które mogą wyprodukować, i to OP musi zdecydować, co to jest. To powinno być określone w pytaniu. W tej chwili zaakceptuję decyzję OP dotyczącą ważności mojej odpowiedzi (która nie została ukończona)
Level River St
0

JavaScript (ES6) HTML5 - 233 236 bajtów

Prawdopodobnie nie jest to poprawna odpowiedź, ale po prostu nie mogłem się powstrzymać od opublikowania, przepraszam :-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 Firefox z F(1), F(2), F(3), itd.

Przykład: http://jsfiddle.net/Lvmg9fe8/7/

ja i mój kot
źródło
Nie znam JavaScriptu, ale ten Fiddle wydaje się nic nie robić (chociaż bez problemu mogłem uruchomić inne Fiddles). Mam Google Chrome i Internet Explorer.
Level River St
@steveverrill działa tylko w przeglądarce Firefox, podobnie jak prawie wszystko sprzedawane tutaj jako JavaScript. Chrome i IE nie obsługują EcmaScript 6.
ja i mój kot
Działa (w przeglądarce Firefox), ale nie do końca tego szukam;)
Calvin's Hobbies
Wydaje mi się, że nie mogę tego uruchomić ... Dostaję „niezdefiniowaną” odpowiedź za każdym razem, gdy wprowadzam F(1)lub jakikolwiek inny numer, po wpisaniu tego kodu w konsoli JS w przeglądarce Firefox…
WallyWest,