Tantangan Saltine

23

Berikut adalah biskuit asin ASCII :

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

Berikut adalah dua cracker yang ditumpuk:

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

Tuliskan program sesingkat mungkin yang membutuhkan bilangan bulat positif dan gambar setumpuk banyak biskuit asin ASCII itu.

Input dapat berasal dari stdin, baris perintah, atau Anda cukup menulis fungsi. Masukan akan selalu valid. Output harus pergi ke stdout atau alternatif terdekat.

Setiap cracker yang ditumpuk selalu digeser ke bawah 2 karakter dan 7 karakter dari cracker di bawahnya. Seharusnya tidak ada spasi tambahan atau baris baru yang asing.

Program terpendek dalam byte menang.

Contohnya

Jika inputnya adalah 1output

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

Jika inputnya adalah 2output

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

Jika inputnya adalah 3output

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

Dan seterusnya.

tantangan asin nyata

Hobi Calvin
sumber
1
Bagaimana garis kerupuk di bawah menimpa garis yang ada di atasnya?
haskeller bangga
1
@ Calvin Hobbies: Saya pikir dia mempertanyakan mengapa batas atas cracker bertumpuk ___|___bukan _______. Saya kira itu akan terlihat aneh jika itu yang terakhir
Claudiu
2
@Claudiu Oh. Ya, itu tidak sempurna tetapi terlihat lebih aneh.
Hobi Calvin
6
@ Calvin'sHobbies Sebenarnya, saya pikir karakter tunggal adalah bagian paling menarik dari tantangan ini. ^^
Martin Ender
3
Melewati 0 harus segfault.
Naftuli Kay

Jawaban:

4

CJam, 140 125 119 116 byte

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

Cobalah online.

Satu garam saja

Cuplikan kode

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

meninggalkan yang berikut di tumpukan:

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

Asin yang ditumpuk

Asumsikan asin dari atas disimpan dalam 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
sumber
11

JavaScript (E6) 249 259 289 304 345

Tidak begitu yakin tentang kompresi string. Menemukan kompresi yang baik untuk string. Kasus sederhana 1 cracker tampaknya sulit dikelola. Mungkin ada cara yang lebih baik ...

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

Tidak digabungkan kurang lebih

Itu adalah kode dasar, sebelum saya mulai bermain golf. Ini tidak persis sama dan hanya berfungsi untuk 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)+'|_________________|')
}

Uji di konsol FireFox / FireBug

F(4)

Keluaran

 _________________
|  .     .     .  |
|     . __________|______
|  .   |  .     .     .  |
|     .|     . __________|______
|  .   |  .   |  .     .     .  |
|______|     .|     . __________|______
       |  .   |  .   |  .     .     .  |
       |______|     .|     .     .     |
              |  .   |  .     .     .  |
              |______|     .     .     |
                     |  .     .     .  |
                     |_________________|
edc65
sumber
8

Python, 252 241 karakter

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)

Terima kasih kepada FryAmTheEggman dan Vincent yang telah memotong 11 karakter.

Sebagian besar kerupuk:

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

Kode ini tampaknya sangat tidak efisien, tetapi jawaban lain akan memberi tahu. Ini hanya menyalin dan menempelkan cracker asin ke dalam array di tempat yang tepat, menyumbang cracker terbawah menjadi 1 karakter, lalu mencetak semuanya.

Saya dapat menurunkannya hingga 230 karakter jika saya menggunakan file eksternal (kode 202 + 38 ukuran file + 1 nama file).

Claudiu
sumber
11
Tolong tunjukkan setiap output untuk n=1 upto 2^10sehingga kami dapat memastikan bahwa program Anda benar-benar melakukan hal yang benar.
flawr
list(' '*(7*N+12))bisa jadi [' ']*(7*N+12).
FryAmTheEggman
1
@ flawr: Tuan, apakah itu untuk mengatakan - apakah Anda mengatakan - apakah Anda, ah, menyinggung - menyindir atau mungkin hanya menyarankan, bahwa saya bersikap konyol?
Claudiu
1
@Claudiu saya dapat meyakinkan bahwa saya bahkan tidak akan berani berpikir untuk menyindir Anda dari suatu tindakan yang bahkan hanya akan memiliki sentuhan sillynes yang tidak dapat disangkal. = P
flawr
1
Dan G=[list(' '*(7*N+12))for _ in R(2*N+5)]denganG=map(list,[' '*(7*N+12)]*(2*N+5))
Vincent
7

Perl 189

Mencuri beberapa ide kompresi string dari choroba, saya turun ke:

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

Untuk lebih mudah dilihat di browser Anda:

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]

Untuk konteks, yang terbaik sebelum itu:

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]

Menambahkan baris baru dan lekukan untuk kemudahan membaca di browser Anda:

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

Anda dapat mengganti "pop" dengan "<>" untuk mengambil hitungan dari STDIN alih-alih sebagai parameter baris perintah dan mencapai 206 byte. Pergi ke STDERR akan menjatuhkannya ke 204 byte.

Jika saya dapat mengaktifkan fitur 'say' tanpa penalti byte, maka saya dapat mencapai 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]

dipanggil sebagai:

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
sumber
Anda diizinkan untuk mengaktifkan saytanpa penalti karena sama dengan menjalankan pada baris perintah dengan -Ealih - alih -e. perl -E''tidak dihitung terhadap total karakter Anda.
hmatt1
Output Anda salah. Periksa _|_.
choroba
@ choroba, terima kasih! Saya lupa memasukkan kembali substr setelah mencoba menggantinya dengan y / | / _ / (tetapi selalu berakhir dengan kode yang lebih panjang). Dari 168 hingga 189.
Tye
4

Perl 201

(hapus baris baru kecuali yang pertama yang mendapatkan #)

$_=" 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
sumber
"Seharusnya tidak ada spasi tambahan"
Tye
@Tye: Oke, kembali ke 202 :-(
choroba
2

Haskell, 215 byte

Yang ini membangun tumpukan cracker secara induktif, menarik bagian cracker dan melompati beberapa daftar siklik:

(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

Aliran kontrol cukup mudah; sebagian besar tipu daya adalah menggunakan kembali sebanyak mungkin bagian cracker.

Tidak Disatukan:

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

Python, 299

Saya pikir saya pandai tetapi solusinya ternyata terlalu rumit dan lebih lama daripada pendekatan langsung apa pun, namun saya tidak tahan untuk tidak mempostingnya. Program ini secara eksplisit menghitung karakter mana yang harus diplot pada posisi berbeda dari string keluaran, tanpa mengulangi masing-masing cracker.

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

Dan baris terakhir diperluas untuk melihat apa yang terjadi:

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

C, 284

Untuk fungsi fdan #defines, tidak termasuk spasi dan main. Sesuai dengan komentar edc65, saya telah memasukkan tipe integer 128-bit (yang akan saya lakukan tetap) tetapi saya salah hitung lagi dan saya hanya bisa melakukan 29 cracker sebelum puncaknya hilang.

Fungsi lengkap dan program uji di bawah ini. Akan berkomentar nanti.

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

Hanya ada empat karakter berbeda dalam output. Ini diterjemahkan dari angka biner 0-3 oleh " _.|". Arrays[] berisi integer untuk setiap kolom output, 2 bit per simbol, yang diinisialisasi untuk mengandung cracker paling kanan.

forLoop pertama menyalin cracker sebelumnya, menggeser ke kiri untuk memindahkannya, menghapus menggunakan sudut kanan bawah& ke kiri dan OR dengan cracker sebelumnya, 7 langkah ke kiri.

forLoop kedua menerjemahkan representasi 2-bit dari setiap karakter ke dalam karakter aktual dan mencetak karakter. Ada banyak kode di sini hanya untuk menekan spasi yang tidak perlu dalam output. Saya kecewa karena skor saya naik bukannya turun dari revisi saya sebelumnya.

Keluaran

Itu 29 kerupuk. Saya mengganti ruang dengan -untuk tampilan yang berbeda, dan untuk menunjukkan bahwa tidak ada spasi tambahan atau baris baru di output.

-_________________
|--.-----.-----.--|
|-----.-__________|______
|--.---|--.-----.-----.--|
|-----.|-----.-__________|______
|--.---|--.---|--.-----.-----.--|
|______|-----.|-----.-__________|______
-------|--.---|--.---|--.-----.-----.--|
-------|______|-----.|-----.-__________|______
--------------|--.---|--.---|--.-----.-----.--|
--------------|______|-----.|-----.-__________|______
---------------------|--.---|--.---|--.-----.-----.--|
---------------------|______|-----.|-----.-__________|______
----------------------------|--.---|--.---|--.-----.-----.--|
----------------------------|______|-----.|-----.-__________|______
-----------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------|______|-----.|-----.-__________|______
------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
---------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
----------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-----------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-__________|______
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.---|--.-----.-----.--|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.|-----.-----.-----|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.---|--.-----.-----.--|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|______|-----.-----.-----|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--.-----.-----.--|
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|_________________|
Level River St
sumber
Tidak ada nilai maksimal dalam pertanyaan, hanya "bilangan bulat positif". Jadi 1 sampai 5 adalah ide Anda tentang bilangan bulat positif?
edc65
@ edc65 Untuk beberapa byte lagi Anda dapat memiliki tipe integer 128-bit alih-alih 32 bit. Itu akan memakan waktu hingga 56 cracker, yang seharusnya cukup (itu lebih dari 20kb output). Saya akui saya salah menghitung jumlah cracker yang bisa saya dapatkan dengan integer 32-bit ketika saya mulai, saya pikir itu setidaknya sepuluh. Tapi ya, semua program akan memiliki semacam batas atas jumlah cracker yang dapat mereka hasilkan dan terserah OP untuk memutuskan apa itu. Itu harus ditentukan dalam pertanyaan. Karena saya akan menerima keputusan OP tentang validitas jawaban saya (yang belum selesai.)
Level River St
0

JavaScript (ES6) HTML5 - 233 236 byte

Mungkin bukan jawaban yang valid, tapi saya tidak bisa menahan posting, maaf :-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+"_____|"}

Tes di Firefox dengan F(1), F(2), F(3), dll

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

saya dan kucing saya
sumber
Saya tidak tahu JavaScript, tetapi Fiddle ini tampaknya tidak melakukan apa-apa (padahal saya sudah bisa menjalankan Fiddles lain tanpa masalah.) Saya punya Google Chrome dan Internet Explorer.
Level River St
@steveverrill hanya berfungsi di Firefox, seperti hampir semua yang dijual sebagai JavaScript di sini. Chrome dan IE tidak mendukung EcmaScript 6.
saya dan kucing saya
Ini berfungsi (di Firefox), meskipun itu tidak cukup seperti yang saya cari;)
Calvin Hobbies
Sepertinya saya tidak bisa menjalankan ini dengan baik ... Saya menerima respons "tidak ditentukan" setiap kali saya memasukkan F(1)atau nomor lain, setelah memasukkan kode ini di konsol JS di Firefox ...
WallyWest