ASCII-Grafik für die Torrent-Benutzeroberfläche

30

Problem

Erstellen Sie die Benutzeroberfläche aus einem Torrent-Programm neu

Wenn keine Eingabe erfolgt, geben Sie Folgendes aus:

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

Fortschritte für Programme sind:

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

Menge von #'s für Blutegelprogramme istprogress/10

Der Rest ist seedingmit vollen Fortschrittsbalken versehen.

Regeln

  • Führende und nachfolgende Zeilenumbrüche sind erlaubt.
  • Führende und nachfolgende Leerzeichen sind zulässig, solange sich die Form der Ausgabe nicht ändert.
  • Standardausgabe und Funktionen für die Ausgabe erlaubt.
  • Kürzester Code in Bytes gewinnen
LiefdeWen
quelle
5
Wissen Sie, dass das Herunterladen .exevon Torrents nicht das beste ist?
RobAu
14
@RobAu, wie ich es sonst bekommen würde, f.exekann nirgendwo anders eine Kopie finden.
LiefdeWen
9
f.exekommt mit f_readme.txtdem Spruch "Als Administrator ausführen". Klingt plausibel.
Magic Octopus Urn
@RobAu Ich wusste es nicht, ich lade regelmäßig Linux-Distributionen herunter, die ausführbare Dateien enthalten, einschließlich einiger, die Bootloader installieren, mit Torrents!
Pascal Cuoq

Antworten:

5

Charcoal, 98 85 83 Bytes

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

Ich dachte, das Kopieren einer Vorlage würde mir eine Menge Code sparen, aber es scheint sich alles irgendwie zu summieren, obwohl ich es geschafft habe, 13 Bytes zu sparen, indem ich eine einzelne Schleife verwendet habe, um die 9 Leeching-Zeilen zu reparieren. Erläuterung:

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

(Randnotiz: Ich habe anscheinend einen Fehler in Charcoal entdeckt; |ist ein ASCII-Zeichen, aber es wird auch als Pfeil für die Zwecke von gezählt Multiprint, sodass Sie es nicht Multiprintkönnen.)

Neil
quelle
Kein Fehler, du kannst es umgehen, wenn du willst
ASCII
@ ASCII-only Ah richtig, leider weiß der Deverbosifier das nicht.
Neil
Oh ja, danke, dass du mich daran erinnert hast
ASCII
12

Perl 5 , 130 Bytes

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

Probieren Sie es online!

Ich gehe davon aus, dass ein paar Bytes zum Golfen zur Verfügung stehen, aber mir ist die Inspiration ausgegangen.

Kurze Erläuterungen:
$eenthält die Trennlinie ( +----------+----------+----------+); Die Konstruktion ist einfach ( ("+"."-"x10)x3 ."+\n").
Dann durchlaufe ich die Zeichen von abis z:
Jedes Mal drucken "|$_.exe%4s |%-10s|%-9s |\n$e; Dies ist ein Standard printfmit Platzhaltern für Strings ( %s) und links aufgefüllte Strings ( %-9s).
Wenn $|--&&$@++<9true ist ( $|ist eine spezielle Variable, die entweder 0 oder 1 enthält und deren Wert durch Verringern umgeschaltet wird), dann ist der Prozentsatz nicht 100% und die drei Werte im Ausdruck sind "$@0%","#"x$@,leeching( $@0%eigentlich nur $@ . "0" . "%"- denken Sie daran, dass sie $@früher erhöht wurden) Ansonsten sind die drei Werte "","#"x10,seeding).

Dada
quelle
6

Python 2 , 182 177 Bytes

Vielen Dank an @officialaimm für das Abschneiden von 5 Bytes durch Ändern des Formats der Bedingung.

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

Probieren Sie es online!

Fedone
quelle
1
177 Bytes
offiziell am
1
Nett! Ich habe das ein paar Mal gesehen, habe aber nicht daran gedacht, es in diesem Fall zu verwenden. Darf ich meine Antwort mit Ihrer Lösung aktualisieren?
Fedone
Natürlich können Sie es aktualisieren. ;)
offiziell am
173 Bytes
Sebastian
6

SOGL V0.12 , 90 89 88 Bytes

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

Probieren Sie es hier aus!

Erläuterung:

ē                                 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
dzaima
quelle
SOGL schlägt ... Holzkohle ?!
Mr. Xcoder
1
@ Mr.Xcoder Es ist das gängigste Szenario imo.
Erik der Outgolfer
Warum die Gegenstimme?
Dzaima
4

Javascript, 232 230 228 226 Bytes

(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 Bytes dank @Stephen S - Verwendung von Standardfunktionsparametern
  • -2 Bytes dank OP - Ersetzen einiger Leerzeichen
  • -2 Bytes dank @Shaggy - Destructuring alphabet string

Demo

Weedoze
quelle
Die letzte Zeile fehlt. Auch die Vorlage und das Snippet unterscheiden sich; "leeching" fehlt beispielsweise in der Einreichung.
Shaggy
@ Shaggy Antwort aktualisiert - Vielen Dank für die folgen
Weedoze
-2 Bytes durch Verschieben von sund pzu den Standardfunktionsparametern, wodurch die Notwendigkeit von ()s um den Funktionskörper herum beseitigt wird: Fiddle
Stephen
Ich bin mir nicht sicher, aber können Sie nicht ${x?'leeching ':'seeding '}|zu Folgendem wechseln ${x?'leeching':'seeding '} |:?
LiefdeWen
@LiefdeWen Du hast recht! Danke
Weedoze
3

PHP , 179 Bytes

ohne Eingabe

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

Probieren Sie es online!

PHP , 176 Bytes

mit Eingabe

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

Probieren Sie es online!

Jörg Hülsermann
quelle
Speichere 9 Bytes von der ersten Version: entferne ++von ++$x&1(-2), verwende $y=++$x%4|$z>9?"":++$z."0%"als zweiten printfParameter (-9) und füge $zvor :10(+2) ein
Titus
2

Python 3 , 255 Bytes

Ich bin mir sicher, dass dies in Kürze aktualisiert werden kann:

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

Probieren Sie es online!

Mr. Xcoder
quelle
Kannst du es nicht statt leeching |und seeding |in leechingund ändern seeding +" |"?
LiefdeWen
@LiefdeWen Ich fürchte, das ist 8 Bytes länger ...
Mr. Xcoder
Komm schon, "aktualisiere bald"? Wie auch immer 246 Byte mit Liste Splat und und / oder .
user202729
Ist auch //2*10gerecht *5und 10-(z-96)//2ist gerecht 58-z//2.
user202729
2

Ruby , 141 Bytes

puts s=(?++?-*10)*3+?+,(?a..?z).map{|c|["|#{c}.exe%4s |%-10s|%-9s |"%(c.ord%2>0||($.+=1)>9?["",?#*10,:seeding]:["#$.0%",?#*$.,:leeching]),s]}

Probieren Sie es online!

Wert Tinte
quelle
2

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

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

Probieren Sie es online!

-2 Bytes dank @KevinCruijssen!

Olivier Grégoire
quelle
Ihr leechingund seedingseid richtig ausgerichtet.
LiefdeWen
Wow, schneller Kommentar! Ich habe es gerade nach dem Posten gesehen und war damit beschäftigt, es zu reparieren: p
Olivier Grégoire
Es tut mir leid, dass ich so eine Neuerung bin, aber ich freue mich, wenn ich gut lesbar
sehe
Belästigung? Nein, das warst du nicht :)
Olivier Grégoire
1
Dangit .. Während ich meine Antwort reparierte und eine Erklärung hinzufügte, haben Sie mich geschlagen .. Und 34 Bytes kürzer könnte ich hinzufügen .. Ich sehe einige Ähnlichkeiten, aber eine kluge Verwendung der .formatund 0%, +1! Übrigens, Sie können Ihre Antwort noch ein wenig weiter s=zo->{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;}
ausarbeiten,
2

Python 2 , 172 170 162 Bytes

-8 Bytes dank Lynn

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

Probieren Sie es online!

Stange
quelle
162 und über Absturz beenden
Lynn
1

Braingolf , 673 655 Bytes

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

Probieren Sie es online!

Ich habe es schon einmal gesagt und ich sage es noch einmal: Braingolf ist schlecht in ASCII-Kunst.

Zumindest ist dies nur ein Drittel der Bytes, die benötigt würden, um die Ausgabe tatsächlich fest zu codieren

Skidsdev
quelle
1

V , 107 Bytes

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

Probieren Sie es online!

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#
DJMcMayhem
quelle
1

Japt , 121 Bytes

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

Probieren Sie es online!

Oliver
quelle
1

Japt , 98 Bytes

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

Funktioniert in der neuesten Version nicht, da ein Fehler auftritt, der zu Problemen 4î+führt q-p10, und q|, aber es funktioniert in Commitf619c52 . Online testen!

ETHproductions
quelle
1

T-SQL, 238 Bytes

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

Verfahrenslösung, formatiert:

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

Alles in der Schleife (bis zum SET) ist Teil derselben PRINT-Anweisung, einschließlich eines Zeilenumbruchs im ersten Zeichenfolgenliteral.

Ich arbeite an einer satzbasierten Lösung (erstelle eine Tabelle und fülle sie auf, dann wähle sie aus), bin mir aber nicht sicher, ob sie kleiner wird oder nicht.

BradC
quelle
1

Java 8, 271 263 262 Bytes

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

All diese Probleme für nichts ..>.>;)
( Kürzere Java-Antwort von @ OliverGrégoire .)

Erläuterung:

Probieren Sie es hier aus.

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
Kevin Cruijssen
quelle
Verwenden Sie a charanstelle von a intin der Schleife. Sie können es später nicht mehr wirken. tkann initialisiert und auf Null und +=danach neu initialisiert werden. Es sollte noch kürzer sein.
Olivier Grégoire
@ OlivierGrégoire Es ist eigentlich 2 Bytes länger. int& (char)& t=...;vs char& {t=1;t*=...;}. Es sei denn, ich vermisse etwas.
Kevin Cruijssen
Nein, du vermisst nichts, das war meine Idee. Ich habe einige andere Teile Ihres Codes nicht berücksichtigt.
Olivier Grégoire
1

Plain TeX, 306 Bytes

\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

Ungolfed mit einigen Erklärungen:

\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
Siracusa
quelle
1

05AB1E , 120 Bytes

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

Probieren Sie es online!


Hier gibt es viel zu viel zu golfen. Eine Erklärung wird veröffentlicht, wenn ich unter 90 Bytes bin.

Magische Kraken-Urne
quelle
1

Stax , 53 68 64 Bytes

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

Führen Sie es aus und debuggen Sie es

Ausgepackt und ungolfed sieht es so aus.

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

Beachten Sie, dass, wenn Sie die Schaltfläche "Golf" verwenden, um Leerzeichen und Kommentare aus der erweiterten Lösung zu entfernen, das Symbol fälschlicherweise verdoppelt wird }. Wenn Sie das zusätzliche Zeichen entfernen, funktioniert es weiterhin ordnungsgemäß.

rekursiv
quelle
1

C (gcc) , 217 211 Bytes

-6 bytes dank ceilingcat

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

Probieren Sie es online!

Gastropner
quelle
0

/// , 264 Bytes

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

Probieren Sie es online!

Definiert eine Reihe von Ersetzungen und ersetzt damit mehr Zeichen als sie sind.

Genosse SparklePony
quelle
0

Mathematica, 274 Bytes

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}]
J42161217
quelle
0

Charcoal , 154 149 143 130 103 Bytes

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

Probieren Sie es online! (Link zur ausführlichen Version.)

  • Dank Neils Charcoaling-Meistertechniken werden 27 Byte gespart.
Charlie
quelle
Sie können eine ganze Schiffsladung Bytes sparen, indem Sie Folgendes verwenden \\r: Probieren Sie es online aus! . Beachten Sie, dass ich Dummy-Operationen eingefügt habe, weil ich keine Trennzeichen erhalte.
Neil
@Neil In der Tat scheint es, dass aufeinanderfolgende Drucke kürzer sind, als Brocken zusammenzufassen und die gesamte Zeichenfolge zu drucken. Ganz zu schweigen von dem \rTrick, das wusste ich nicht.
Charlie
0

Bubblegum , 150 Bytes

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

Probieren Sie es online!

Textlich
quelle
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
bb94
quelle
0

Lua, 380 Bytes

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

Dient gsubzum Erstellen der Zeilenteiler und der Seeding-Zeilen. lerzeugt die Blutegelreihen. Umbenennen gsubund repspart mehr Bytes.

dragonite44
quelle
0

Jstx , 126 Bytes

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

Probieren Sie es online!

Erläuterung

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

Ich bin sicher, das kann deutlich kürzer werden.

Quantum64
quelle
0

/// 226 Bytes

/;/ "//:/$$$+//,/0% |//*/###//)/   //(/!
|//'/,*//&/.exe //$/+----------//"/ |leeching  |
:
|//!/&) |***#|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!

Probieren Sie es online!

Ein etwas ausgefeilterer Ansatz zur Definition von Ersetzungen. Probieren Sie es hier interaktiv aus!

Conor O'Brien
quelle
0

Pascal (FPC) , 294 286 266 263 Bytes

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.

Probieren Sie es online!

Also ... habe ich am Ende sowohl den führenden als auch den nachfolgenden Zeilenumbruch erhalten: D

AlexRacer
quelle
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

Probieren Sie es online!

Jetzt 64 Bytes weniger schrecklich

Einige nette Tricks: Kombiniere eine Menge "$ (Zeugs)", um bei den Eltern zu sparen. Wir wollen nur ungerade Zahlen, was $ _% 2 = 1 ergibt, also brauchen wir kein -eq dafür. Verwendet jetzt die Listenindizierung anstelle eines If-else, um 5 Bytes zu sparen. Entfernt auch ein `n für ein anderes Byte. Ich konnte "$ c`0%" nicht dazu bringen, var und Null zu trennen, daher war die aktuelle Route 1 Byte kürzer als das Zusammenkleben zweier Zeichenfolgen. Jetzt mit -f Formatierung.

Veskah
quelle