Torrent UI için ASCII sanatı


30

Sorun

UI'yi torrent programından yeniden oluşturun

Giriş yoksa, aşağıdakileri çıktı alın:

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

programlar için ilerleme:

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

#sülük programları için miktarprogress/10

Gerisi seedingtam ilerleme çubukları vardır.

kurallar

  • Lider ve takip eden yeni hatlara izin verilir.
  • Çıktı şeklini değiştirmediği sürece, öncü ve takip alanlarına izin verilir.
  • stdout ve çıktı için işlevler izin verilir.
  • Bayt cinsinden en kısa kod kazanır

5
.exeSellerden indirme , yapılacak en parlak şey değil.
RobAu,

14
@RobAu başka nasıl edinirim başka f.exebir yerde bir kopyasını bulamıyorum.
LiefdeWen

9
f.exeile gelir f_readme.txtyani "Yönetici olarak çalıştır" diyor. Mantıklı gibi.
Magic Octopus Urn

@RobAu Bilmiyordum, rutin olarak Linux dağıtımlarını indirdim, bunlar arasında yükleme yükleyicileri de dahil olmak üzere çalıştırılabilir dosyalar dahil, torrentler ile!
Pascal Cuoq,

Yanıtlar:


5

Kömür, 98 85 83 bayt

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

Bir şablonu kopyalamanın bana çok fazla kod kazandıracağını düşünmüştüm, ancak 9 sülük satırını düzeltmek için tek bir döngü kullanarak 13 byte kurtarmayı başardım. Açıklama:

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

(Yan not: Kömür'de bir böcek bulmuş gibiyim; |bir ASCII karakteri, ama aynı zamanda bir ok olarak sayılıyor Multiprint, bu yüzden yapamazsınız Multiprint.)


Değil bir hata yapabilirsiniz bunu kaçmak isterseniz
ASCII sadece

@ Yalnızca ASCII Ah, doğru, ne yazık ki, geliştirici bunu bilmiyor.
Neil,

Oh doğru, hatırlattığın için teşekkürler
ASCII-sadece

12

Perl 5 , 130 bayt

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

Çevrimiçi deneyin!

Golf edilebilecek birkaç bayt olmasını bekliyorum, ancak ilham kaynağım bitmedi.

Kısa açıklamalar:
$eayırma çizgisini ( +----------+----------+----------+) içerir; inşası dümdüz ( ("+"."-"x10)x3 ."+\n").
Ardından, karakterleri arasında şu anoktalara döndürürüm z:
Her zaman, yazdır "|$_.exe%4s |%-10s|%-9s |\n$e; bu, printfdizeler ( %s) ve sol dolgulu dizeler ( %-9s) için yer tutuculara sahip bir standarttır .
eğer $|--&&$@++<9doğruysa ( $|0 veya 1 içeren özel bir değişkendir ve onun değerini değiştirir eksiltim), sonra yüzde% 100 değildir ve baskı üç değerlerdir "$@0%","#"x$@,leeching( $@0%aslında sadece olduğunu $@ . "0" . "%"- hatırlıyorum $@daha önce artırılır edilmiştir) Aksi takdirde, üç değer "","#"x10,seeding).


6

Python 2 , 182 177 bayt

Koşulun biçimini değiştirerek 5 byte tıraş için @ officialaimm sayesinde.

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

Çevrimiçi deneyin!



1
Güzel! Bunu birkaç kez gördüm, ancak bu durumda kullanmayı düşünmedim. Cevabımı çözümünüzle güncelleyebilir miyim?
Fed

Tabii ki güncelleyebilirsiniz. ;)
officialaimm


6

SOGL V0.12 , 90 89 88 bayt

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

Burada dene!

Açıklama:

ē                                 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

SOGL yener .... Kömür ?!
Bay Xcoder

1
@ Mr.Xcoder En yaygın senaryo imo.
Outgolfer Erik,

Neden aşağı oy?
dzaima

4

Javascript, 232 230 228 226 bayt

(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}+`
  • @Stephen S sayesinde -2 bayt - Varsayılan fonksiyon parametrelerini kullanma
  • OP sayesinde -2 bayt - Bazı boşlukların değiştirilmesi
  • -Shaggy sayesinde -2 bayt - Yıkıcı alfabe dizesi

gösteri


Son satır eksik. Ayrıca, gönderim ve Metin Parçacığı farklıdır; Örneğin, "sülük" gönderimden yoksundur.
Shaggy

@Shaggy Cevap güncellendi - Takip
ettiğiniz

-2 byte hareket ederek sve pvarsayılan fonksiyon parametrelerine hareket ederek (), fonksiyon gövdesindeki s ihtiyacını ortadan kaldırır : Fiddle
Stephen

Emin değilim ama değiştiremezsiniz ${x?'leeching ':'seeding '}|aşağıdakine: ${x?'leeching':'seeding '} |?
LiefdeWen

@LiefdeWen Haklısın! Teşekkürler
Weedoze

3

PHP , 179 bayt

giriş olmadan

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

Çevrimiçi deneyin!

PHP , 176 bayt

giriş ile

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

Çevrimiçi deneyin!


İlk sürümden 9 byte'ı kaydedin: (-2) ' ++den kaldırın , ikinci parametre (-9) olarak ++$x&1kullanın ve daha önce ekleyin (+2)$y=++$x%4|$z>9?"":++$z."0%"printf$z:10
Titus

2

Python 3 , 255 bayt

Eminim bu yakında güncellenebilir:

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

Çevrimiçi deneyin!


yerine leeching |ve seeding |, içine değiştiremezsiniz leechingve seeding +" |"?
LiefdeWen

@LiefdeWen Korkarım ki 8 bayt daha uzun ...
Bay Xcoder

Hadi, "yakında güncelleniyor"? Neyse liste uyarısı ve / veya 246 bayt .
user202729

Ayrıca, //2*10sadece *5ve 10-(z-96)//2sadece 58-z//2.
user202729


2

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

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

Çevrimiçi deneyin!

@KevinCruijssen sayesinde -2 bayt!


Siz leechingve seedingdoğru hizadasınız.
LiefdeWen

Vay, hızlı yorum! Gönderi sonrası gördüm ve tamir etmekle meşguldüm: p
Olivier Grégoire

Bir çocukluk için özür dilerim, okunabilirliği iyi gördüğüm için çok heyecanlıyım
LiefdeWen

Sorunlu? Hayır, sen değildin :)
Olivier Grégoire

1
Dangit .. ben sabitleme ve beni alt ettik cevabım bir açıklama ekleyerek .. Ve 34 Bazı simularities bkz .. eklemeliyim kısa, fakat akıllı kullanımı bayt iken .formatve 0%, +1! BTW, cevabınızı s=zbunun yerine başlayarak biraz daha golf yapabilirsiniz , şöyle: 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 bayt )
Kevin Cruijssen

2

Python 2 , 172 170 162 bayt

-Lynn sayesinde 8 bayt

for i in range(2,28)+[id]:print('+'+'-'*10)*3+'+';a=i/2;b=i%2*(i<20);print('|'+'%-10s|'*3)%('%c.exe '%(95+i)+'%d0%%'%a*b,'#'*(a*b or 10),'sleeeedcihnign g'[b::2])

Çevrimiçi deneyin!


162 ve kaza ile çıkma: tio.run/…
Lynn

1

Braingolf , 673 655 bayt

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$_!&@;

Çevrimiçi deneyin!

Daha önce de söyledim ve tekrar söyleyeceğim: Braingolf ASCII sanatında kötü.

En azından bu, çıktıyı gerçekten kodlamak için gereken baytların yalnızca 1 / 3'ü.


1

V , 107 bayt

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

Çevrimiçi deneyin!

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

Japt , 121 bayt

;'++(-p10 +'+ ³
1
U+R+C£W=Yv ªY>20?10:Y¥1?1:V±1"|{X}.exe {4î hW>9?S:W+"0%"}|{10î h'#pW}|{10î hW<10?`äƒÊA`:`Ð:ˆg`}|"+R+U+R

Çevrimiçi deneyin!


1

Japt , 98 bayt

;27Æ4î+ ¬q-pU=10ÃíC¬£'|²¬q[X+".exe {W=Yu ©°T<U©T*U ?W+'%:P}"'#pW/UªU `äÊA Ð:g`¸g!W]m!hUî)q|})c ·

Nedeniyle messes kadar olduğu bir hatadan son sürümünde çalışmıyor 4î+, q-p10ve q|de, ama yaptığı işlerde işlemekf619c52 . Çevrimiçi test edin!


1

T-SQL, 238 bayt

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

Biçimlendirilmiş prosedür çözümü:

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

Döngüdeki her şey (SET'e kadar), ilk string değişmezinde bir satır sonu da dahil olmak üzere, aynı PRINT ifadesinin bir parçasıdır.

Set tabanlı bir çözüm üzerinde çalışıyorum (bir tablo oluştur ve doldur, sonra ondan SEÇ), ancak daha küçük olup olmayacağından emin değilim.


1

Java 8, 271 263 262 bayt

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

Bütün bu sorun hiçbir şey için ..>.>;)
( @ OliverGrégoire tarafından verilen kısa Java cevabı .)

Açıklama:

Burada dene.

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

Bir döngü charyerine bir yerine kullanın int. Daha sonra kullanmamanıza izin verir. tsıfırlanabilir ve +=sonra sıfırlanabilir . Hala daha kısa olmalı.
Olivier Grégoire

@ OlivierGrégoire Aslında 2 bayt daha uzun. int& (char)& t=...;vs char& {t=1;t*=...;}. Tabii bir şey kaçırmıyorsam.
Kevin Cruijssen

Hayır, hiçbir şeyi kaçırmıyorsun, bu benim fikrimdi. Kodunuzun diğer bölümlerini hesaba katmadım.
Olivier Grégoire

1

Düz TeX, 306 bayt

\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

Bazı açıklamalarla affedilmemiş:

\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 bayt

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

Çevrimiçi deneyin!


Burada yapılacak çok fazla golf yolu var, 90 baytın altına düştüğümde açıklama gönderecek.


1

Stax , 53 68 64 bayt

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

Koş ve hata ayıkla

Ambalajsız ve ağrılmamış gibi görünüyor.

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

Genişletilen çözümden boşlukları ve yorumları kaldırmak için "Golf" düğmesini kullanırsanız, yanlış bir şekilde ikiye katlanır }. Ekstra karakteri kaldırırsanız, düzgün çalışmaya devam eder.


1

C (gcc) , 217 211 bayt

-Katıcı sayesinde 6 bayt

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

Çevrimiçi deneyin!


0

/// , 264 bayt

/~/\/\///!/---~@/!!!-~$/@+@+@~</+
|~>/|
+~(/###~*/  ~}/|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{>$+

Çevrimiçi deneyin!

Bir sürü değişiklik tanımlayarak ve onlardan daha fazla karakter değiştirmek için bunları kullanarak çalışır.


0

Mathematica, 274 bayt

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

Kömür , 154 149 143 130 103 bayt

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

Çevrimiçi deneyin! (Ayrıntılı sürümüne bağlantı.)

  • Neil'in usta Charcoaling teknikleri sayesinde 27 byte tasarruf sağlar.

Kayık yükünün tamamını bayt kullanarak kaydedebilirsiniz \\r: Çevrimiçi deneyin! . Kukla işlemleri yaptığımı unutmayın, çünkü herhangi bir ayırıcı alamıyorum.
Neil

Ne yazık ki, başarılı olan baskıların topakları toplamaktan ve tüm dizgeyi yazdırmaktan daha kısa olduğu görülüyor. Numaradan bahsetmiyorum bile, \rbunu bilmiyordum.
Charlie

0

Ciklet , 150 bayt

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

Çevrimiçi deneyin!


0

Perl 6, 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 bayt

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

gsubSatır bölücüler ve ekim sıralarını oluşturmak için kullanır . lsülük satırları oluşturur. Yeniden adlandırma gsubve repdaha fazla bayt tasarrufu sağlar.


0

Jstx , 126 bayt

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

Çevrimiçi deneyin!

açıklama

►-          # 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.

Bunun çok daha kısa olacağına eminim.



0

Pascal (FPC) , 294 286 266 263 bayt

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.

Çevrimiçi deneyin!

Bu yüzden ... Hem öncü hem de sondaki newline ile bitirdim: D


0

PowerShell , 224 210 181 174 169 160 bayt

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

Çevrimiçi deneyin!

Şimdi 64 bayt daha az korkunç

Bazı temiz numaralar: Parenlerden tasarruf etmek için birçok "$ (stuff)" kombinasyonu. Yalnızca $ _% 2 = 1 yapan tek sayılar istiyoruz, bu yüzden bunun için -eq gerekmiyor. Şimdi 5 bayt kaydetmek için if-else yerine liste indeksleme kullanıyor. Ayrıca bir başka byte için bir n'den kurtulur. Var ve sıfırı ayırmak için "$ c0%" alamadım, bu nedenle mevcut yol iki dizgiyi birbirine yapıştırmaktan 1 bayt daha kısa oldu. Şimdi -f biçimlendirme ile.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.