Arte ASCII para interfaz de usuario de torrent

30

Problema

Recrea la interfaz de usuario de un programa torrent

Sin entrada, salida lo siguiente:

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

El progreso de los programas son:

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

cantidad de #'s para programas de sanguijuelas esprogress/10

el resto son todos seedingcon barras de progreso completas.

Reglas

  • Nuevas líneas iniciales y finales permitidas.
  • Se permiten espacios iniciales y finales siempre que no cambie la forma de salida.
  • stdout y funciones para salida permitidas.
  • El código más corto en bytes gana
LiefdeWen
fuente
55
Sabes que descargar .exedesde torrents no es lo más brillante, ¿eh?
RobAu
14
@RobAu, ¿cómo podría obtenerlo? No f.exepuedo encontrar una copia de este en ningún otro lado.
LiefdeWen
99
f.exeviene con f_readme.txteso dice, "ejecutar como administrador". Parece legitimo.
Magic Octopus Urn
@RobAu No lo sabía, descargo rutinariamente distribuciones de Linux, que contienen ejecutables, incluidos algunos que instalan cargadores de arranque, ¡con torrentes!
Pascal Cuoq

Respuestas:

5

Carbón, 98 85 83 bytes

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

Pensé que copiar una plantilla me ahorraría mucho código, pero todo parece sumar de alguna manera, aunque logré guardar 13 bytes usando un solo bucle para arreglar las 9 filas sanguijuelas. Explicación:

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

(Nota al margen: parece que descubrí un error en el carbón; |es un personaje ASCII, pero también se cuenta como una flecha Multiprint, por lo que no puede Multiprinthacerlo).

Neil
fuente
No es un error, puedes escapar si quieres
solo ASCII
@ Solo ASCII Ah cierto, lamentablemente el desverbosificador no lo sabe.
Neil
Oh cierto, gracias por recordármelo
solo 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

Pruébalo en línea!

Espero que haya algunos bytes que se pueden jugar al golf, pero me he quedado sin inspiración.

Explicaciones cortas:
$econtiene la línea de separación ( +----------+----------+----------+); su construcción es sencilla ( ("+"."-"x10)x3 ."+\n").
Luego, paso sobre los caracteres de aa z:
Cada vez, imprimir "|$_.exe%4s |%-10s|%-9s |\n$e; Este es un estándar printfcon marcadores de posición para cadenas ( %s) y cadenas con relleno izquierdo ( %-9s).
si $|--&&$@++<9es verdadero ( $|es una variable especial que contiene 0 o 1, y decrementarlo alterna su valor), entonces el porcentaje no es 100%, y los tres valores en la impresión son "$@0%","#"x$@,leeching(en $@0%realidad es solo $@ . "0" . "%", recuerde que $@se incrementó antes) , de lo contrario, los tres valores son "","#"x10,seeding).

Dada
fuente
6

Python 2 , 182 177 bytes

Gracias a @officialaimm por eliminar 5 bytes al cambiar el formato de la condició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

Pruébalo en línea!

Fedone
fuente
1
177 bytes
officialaimm
1
¡Agradable! Lo he visto un par de veces, pero no pensé en usarlo en este caso. ¿Puedo actualizar mi respuesta con su solución?
Fedone
Por supuesto, puedes actualizarlo. ;)
officialaimm
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

Pruébalo aquí!

Explicación:

ē                                 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
fuente
SOGL late ... ¿Carbón?
Sr. Xcoder
1
@ Mr.Xcoder Es el escenario más común de la OMI.
Erik the Outgolfer
¿Por qué el voto negativo?
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 gracias a @Stephen S - Uso de parámetros de función predeterminados
  • -2 Bytes gracias a OP - Sustitución de algunos espacios
  • -2 Bytes gracias a @Shaggy - Destruyendo la cadena del alfabeto

Manifestación

Weedoze
fuente
Falta la última línea. Además, la sumisión y el fragmento difieren; "sanguijuelas" falta en la presentación, por ejemplo.
Shaggy
@Shaggy Respuesta actualizada - Gracias por el seguimiento
Weedoze
-2 bytes moviendo sy pa los parámetros de función predeterminados, eliminando la necesidad de ()s alrededor del cuerpo de la función: Fiddle
Stephen
No estoy seguro, pero ¿no puedes cambiar ${x?'leeching ':'seeding '}|a lo siguiente ${x?'leeching':'seeding '} |:?
LiefdeWen
@LiefdeWen ¡Tienes razón! Gracias
Weedoze
3

PHP , 179 bytes

sin entrada

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

Pruébalo en línea!

PHP , 176 bytes

con entrada

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

Pruébalo en línea!

Jörg Hülsermann
fuente
Guardar 9 bytes de la primera versión: eliminar ++de ++$x&1(-2), utilizar $y=++$x%4|$z>9?"":++$z."0%"como segundo printfparámetro (-9) e insertar $zantes :10(+2)
Titus
2

Python 3 , 255 bytes

Estoy seguro de que esto se puede jugar, actualizando pronto:

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

Pruébalo en línea!

Sr. Xcoder
fuente
en lugar de leeching |y seeding |, ¿no puedes cambiarlo a leechingy seeding +" |"?
LiefdeWen
@LiefdeWen Me temo que son 8 bytes más ...
Sr. Xcoder
Vamos, "actualización pronto"? De todos modos 246 bytes con lista splat y / o .
user202729
Además, //2*10es justo *5y 10-(z-96)//2es justo 58-z//2.
user202729
2

Rubí , 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]}

Pruébalo en línea!

Tinta de valor
fuente
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;}

Pruébalo en línea!

-2 bytes gracias a @KevinCruijssen!

Olivier Grégoire
fuente
Su leechingy seedingestán alineados a la derecha.
LiefdeWen
Wow, comentario rápido! Acabo de ver después de publicar y estaba ocupado arreglando: p
Olivier Grégoire
Perdón por ser un tonto, me emociona ver que se puede leer bien
LiefdeWen
¿Molestia? No, no estabas :)
Olivier Grégoire
1
Dangit ... Mientras estaba arreglando y agregando una explicación a mi respuesta, me ganaste ... Y 34 bytes más corto podría agregar ... Veo algunas simularidades, ¡pero uso inteligente de .formaty 0%, +1! Por cierto, puede jugar un poco más a su respuesta comenzando con s=z, en este caso: 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 bytes )
Kevin Cruijssen
2

Python 2 , 172 170 162 bytes

-8 bytes gracias a 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])

Pruébalo en línea!

Barra
fuente
162 y salir por accidente: tio.run/…
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$_!&@;

Pruébalo en línea!

Lo he dicho antes y lo diré de nuevo: Braingolf es malo en el arte ASCII.

Al menos esto es solo 1/3 de los bytes que se necesitarían para codificar realmente la salida

Skidsdev
fuente
1

V , 107 bytes

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

Pruébalo en línea!

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

Pruébalo en línea!

Oliver
fuente
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 ·

No funciona en la versión más reciente debido a un error que meta la pata 4î+, q-p10y q|, pero funciona en comprometenf619c52 . ¡Pruébelo en línea!

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

Solución de procedimiento, formateada:

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

Todo en el bucle (hasta el SET) es parte de la misma instrucción PRINT, incluido un salto de línea dentro del primer literal de cadena.

Estoy trabajando en una solución basada en conjuntos (crear y llenar una tabla, luego seleccionarla), pero no estoy seguro de si será más pequeña o no.

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

Todo este problema para nada ..>.>;)
( Respuesta más corta de Java por @ OliverGrégoire .)

Explicación:

Pruébalo aquí.

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
fuente
Use un en charlugar de un inten el bucle. Te permite no lanzarlo más tarde. tse puede inicializar y reinicializar a cero y +=luego. Todavía debería ser más corto.
Olivier Grégoire
@ OlivierGrégoire En realidad es 2 bytes más largo. int& (char)& t=...;vs char& {t=1;t*=...;}. A menos que me falte algo.
Kevin Cruijssen
No, no te estás perdiendo nada, esa fue mi idea. No tomé en cuenta otras partes de tu código.
Olivier Grégoire
1

TeX simple, 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 con algunas explicaciones:

\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
fuente
1

05AB1E , 120 bytes

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

Pruébalo en línea!


Hay demasiado golf para hacer aquí, publicaré una explicación cuando esté por debajo de 90 bytes.

Urna de pulpo mágico
fuente
1

Stax , 53 68 64 bytes

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

Ejecutar y depurarlo

Desempaquetado y sin golf se ve así.

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

Tenga en cuenta que si utiliza el botón "Golf" para eliminar espacios en blanco y comentarios de la solución expandida, duplica incorrectamente }. Si elimina el carácter adicional, continúa funcionando correctamente.

recursivo
fuente
1

C (gcc) , 217 211 bytes

-6 bytes gracias a 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);}

Pruébalo en línea!

gastropner
fuente
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{>$+

Pruébalo en línea!

Funciona definiendo un montón de reemplazos y usándolos para reemplazar más personajes de los que son.

Camarada SparklePony
fuente
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
fuente
0

Carbón , 154 149 143 130 103 bytes

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

Pruébalo en línea! (Enlace a la versión detallada).

  • 27 bytes ahorrados gracias a las técnicas maestras de carbón de Neil.
Charlie
fuente
Puede guardar una carga completa de bytes utilizando \\r: ¡ Pruébelo en línea! . Tenga en cuenta que he insertado operaciones ficticias porque no obtengo ningún separador.
Neil
@Neil, de hecho, parece que las impresiones sucesivas son más cortas que resumir fragmentos e imprimir toda la cadena. Sin mencionar el \rtruco, no lo sabía.
Charlie
0

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

Pruébalo en línea!

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

Se utiliza gsubpara crear los divisores de fila y las filas de inicialización. lgenera las filas sanguijuelas. Renombrando gsuby repguarda más bytes.

dragonita44
fuente
0

Jstx , 126 bytes

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

Pruébalo en línea!

Explicación

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

Estoy seguro de que esto puede ser significativamente más corto.

Quantum64
fuente
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!

Pruébalo en línea!

Un enfoque un poco más sofisticado para definir reemplazos. ¡Pruébalo interactivamente aquí!

Conor O'Brien
fuente
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.

Pruébalo en línea!

Entonces ... terminé con la nueva línea inicial y final: D

AlexRacer
fuente
0

PowerShell , 224 210 181 174 169 160 bytes

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

Pruébalo en línea!

Ahora 64 bytes menos terrible

Algunos trucos geniales: combinar una gran cantidad de "$ (cosas)" para ahorrar en los padres. Queremos solo números impares, lo que hace que $ _% 2 = 1, por lo que no necesitamos un -eq para ello. Ahora usa la indexación de listas en lugar de un if-else para guardar 5 bytes. También se deshace de una `n por otro byte. No pude obtener "$ c`0%" para separar la var y el cero, por lo que la ruta actual era 1 byte más corta que pegar dos cadenas juntas. Ahora con formato -f.

Veskah
fuente