Art ASCII pour l'interface utilisateur torrent

30

Problème

Recréez l'interface utilisateur à partir d'un programme torrent

En l'absence d'entrée, sortez les éléments suivants:

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

les progrès des programmes sont les suivants:

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

la quantité de #pour les programmes de sangsue estprogress/10

les autres sont tous seedingdotés de barres de progression complètes.

Règles

  • Les nouvelles lignes de début et de fin sont autorisées.
  • Les espaces de début et de fin sont autorisés tant qu'ils ne changent pas la forme de la sortie.
  • stdout et fonctions de sortie autorisées.
  • Code le plus court en octets gagnant
LiefdeWen
la source
5
Vous savez que le téléchargement .exedepuis des torrents n'est pas la chose la plus brillante à faire, hein?
RobAu
14
@RobAu comment pourrais-je obtenir autrement je f.exene peux pas en trouver une copie ailleurs.
LiefdeWen
9
f.exevient avec f_readme.txtqui dit, "exécuter en tant qu'administrateur". Semble légitime.
Magic Octopus Urn
@RobAu Je ne savais pas, je télécharge régulièrement des distributions Linux, qui contiennent des exécutables dont certains qui installent des chargeurs de démarrage, avec des torrents!
Pascal Cuoq

Réponses:

5

Fusain, 98 85 83 octets

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

Je pensais que la copie d'un modèle me ferait économiser beaucoup de code mais tout semble s'additionner d'une manière ou d'une autre, même si j'ai réussi à économiser 13 octets en utilisant une seule boucle pour corriger les 9 lignes de sangsue. Explication:

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

(Remarque: je semble avoir découvert un bogue dans Charcoal; |est un caractère ASCII, mais il est également compté comme une flèche aux fins de Multiprint, donc vous ne pouvez pas Multiprint.)

Neil
la source
Pas un bug, vous pouvez y échapper si vous le souhaitez
ASCII uniquement
@ ASCII uniquement Ah oui, malheureusement, le déverbosificateur ne le sait pas.
Neil
Oh vrai, merci de me le rappeler
ASCII uniquement
12

Perl 5 , 130 octets

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

Essayez-le en ligne!

Je m'attends à ce qu'il y ait quelques octets qui peuvent être joués, mais j'ai manqué d'inspiration.

Explications courtes:
$econtient la ligne de séparation ( +----------+----------+----------+); sa construction est simple ( ("+"."-"x10)x3 ."+\n").
Ensuite, je passe en boucle les caractères de aà z:
Chaque fois, j'imprime "|$_.exe%4s |%-10s|%-9s |\n$e; il s'agit d'une norme printfavec des espaces réservés pour les chaînes ( %s) et les chaînes remplies à gauche ( %-9s).
si $|--&&$@++<9est vrai ( $|est une variable spéciale qui contient 0 ou 1, et sa décrémentation bascule sa valeur), alors le pourcentage n'est pas 100%, et les trois valeurs dans l'impression sont "$@0%","#"x$@,leeching( $@0%est en fait juste $@ . "0" . "%"- rappelez-vous que cela a $@été incrémenté plus tôt) sinon, les trois valeurs sont "","#"x10,seeding).

Dada
la source
6

Python 2 , 182 177 octets

Merci à @officialaimm d'avoir rasé 5 octets en changeant le format de la condition.

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

Essayez-le en ligne!

Fedone
la source
1
177 octets
officialaimm
1
Agréable! Je l'ai vu plusieurs fois, mais je n'ai pas pensé à l'utiliser dans ce cas. Puis-je mettre à jour ma réponse avec votre solution?
Fedone
Bien sûr, vous pouvez le mettre à jour. ;)
officialaimm
173 octets
Sebastian
6

SOGL V0.12 , 90 89 88 octets

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

Essayez-le ici!

Explication:

ē                                 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
la source
SOGL bat .... Charbon de bois?!
M. Xcoder
1
@ Mr.Xcoder C'est le scénario le plus courant imo.
Erik the Outgolfer le
Pourquoi le downvote?
dzaima
4

Javascript, 232 230 228 226 octets

(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 octets grâce à @Stephen S - Utilisation des paramètres de fonction par défaut
  • -2 octets grâce à OP - Remplacement de certains espaces
  • -2 octets grâce à @Shaggy - Chaîne d'alphabet destructrice

Démo

Weedoze
la source
La dernière ligne est manquante. De plus, la soumission et l'extrait diffèrent; "sangsue" est absent de la soumission, par exemple.
Shaggy
@Shaggy Réponse mise à jour - Merci pour le suivi
Weedoze
-2 octets en déplaçant set ppar défaut des paramètres de fonction, en supprimant la nécessité de ()s autour du corps de la fonction: Fiddle
Stephen
Je ne suis pas sûr mais ne pouvez-vous pas changer ${x?'leeching ':'seeding '}|comme suit ${x?'leeching':'seeding '} |:?
LiefdeWen
@LiefdeWen Vous avez raison! Merci
Weedoze
3

PHP , 179 octets

sans entrée

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

Essayez-le en ligne!

PHP , 176 octets

avec entrée

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

Essayez-le en ligne!

Jörg Hülsermann
la source
Enregistrer 9 octets de la première version: supprimer ++de ++$x&1(-2), utiliser $y=++$x%4|$z>9?"":++$z."0%"comme deuxième printfparamètre (-9) et insérer $zavant :10(+2)
Titus
2

Python 3 , 255 octets

Je suis sûr que cela peut être joué, mise à jour bientôt:

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

Essayez-le en ligne!

M. Xcoder
la source
au lieu de leeching |et seeding |, ne pouvez-vous pas le changer en leechinget seeding +" |"?
LiefdeWen
@LiefdeWen J'ai peur que ce soit 8 octets de plus ...
M. Xcoder
Allez, "mise à jour bientôt"? Quoi qu'il en soit 246 octets avec splat de liste et et / ou .
user202729
Aussi, //2*10c'est juste *5et 10-(z-96)//2c'est juste 58-z//2.
user202729
2

Rubis , 141 octets

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

Essayez-le en ligne!

Encre de valeur
la source
2

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

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

Essayez-le en ligne!

-2 octets grâce à @KevinCruijssen!

Olivier Grégoire
la source
Vos leechinget seedingsont alignés à droite.
LiefdeWen
Wow, commentaire rapide! Je viens de voir après avoir posté et j'étais occupé à le réparer: p
Olivier Grégoire
Désolé d'être une nuissance, je suis juste excité de voir bien lisible
LiefdeWen
Nuisance? Non, tu ne l'étais pas :)
Olivier Grégoire
1
Dangit .. Pendant que je corrigeais et ajoutais une explication à ma réponse, vous m'avez battu dessus. Et 34 octets plus court, je pourrais ajouter .. Je vois quelques simularités, mais une utilisation intelligente des .formatet 0%, +1! Btw, vous pouvez jouer un peu plus à votre réponse en commençant par à la s=zplace, comme ceci: 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 octets )
Kevin Cruijssen
2

Python 2 , 172 170 162 octets

-8 octets grâce à 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])

Essayez-le en ligne!

Barre
la source
162 et sortie via crash: tio.run/…
Lynn
1

Braingolf , 673 655 octets

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

Essayez-le en ligne!

Je l'ai déjà dit et je le redis: Braingolf est mauvais en art ASCII.

Au moins, cela ne représente que 1/3 des octets nécessaires pour coder en dur la sortie

Skidsdev
la source
1

V , 107 octets

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

Essayez-le en ligne!

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
la source
1

Japt , 121 octets

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

Essayez-le en ligne!

Oliver
la source
1

Japt , 98 octets

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

Ne fonctionne pas dans la dernière version en raison d'un bug qui salit 4î+, q-p10et q|, mais il fonctionne à commettref619c52 . Testez-le en ligne!

ETHproductions
la source
1

T-SQL, 238 octets

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

Solution procédurale, formatée:

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

Tout dans la boucle (jusqu'au SET) fait partie de la même instruction PRINT, y compris un saut de ligne à l'intérieur du premier littéral de chaîne.

Je travaille sur une solution basée sur un ensemble (créer et remplir une table, puis sélectionner à partir d'elle), mais je ne sais pas si elle va être plus petite ou non.

BradC
la source
1

Java 8, 271 263 262 octets

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

Tous ces ennuis pour rien ..>.>;)
( Réponse Java plus courte par @ OliverGrégoire .)

Explication:

Essayez-le ici.

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
la source
Utilisez un charau lieu d'un intdans la boucle. Il vous permet de ne pas le lancer plus tard. tpeut être initialisé et réinitialisé à zéro et +=ensuite. Il devrait être encore plus court.
Olivier Grégoire
@ OlivierGrégoire C'est en fait 2 octets de plus. int& (char)& t=...;vs char& {t=1;t*=...;}. A moins que je manque quelque chose.
Kevin Cruijssen
Non, vous ne manquez de rien, c'était mon idée. Je n'ai pas pris en compte d'autres parties de votre code.
Olivier Grégoire
1

TeX ordinaire, 306 octets

\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

Non golfé avec quelques explications:

\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
la source
1

05AB1E , 120 octets

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

Essayez-le en ligne!


Il y a beaucoup trop de golf à faire ici, affichera une explication lorsque je serai en dessous de 90 octets.

Urne de poulpe magique
la source
1

Stax , 53 68 64 octets

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

Exécuter et déboguer

Déballé et non golfé, il ressemble à ceci.

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

Notez que si vous utilisez le bouton "Golf" pour supprimer les espaces et les commentaires de la solution développée, il double incorrectement le }. Si vous supprimez le caractère supplémentaire, il continue de fonctionner correctement.

récursif
la source
1

C (gcc) , 217 211 octets

-6 octets grâce au plafond

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

Essayez-le en ligne!

gastropner
la source
0

/// , 264 octets

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

Essayez-le en ligne!

Fonctionne en définissant un tas de remplacements et en les utilisant pour remplacer plus de caractères qu'ils ne le sont.

Camarade SparklePony
la source
0

Mathematica, 274 octets

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
la source
0

Fusain , 1541491431330103 octets

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

Essayez-le en ligne! (Lien vers la version détaillée.)

  • 27 octets économisés grâce aux techniques de maître de charbon de Neil.
Charlie
la source
Vous pouvez enregistrer un bateau entier d'octets en utilisant \\r: Essayez-le en ligne! . Notez que j'ai inséré des opérations factices car je n'obtiens aucun séparateur.
Neil
@Neil en effet, il semble que les impressions successives soient plus courtes que de résumer des morceaux et d'imprimer la chaîne entière. Sans parler de l' \rastuce, je ne le savais pas.
Charlie
0

Bubblegum , 150 octets

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

Essayez-le en ligne!

LyricLy
la source
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
la source
0

Lua, 380 octets

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

Permet gsubde créer les séparateurs de lignes et les lignes de départ. lgénère les rangées de sangsues. Renommer gsubet repenregistre plus d'octets.

dragonite44
la source
0

Jstx , 126 octets

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

Essayez-le en ligne!

Explication

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

Je suis sûr que cela peut devenir beaucoup plus court.

Quantum64
la source
0

/// , 226 octets

/;/ "//:/$$$+//,/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!

Essayez-le en ligne!

Une approche un peu plus sophistiquée pour définir les remplacements. Essayez-le interactivement ici!

Conor O'Brien
la source
0

Pascal (FPC) , 294 286 266 263 octets

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.

Essayez-le en ligne!

Donc ... je me suis retrouvé avec une nouvelle ligne de tête et de fin: D

AlexRacer
la source
0

PowerShell , 224 210 181 174 169 160 octets

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

Essayez-le en ligne!

Maintenant 64 octets de moins terrible

Quelques astuces: combiner beaucoup de "$ (stuff)" pour économiser sur les parens. Nous voulons seulement des nombres impairs qui font $ _% 2 = 1 donc nous n'avons pas besoin d'un -eq pour cela. Utilise désormais l'indexation de liste au lieu d'un if-else pour économiser 5 octets. Supprime également un `n pour un autre octet. Je n'ai pas pu obtenir "$ c`0%" pour séparer le var et le zéro, donc l'itinéraire actuel était 1 octet plus court que de coller deux chaînes ensemble. Maintenant avec le formatage -f.

Veskah
la source