Nghệ thuật ASCII cho giao diện người dùng torrent


30

Vấn đề

Tạo lại giao diện người dùng từ một chương trình torrent

Không có đầu vào, đầu ra như sau:

+----------+----------+----------+
|a.exe     |##########|seeding   |
+----------+----------+----------+
|b.exe 10% |#         |leeching  |
+----------+----------+----------+
|c.exe     |##########|seeding   |
+----------+----------+----------+
|d.exe 20% |##        |leeching  |
+----------+----------+----------+
|e.exe     |##########|seeding   |
+----------+----------+----------+
|f.exe 30% |###       |leeching  |
+----------+----------+----------+
|g.exe     |##########|seeding   |
+----------+----------+----------+
|h.exe 40% |####      |leeching  |
+----------+----------+----------+
|i.exe     |##########|seeding   |
+----------+----------+----------+
|j.exe 50% |#####     |leeching  |
+----------+----------+----------+
|k.exe     |##########|seeding   |
+----------+----------+----------+
|l.exe 60% |######    |leeching  |
+----------+----------+----------+
|m.exe     |##########|seeding   |
+----------+----------+----------+
|n.exe 70% |#######   |leeching  |
+----------+----------+----------+
|o.exe     |##########|seeding   |
+----------+----------+----------+
|p.exe 80% |########  |leeching  |
+----------+----------+----------+
|q.exe     |##########|seeding   |
+----------+----------+----------+
|r.exe 90% |######### |leeching  |
+----------+----------+----------+
|s.exe     |##########|seeding   |
+----------+----------+----------+
|t.exe     |##########|seeding   |
+----------+----------+----------+
|u.exe     |##########|seeding   |
+----------+----------+----------+
|v.exe     |##########|seeding   |
+----------+----------+----------+
|w.exe     |##########|seeding   |
+----------+----------+----------+
|x.exe     |##########|seeding   |
+----------+----------+----------+
|y.exe     |##########|seeding   |
+----------+----------+----------+
|z.exe     |##########|seeding   |
+----------+----------+----------+

tiến độ cho các chương trình là:

b=10% d=20% f=30% h=40% j=50% l=60% n=70% p=80% r=90%

số lượng của #các chương trình leeching làprogress/10

phần còn lại là tất cả seedingvới thanh tiến độ đầy đủ.

Quy tắc

  • Hàng đầu và dấu vết mới cho phép.
  • Không gian hàng đầu và dấu cho phép miễn là nó không thay đổi hình dạng đầu ra.
  • thiết bị xuất chuẩn và chức năng cho đầu ra được phép.
  • Mã ngắn nhất trong byte giành chiến thắng

5
Bạn biết tải xuống .exetừ torrent không phải là điều sáng nhất để làm, eh?
RobAu

14
@RobAu làm thế nào khác tôi sẽ có được f.exekhông thể tìm thấy một bản sao của nó bất cứ nơi nào khác.
LiefdeWen

9
f.exeđi kèm với f_readme.txtđó là "chạy như quản trị viên". Có vẻ hợp pháp.
Bạch tuộc ma thuật Urn

@RobAu Tôi không biết, tôi thường xuyên tải xuống các bản phân phối Linux, có chứa các tệp thực thi bao gồm một số cài đặt bộ tải khởi động, với torrent!
Pascal Cuoq ngày

Câu trả lời:


5

Than, 98 85 83 byte

F³B⁻³⁴×¹¹ι³M↘ .exeM⁶→×#χ|seeding⸿F²⁵C⁰¦²↗Fβ↓⁺ι-F⁹«J⁷⁺³×⁴ι⁺⁺ι¹0% |#P⁺× ⁹|leeching×#ι

Tôi nghĩ rằng sao chép một mẫu sẽ giúp tôi tiết kiệm rất nhiều mã nhưng dường như tất cả đều tăng lên bằng cách nào đó, mặc dù tôi đã quản lý để lưu 13 byte bằng cách sử dụng một vòng lặp duy nhất để sửa 9 hàng leeching. Giải trình:

F³B⁻³⁴×¹¹ι³             Make the top row of boxes
M↘ .exeM⁶→×#χ|seeding⸿  Print .exe, the 10 #s and seeding
F²⁵C⁰¦²                 Make 25 copies of the boxes
↗Fβ↓⁺ι-                 Put the letters in at the start
F⁹«                     For the 9 leeching files
   J⁷⁺³×⁴ι              Move the cursor to the percentage column
   ⁺⁺ι¹0% |#            Print the percentage and the first # of progress
   P⁺× ⁹|leeching       Erase the rest of the progress and change the status
   ×#ι                  Print the desired amount of progress

(Lưu ý bên lề: Tôi dường như đã phát hiện ra một lỗi trong Char than; |là một ký tự ASCII, nhưng nó cũng được tính là một mũi tên cho các mục đích Multiprint, vì vậy bạn không thể làm được Multiprint.)


Không phải là một lỗi, bạn có thể thoát nó nếu bạn muốn
ASCII - chỉ

@ ASCII-chỉ Ah đúng, đáng buồn là deverbosifier không biết điều đó.
Neil

Ồ đúng rồi, cảm ơn vì đã nhắc nhở tôi
ASCII - chỉ

12

Perl 5 , 130 byte

print$e=("+"."-"x10)x3 ."+
";printf"|$_.exe%4s |%-10s|%-9s |
$e",$|--&&$@++<9?("$@0%","#"x$@,leeching):("","#"x10,seeding)for a..z

Hãy thử trực tuyến!

Tôi hy vọng rằng có một vài byte có thể được chơi gôn, nhưng tôi đã hết cảm hứng.

Giải thích ngắn:
$echứa dòng tách ( +----------+----------+----------+); xây dựng của nó là thẳng về phía trước ( ("+"."-"x10)x3 ."+\n").
Sau đó, tôi lặp qua các ký tự từ ađến z:
Mỗi lần, in "|$_.exe%4s |%-10s|%-9s |\n$e; đây là một tiêu chuẩn printfvới trình giữ chỗ cho chuỗi ( %s) và chuỗi đệm trái ( %-9s).
if $|--&&$@++<9là true ( $|là một biến đặc biệt chứa 0 hoặc 1 và giảm giá trị này để thay đổi giá trị của nó), thì tỷ lệ phần trăm không phải là 100% và ba giá trị trong bản in là "$@0%","#"x$@,leeching( $@0%thực ra chỉ là $@ . "0" . "%"- hãy nhớ rằng $@đã được tăng trước đó) , nếu không, ba giá trị là "","#"x10,seeding).


6

Python 2 , 182 177 byte

Cảm ơn @officialaimm đã loại bỏ 5 byte bằng cách thay đổi định dạng của điều kiện.

r=("+"+10*"-")*3+"+"
for i in range(26):z=i/2+1;print r+"\n|"+chr(97+i)+".exe "+["    |"+10*"#"+"|seeding ",`10*z`+"% |"+z*"#"+(10-z)*" "+"|leeching"][i%2and i<19]+"  |"
print r

Hãy thử trực tuyến!



1
Tốt đẹp! Tôi đã thấy rằng một vài lần nhưng không nghĩ đến việc sử dụng nó trong trường hợp này. Tôi có thể cập nhật câu trả lời của tôi với giải pháp của bạn?
Fedone

Tất nhiên, bạn có thể cập nhật nó. ;)
tuyên bố chính thức


6

SOGL V0.12 , 90 89 88 byte

ēz{L┌* +3ΟQķ|;o".exe ”oēI»L*"% |”e» #*lLκ@*"┌5%8'Ω⅞█≡θ¹‘++++e'³>e2\+?X"⅓m÷Ko→∆)№(¤^▒«‘}o

Hãy thử nó ở đây!

Giải trình:

ē                                 push variable E (default = input, which default is 0) and increase it after (next ē call will result in 1, or next e call - 2)
 z{                               iterate over the lowercase alphabet
   L┌*                            push 10 dashes
       +                          push "+"
        3Ο                        encase 3 copies of the dashes in pluses
          Q                       output in a new line, without popping and without disabling auto-output
           ķ|                     output in a new line "|"
             ;o                   output the current iteration (the alphabet letter)
               ".exe ”o           output ".exe "
                       ē          push E and increase the variable after
                        I         increase it
                         5*       multiply by 5 (every 2 ē calls this gets called)
                           "% |”  push "% |"

e»                                  push (E)/2
   #*                               get that mant "#"s
     l                              get the length of that string
      Lκ                            push 10-length
        @*                          push that many spaces
          "..‘                      push "|leeching  |"
              ++++                  add all those strings on the stack together ((e+1)*5, "% |", "#..#", " .. ", "|leeching |") (done this way to leave the "+-+-+-+" on the stack)
                  e'³>              push e>19
                      e2\           push e divides by 2
                         +          add together (here works like OR)
                          ?         if that then
                           X          remove the added-together string
                            "..‘      push "    |##########|seeding   |"
                                }   END
                                 o  output POP (either the added string or full/seeding version)
implicitly output POP (since none of tTpP were called), which is the separator line

Nhịp đập SOGL .... Than?!
Ông Xcoder

1
@ Mr.Xcoder Đó là kịch bản phổ biến nhất imo.
Erik the Outgolfer

Tại sao các downvote?
dzaima

4

Javascript, 232 230 228 226 byte

(s='+----------'.repeat(3),p=0)=>[...'abcdefghijklmnopqrstuvwxyz'].map((c,i)=>(b=i%2,p=b?p+10:p,x=b&p<91,`${s}+'
|${c}.exe ${x?p+'%':'   '} |${'#'.repeat(x?p/10:10).padEnd(10)}|${x?'leeching':'seeding '}  |`)).join`
`+`
${s}+`
  • -2 byte nhờ vào @Stephen S - Sử dụng tham số chức năng mặc định
  • -2 byte nhờ vào OP - Thay thế một số khoảng trắng
  • -2 byte nhờ vào @Shaggy - Phá hủy chuỗi bảng chữ cái

Bản giới thiệu


Dòng cuối cùng bị thiếu. Ngoài ra, trình và Snippet khác nhau; "leeching" là thiếu từ trình, ví dụ.
Xù xì

@Shaggy Trả lời được cập nhật - Cảm ơn đã theo dõi
Weedoze

-2 byte bằng cách di chuyển spđến các tham số chức năng mặc định, loại bỏ sự cần thiết ()của s xung quanh thân hàm: Fiddle
Stephen

Tôi không chắc nhưng bạn không thể thay đổi ${x?'leeching ':'seeding '}|như sau : ${x?'leeching':'seeding '} |?
LiefdeWen

@LiefdeWen Bạn nói đúng! Cảm ơn
Weedoze

3

PHP , 179 byte

không có đầu vào

for($a=a;$x<53;++$x&1?:$a++)printf($x&1?"
|$a.exe%4s |%-10s|%-10s|
":str_pad("",34,"+----------"),($y=$x%4>2&$x<36?++$z:"")?$y."0%":"",str_repeat("#",$y?:10),$y?leeching:seeding);

Hãy thử trực tuyến!

PHP , 176 byte

với đầu vào

for($a=a;$x<53;)printf($x&1?"
|$a.exe%4s |%-10s|%-10s|
":str_pad("",34,"+----------"),($y=strstr($argn,++$x&1?:$a++)[2])?$y."0%":"",str_repeat("#",$y?:10),$y?leeching:seeding);

Hãy thử trực tuyến!


Lưu 9 byte từ phiên bản đầu tiên: xóa ++khỏi ++$x&1(-2), sử dụng $y=++$x%4|$z>9?"":++$z."0%"làm printftham số thứ hai (-9) và chèn $ztrước :10(+2)
Tít

2

Python 3 , 255 byte

Tôi chắc chắn rằng điều này có thể được đánh gôn, cập nhật sớm:

e,l='.exe ',('+'+10*'-')*3+"+";print(l)
for i in zip(['|'+chr(z)+e+'    |'+"#"*10+'|seeding   |'if z%2or z>115else'|'+chr(z)+e+str((z-96)//2*10)+'% |'+(z-96)//2*"#"+(10-(z-96)//2)*" "+"|leeching  |"for z in range(97,123)],[l]*26):print(i[0],i[1],sep="\n")

Hãy thử trực tuyến!


thay vì leeching |seeding |, bạn không thể thay đổi nó thành leechingseeding +" |"?
LiefdeWen

@LiefdeWen Tôi sợ rằng 8 byte dài hơn ...
Ông Xcoder

Nào, "cập nhật sớm"? Dù sao, 246 byte với danh sách splat và / hoặc .
dùng202729

Ngoài ra, //2*10*510-(z-96)//2chỉ là 58-z//2.
dùng202729


2

Java (OpenJDK 8) , 244 229 228 227 226 224 222 218 217 byte

o->{String x="----------+",z="+"+x+x+x,s=z;for(int c=96,p;++c<123;s+=s.format("%n|%c.exe%4s |%-10s|%-10s|%n"+z,c,p>9?"":p+"0%","##########".substring(0,p),p>9?"seeding":"leeching"))p=(p=c/2-48)>9|c%2>0?10:p;return s;}

Hãy thử trực tuyến!

-2 byte nhờ @KevinCruijssen!


Của bạn leechingseedingđược liên kết đúng.
LiefdeWen

Wow, bình luận nhanh! Tôi chỉ thấy sau khi đăng bài và đang bận sửa nó: p
Olivier Grégoire

Xin lỗi vì đã làm phiền, tôi cảm thấy phấn khích khi thấy những điều tốt đẹp có thể đọc được
LiefdeWen

Phiền toái? Không, bạn không :)
Olivier Grégoire

1
Dangit .. Trong khi tôi đang sửa chữa và thêm một lời giải thích cho câu trả lời của mình, bạn đã đánh bại tôi với nó .. Và tôi có thể thêm 34 byte ngắn hơn .. Tôi thấy một số mô phỏng, nhưng sử dụng thông minh .format0%, +1! Btw, bạn có thể đánh golf câu trả lời của mình nhiều hơn bằng cách bắt đầu bằng s=zthay vào đó, như thế này: o->{String x="----------+",z="+"+x+x+x,s=z;for(int c=96,p;++c<123;)s+=s.format("%n|%c.exe %3s |%-10s|%-10s|%n"+z,c,(p=(c%2>0|c/2-48>10)?10:c/2-48)<10?p+"0%":"","##########".substring(0,p),p<10?"leeching":"seeding");return s;}( 225 byte )
Kevin Cruijssen


1

Braingolf , 673 655 byte

9..#+[#-]#+[#-]#+[#-]"+
|"!&@V"a.exe     |"!&@V9[##]"|seeding   |
"!&@v!&@v<1+>!&@V8##[# ]"|leeching  |
"!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<$_##>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<$_##>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<$_##>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<$_##>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<<$_##>>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<<<$_##>>>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<<<<$_##>>>>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<<<<<$_##>>>>>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@vv<<<<<<<<<$_##>>>>>>>>>!&@v!&@v<1+>!&@v!&@vv!&@v<1+>!&@v!&@vv!&@v<1+>!&@v!&@vv!&@v<1+>!&@v!&@vv!&@v<1+>!&@v!&@vv!&@v<1+>!&@v!&@vv$_!&@;

Hãy thử trực tuyến!

Tôi đã nói điều đó trước đây và tôi sẽ nói lại: Braingolf rất tệ trong nghệ thuật ASCII.

Ít nhất đây chỉ là 1/3 số byte cần thiết để thực sự mã hóa đầu ra


1

V , 107 byte

¬azÓ./|&.exeò
ddÎAµ |±°#|seeding³ |
ÙÒ-4ñr+11lñddç^/P
jp4G9ñ8|R00%3l10r llRleeching4jñV{10g
çä/WylWl@"r#

Hãy thử trực tuyến!

Hexdump:

00000000: ac61 7ad3 2e2f 7c26 2e65 7865 f20a 6464  .az../|&.exe..dd
00000010: ce41 b520 7cb1 b023 7c73 6565 6469 6e67  .A. |..#|seeding
00000020: b320 7c0a d9d2 2d34 f172 2b31 316c f164  . |...-4.r+11l.d
00000030: 64e7 5e2f 500a 6a70 3447 39f1 387c 5230  d.^/P.jp4G9.8|R0
00000040: 3025 1b33 6c31 3072 206c 6c52 6c65 6563  0%.3l10r llRleec
00000050: 6869 6e67 1b34 6af1 567b 3130 6701 0ae7  hing.4j.V{10g...
00000060: e42f 5779 6c57 6c40 2272 23              ./WylWl@"r#



1

T-SQL, 238 byte

DECLARE @ INT=1,@D CHAR(11)='+----------'L:PRINT @D+@D+@D+'+
|'+CHAR(@+96)+'.exe '+IIF(@%2=0AND
@<20,CONCAT(@/2,'0% |',REPLICATE('#',@/2),SPACE(10-@/2),'|leeching  |'),'    |##########|seeding   |')SET @+=1IF @<27GOTO L
PRINT @D+@D+@D+'+'

Giải pháp thủ tục, được định dạng:

DECLARE @ INT=1, @D CHAR(11)='+----------'
L:
    PRINT @D + @D + @D + '+
|' + CHAR(@+96) + '.exe ' + 
    IIF(@%2=0 AND @<20, 
       CONCAT(@/2,'0% |',REPLICATE('#',@/2),SPACE(10-@/2),'|leeching  |'),
       '    |##########|seeding   |')
   SET @+=1
IF @<27 GOTO L
PRINT @D + @D + @D + '+'

Tất cả mọi thứ trong vòng lặp (cho đến khi cài đặt) là một phần của cùng một câu lệnh PRINT, bao gồm cả một ngắt dòng bên trong chuỗi ký tự đầu tiên.

Tôi đang làm việc trên một giải pháp dựa trên tập hợp (tạo và điền vào bảng, sau đó CHỌN từ nó), nhưng tôi không chắc liệu nó có nhỏ hơn hay không.


1

Java 8, 271 263 262 byte

o->{String a="+----------",b=a+a+a+"+\n",r=b;for(int c=96,t;++c<123;r+="|"+(char)c+".exe "+(t>0?(c/2-48)+"0%":"   ")+" |##########".substring(0,t>0?c/2-46:12)+"         |".substring(t>0?c/2-49:9)+(t>0?"leeching":"seeding ")+"  |\n"+b)t=c<115&c%2<1?1:0;return r;}

Tất cả những rắc rối này chẳng vì gì cả ..>.>;)
( Câu trả lời Java ngắn hơn của @ OliverGrégoire .)

Giải trình:

Hãy thử nó ở đây.

o->{                       // Method with unused Object parameter and String return-type
  String a="+----------",b=a+a+a+"+\n",
                           //  Temp String "+----------+----------+----------+\n"
         r=b;              //  Result-String
  for(int c=96,t;++c<123   //  Loop from 'a' to 'z':
      ;                    //    After every iteration:
       r+=                 //     Append the result-String with:
         "|"               //      A literal "|"
         +(char)c          //      + the character
         +".exe "          //      + literal ".exe "
         +(t>0?            //      If the current character is below 's' and even unicode:
           (c/2-48)+"0%"   //       + the percentage
          :                //      Else:
           "   ")          //       + the spaces
         +" |##########"   //      + the progress bar
           .substring(0,   //       By using a substring from 0 to 
             t>0?          //        If the current character is below 's' and even unicode:
              c/2-46       //         'b' = 3; 'd' = 4; 'f' = 6; etc.
             :             //        Else:
              12)          //         12 (the entire progress bar)
         +"         |"     //      + spaces after the progress bar
           .substring(     //       By using a substring from
             t>0?          //        If the current character is below 's' and even unicode:
              c/2-49       //         'b' = 0; 'd' = 1; 'f' = 2; etc.
             :             //        Else:
              9)           //         9 (all the spaces)
         +(t>0?            //      If the current character is below 's' and even unicode:
           "leeching"      //       + literal "leeching"
          :                //      Else:
           "seeding ")     //       + literal "seeding "
         +"  |\n"          //      + literal "  |" + new-line
         +b)               //      + `b` ("+----------+----------+----------+\n")
  t=c<115&c%2<1?           //   If the current character is below 's' and even unicode:
     1                     //    `t` = 1
    :                      //   Else:
     0;                    //    `t` = 0
                           //  End of loop
  return r;                //  Return the result-String
}                          // End of method

Sử dụng charthay vì một inttrong vòng lặp. Nó cho phép bạn không sử dụng nó sau này. tcó thể được khởi tạo và khởi tạo lại về 0 và +=sau đó. Nó vẫn nên ngắn hơn.
Olivier Grégoire

@ OlivierGrégoire Nó thực sự dài hơn 2 byte. int& (char)& t=...;vs char& {t=1;t*=...;}. Trừ khi tôi thiếu một cái gì đó.
Kevin Cruijssen

Không, bạn không thiếu thứ gì, đó là ý tưởng của tôi. Tôi đã không lấy một số phần khác trong mã của bạn trong tài khoản.
Olivier Grégoire

1

Đồng bằng TeX, 306 byte

\let\a\advance\def\b{+\r{\r-9-+}3\par}\def\s{\r~5|\r\#9\#|seeding\r~3|}\def\r#1#2{{\i0\loop#1\a\i1
\ifnum\i<#2\repeat}}\newcount\i\i`a\newcount\j\j1\tt\loop\b|\char\i.exe\ifodd\i\s\else\ifnum\i<`s\
\the\j0\%~|\r\#\j{\j-\j \a\j10 \r~\j}\a\j1|leeching\r~2|\else\s\fi\fi\endgraf\a\i1 \ifnum\i<`\{\repeat\b\bye

Ung dung với một số giải thích:

\let\a\advance
\def\b{+\r{\r-9-+}3\par}%           The bar between rows: '+' + 3*(9*'-' + '-' + '+') + '\n'
\def\s{\r~5|\r\#9\#|seeding\r~3|}%  The common part for seeding lines, similar to \b
\def\r#1#2{{%                       Macro for repeating #1 #2 times
% Note the local grouping here which is needed for nested \loops and allows us to reuse the global \i
  \i0%
  \loop
    #1%
    \a\i1 %
    \ifnum\i<#2%
   \repeat%
}}%                                 
\newcount\i \i`a%                   Counter for ASCII values of letters, start with 'a'
\newcount\j \j1%                    Counter for percentages; shorter than modulo tricks
\tt
\loop
  \b|\char\i.exe%
  \ifodd\i
    \s%                             Odd lines are seeding lines
  \else
    \ifnum\i<`s\ %                  Even line up to 'r'
      \the\j0\%~|\r\#\j%            Print percentage and progress bar
      {\j-\j \a\j10 \r~\j}%         10-\j spaces after the progress bar
      \a\j1%
      |leeching\r~2|%
    \else
      \s%                           There's no \ifeven, hence the repetition here
    \fi
  \fi
  \endgraf%                         Print '\n'. \par doesn't work here, because \loop isn't a \long macro
  \a\i1
  \ifnum\i<`\{%                     Repeat until \j <= 'z'
\repeat
\b
\bye

1

05AB1E , 120 byte

AS".exe"«'A17×S9L‚ζJJðK€H©T*т%εD0Q_i'%«ëð3×}}‚ζεðýð«}®'#×T®-úí"leeching  seeding   "Tô®TQè)ζ'|ýε'|.ø}õ.ø'-T∍'+«3×'+ì¶.øý

Hãy thử trực tuyến!


Có quá nhiều cách chơi golf ở đây, sẽ đăng lời giải thích khi tôi dưới 90 byte.


1

Stax , 53 68 64 byte

â"{≤╞c~£ÿτδ¬│∙}Dgoô₧»öÖ#9▌ó♂i◘ÿkùâGCå`è╙/♠Gδb,φW0EqΔ┘δth½àJZ¿l╦#

Chạy và gỡ lỗi nó

Unpacked và unolfed nó trông như thế này.

'+'-A*+34:mQ
VaF
  '|p
  ".exe "+
  |;i^hA?X 
  $.0%+
  xA<Y*+G
  '#x*G
  `Qz/"D?d=T"`jy@G
  zP
  Q
}A(p'|p

Lưu ý rằng nếu bạn sử dụng nút "Golf" để xóa khoảng trắng và nhận xét khỏi giải pháp mở rộng, nó sẽ tăng gấp đôi không chính xác }. Nếu bạn loại bỏ ký tự phụ, nó tiếp tục hoạt động chính xác.


1

C (gcc) , 217 211 byte

-6 byte nhờ trần

#define B"+----------"
f(p){for(char*a,*l=" bdfhjlnpr",i=97;puts(B B B"+"),i<'{';printf("|%c.exe %.*d%s |%-10.*s|%s  |\n",i++,!!a,p%10,a?"0%":"   ",p=a?a-l:10,"##########",a?"leeching":"seeding "))a=index(l,i);}

Hãy thử trực tuyến!


0

/// , 264 byte

/~/\/\///!/---~@/!!!-~$/@+@+@~</+
|~>/|
+~(/###~*/  ~}/|leeching*~[/.exe ~;/0% |~{/[**|(((#|seeding* ~]/>$</+$<a{]b[1;# ****}]c{]d[2;##****}]e{]f[3;( ***}]g{]h[4;(#***}]i{]j[5;(## **}]k{]l[6;((**}]m{]n[7;#((* }]o{]p[8;##((*}]q{]r[9;((( }]s{]t{]u{]v{]w{]x{]y{]z{>$+

Hãy thử trực tuyến!

Hoạt động bằng cách xác định một loạt các thay thế và sử dụng chúng để thay thế nhiều ký tự hơn chúng.


0

Toán học, 274 byte

a=Alphabet[];n=StringPadRight;o=ToString;Column@Join[Row/@Table[{g="+----------+----------+----------+\n","|"<>o@a[[i]]<>".exe ",If[EvenQ@i&&i<20,s=o[5i]<>"% ";k="|"<>Table["#",i/2];f="leeching";,k="|##########";f="seeding";s="    "];s,n[k,11]<>"|",n[f,10],"|"},{i,26}],{g}]

0

Than , 154 149 143 130 103 byte

A⁵δFβ«F³«+χ»+⸿A∨﹪δ²›δ⁹⁵θ|ι.exe⎇θ… ⁵⁺⁺ δ% ⁰|⎇θ…#χ⁺…#∕δχ… ⁻χ∕δχ⎇θ|seeding   |⸿↧|leeching  |⸿A⁺⁵δδ»F³«+χ»+

Hãy thử trực tuyến! (Liên kết đến phiên bản dài dòng.)

  • 27 byte tiết kiệm nhờ các kỹ thuật Than chủ của Neil.

Bạn có thể lưu toàn bộ khối lượng byte bằng cách sử dụng \\r: Dùng thử trực tuyến! . Lưu ý rằng tôi đã chèn các thao tác giả vì tôi không nhận được bất kỳ dấu phân cách nào.
Neil

@Neil thực sự, có vẻ như các bản in thành công ngắn hơn tóm tắt các đoạn và in toàn bộ chuỗi. Không đề cập đến \rmánh khóe, tôi không biết điều đó.
Charlie

0

Bong bóng , 150 byte

00000000: e007 3d00 8c5d 0015 8b71 ec14 6414 8031  ..=..]...q..d..1
00000010: 7fc3 2b24 3568 ca81 7ab5 363e c3b7 f500  ..+$5h..z.6>....
00000020: c926 d3f0 55d9 926f 75a8 f8d0 806f 1f12  .&..U..ou....o..
00000030: d71f b824 7e75 a7f2 544f 0364 ee5e 98be  ...$~u..TO.d.^..
00000040: a327 c36c 2ff1 8e6e df94 858e 82d0 d9da  .'.l/..n........
00000050: 77d6 fac6 5548 64aa 7a29 78fa 6886 3c85  w...UHd.z)x.h.<.
00000060: 0494 905e 74de a209 e927 42c8 418d 8250  ...^t....'B.A..P
00000070: ee39 c16b a4c2 9add 0b17 f8b0 9984 9aa8  .9.k............
00000080: defb 2875 31a9 c136 0ec2 6f28 9f8c 9990  ..(u1..6..o(....
00000090: 10d4 0000 0d0a                           ......

Hãy thử trực tuyến!


0

Perl6, 225 219

my&f={say ("+"~"-"x 10)x 3~"+"};my&g={f;my$b=$^c>9??"   "!!$c*10~"%";say "|$^a.exe $b |{'#'x$c}{' 'x(10-$c)}|$^d  |"};my \s="seeding ";for 1..9 {g chr(95+2*$_),10,s;g chr(96+2*$_),$_,"leeching"};g $_,10,s for "s".."z";f

0

Lua, 380 byte

s=string.gsub
r=string.rep
function l(i)return".exe "..i.."0% |"..r("#",i)..r(" ",10-i).."|leeching  |\n"end
print((s(s("Z|aY|b"..l(1).."Z|cY|d"..l(2).."Z|eY|f"..l(3).."Z|gY|h"..l(4).."Z|iY|j"..l(5).."Z|kY|l"..l(6).."Z|mY|n"..l(7).."Z|oY|p"..l(8).."Z|qY|r"..l(9).."Z|sY|tY|uY|vY|wY|xY|yY|zY","Y",".exe     |##########|seeding   |\nZ"),"Z","+----------+----------+----------+\n")))

Sử dụng gsubđể tạo các vạch chia hàng và các hàng gieo hạt. ltạo ra các hàng leeching. Đổi tên gsubreptiết kiệm nhiều byte hơn.


0

Jstx , 126 byte

►-○EO.♥/(:►+:1►+;+₧D0%4►|22♫♥φézï2♂bdfhjlnpr♀*U!↑)☺:♣<!,♂% |♀:2&₧#=-₧#/')▬►#◙')§► ◙21♫♠~√╫WσΓÇ2◙↓♫♥¿Ç~√₧#/►#:1♫♣~√▐┬╞¿:2◙►|41%

Hãy thử trực tuyến!

Giải trình

►-          # Push literal -
○           # Push literal 9
E           # Push the second stack value the absolute value of the first stack value times.
O           # Collapse all stack values into a string, then push that string.
.           # Store the first stack value in the d register.
♥           # Push literal 3
/           # Enter an iteration block over the first stack value.
(           # Push the value contained in the d register.
:           # Push the sum of the second and first stack values.
►+          # Push literal +
:           # Push the sum of the second and first stack values.
1           # End an iteration block.
►+          # Push literal +
;           # Push the difference of the second and first stack values.
+           # Store the first stack value in the a register.
₧D          # Push literal abcdefghijklmnopqrstuvwxyz
0           # Enter an iteration block over the first stack value and push the iteration element register at the beginning of each loop.
%           # Push the value contained in the a register.
4           # Print the first stack value, then a newline.
►|          # Push literal |
2           # Print the first stack value.
2           # Print the first stack value.
♫♥φézï      # Push literal .exe 
2           # Print the first stack value.
♂bdfhjlnpr♀ # Push literal bdfhjlnpr
*           # Push the value contained in the iteration element register.
U           # Push a true if the second stack value contains the first stack value, else false.
!           # Push a copy of the first stack value.
↑           # Enter a conditional block if first stack value exactly equals true.
)           # Push the value contained in the iteration index register.
☺           # Push literal 1
:           # Push the sum of the second and first stack values.
♣           # Push literal 5
<           # Push the product of the second and first stack values.
!           # Push a copy of the first stack value.
,           # Store the first stack value in the b register.
♂% |♀       # Push literal % |
:           # Push the sum of the second and first stack values.
2           # Print the first stack value.
&           # Push the value contained in the b register.
₧#          # Push literal 10
=           # Push the quotient of the second and first stack values.
-           # Store the first stack value in the c register.
₧#          # Push literal 10
/           # Enter an iteration block over the first stack value.
'           # Push the value contained in the c register.
)           # Push the value contained in the iteration index register.
▬           # Enter a conditional block if the second stack value is less than the top stack value.
►#          # Push literal #
◙           # End a conditional block.
'           # Push the value contained in the c register.
)           # Push the value contained in the iteration index register.
§           # Enter a conditional block if the second stack value is greater than or equal to the top stack value.
►           # Push literal  
◙           # End a conditional block.
2           # Print the first stack value.
1           # End an iteration block.
♫♠~√╫WσΓÇ   # Push literal |leeching  
2           # Print the first stack value.
◙           # End a conditional block.
↓           # Enter a conditional block if first stack value exactly equals false.
♫♥¿Ç~√      # Push literal     |
₧#          # Push literal 10
/           # Enter an iteration block over the first stack value.
►#          # Push literal #
:           # Push the sum of the second and first stack values.
1           # End an iteration block.
♫♣~√▐┬╞¿    # Push literal |seeding   
:           # Push the sum of the second and first stack values.
2           # Print the first stack value.
◙           # End a conditional block.
►|          # Push literal |
4           # Print the first stack value, then a newline.
1           # End an iteration block.
%           # Push the value contained in the a register.
            # Implied println upon termination.

Tôi chắc chắn rằng điều này có thể nhận được ngắn hơn đáng kể.



0

Pascal (FPC) , 294 286 266 263 byte

const m='----------+';Q=#10'+'+m+m+m+#10;S='.exe     |##########|seeding   |'+Q;var i:word;begin write(Q);for i:=1to 9do write('|',chr(95+i*2),S,'|',chr(96+i*2),'.exe ',i,'0% |',StringOfChar('#',i),'|leeching  |':22-i,Q);for i:=115to 122do write('|',chr(i),S)end.

Hãy thử trực tuyến!

Vì vậy, ... tôi đã kết thúc với cả dòng mới và dẫn đầu: D


0

PowerShell , 224 210 181 174 169 160 byte

$l=("+"+"-"*10)*3+"+
"
0..25|%{"$l|$([char](97+$_)).exe "+("    |$("#"*10)|seeding ",("$(++$c/2)0% |{0,-10}|leeching"-f("#"*($c/2))))[$_%2-and$_-lt18]+"  |"}
$l

Hãy thử trực tuyến!

Bây giờ 64 byte ít khủng khiếp

Một số thủ thuật gọn gàng: Kết hợp nhiều "$ (công cụ)" để tiết kiệm tiền. Chúng tôi chỉ muốn các số lẻ tạo ra $ _% 2 = 1 vì vậy chúng tôi không cần -eq cho nó. Bây giờ sử dụng lập chỉ mục danh sách thay vì if-other để lưu 5 byte. Cũng được loại bỏ một `n cho một byte khác. Tôi không thể lấy "$ c`0%" để phân tách var và zero để tuyến hiện tại ngắn hơn 1 byte so với việc dán hai chuỗi với nhau. Bây giờ với định dạng -f.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.