проблема
Воссоздать пользовательский интерфейс из торрент-программы
Если нет ввода, выведите следующее:
+----------+----------+----------+
|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 |
+----------+----------+----------+
Прогресс для программ:
b=10% d=20% f=30% h=40% j=50% l=60% n=70% p=80% r=90%
количество #
для пиявки программprogress/10
все остальные seeding
с полным индикатором выполнения.
правила
- Разрешены ведущие и конечные переводы строк.
- Допускаются начальные и конечные пробелы, если они не изменяют форму вывода.
- стандартный вывод и функции для вывода разрешены.
- Самый короткий код в байтах побеждает
code-golf
string
ascii-art
kolmogorov-complexity
LiefdeWen
источник
источник
.exe
с торрентов не самая лучшая вещь, а?f.exe
не могу найти его копию где-нибудь еще.f.exe
идет с тем,f_readme.txt
что говорит: «Запуск от имени администратора». Выглядит вполне законно.Ответы:
Древесный уголь,
988583 байтаЯ думал, что копирование шаблона сэкономит мне много кода, но все это как-то складывается, хотя мне удалось сэкономить 13 байт, используя один цикл для исправления 9 строк пиявки. Объяснение:
(Примечание: похоже, я обнаружил ошибку в Charcoal;
|
это символ ASCII, но он также считается стрелкойMultiprint
, поэтому вы не можете этогоMultiprint
сделать.)источник
Perl 5 , 130 байт
Попробуйте онлайн!
Я ожидаю, что есть несколько байтов, которые можно сыграть в гольф, но у меня кончилось вдохновение.
Краткие пояснения:
$e
содержит разделительную линию (+----------+----------+----------+
); его конструкция прямолинейна (("+"."-"x10)x3 ."+\n"
).Затем я перебираю символы от
a
доz
:каждый раз печатаю
"|$_.exe%4s |%-10s|%-9s |\n$e
; это стандартprintf
с заполнителями для строк (%s
) и строк с левым отступом (%-9s
).Если
$|--&&$@++<9
это правда ($|
это специальная переменная, которая содержит 0 или 1, и уменьшение ее значения переключает ее значение), то процент не равен 100%, и три значения в печати являются"$@0%","#"x$@,leeching
($@0%
на самом деле просто$@ . "0" . "%"
- помните, что$@
было увеличено ранее) в противном случае три значения"","#"x10,seeding
).источник
Python 2 ,
182177 байтСпасибо @officialaimm за сокращение 5 байт путем изменения формата условия.
Попробуйте онлайн!
источник
SOGL V0.12 ,
908988 байтовПопробуй здесь!
Объяснение:
источник
Javascript,
232230228226 байтдемонстрация
Показать фрагмент кода
источник
s
иp
к параметрам функции по умолчанию, устраняя необходимость в()
s вокруг тела функции: Fiddle${x?'leeching ':'seeding '}|
к следующему:${x?'leeching':'seeding '} |
?PHP , 179 байт
без ввода
Попробуйте онлайн!
PHP , 176 байт
с вводом
Попробуйте онлайн!
источник
++
из++$x&1
(-2), используйте в$y=++$x%4|$z>9?"":++$z."0%"
качестве второгоprintf
параметра (-9) и вставьте$z
перед:10
(+2)Python 3 , 255 байт
Я уверен, что это может быть гольф, обновление в ближайшее время:
Попробуйте онлайн!
источник
leeching |
иseeding |
, вы не можете изменить его наleeching
иseeding
+" |"
?//2*10
справедливо*5
и10-(z-96)//2
справедливо58-z//2
.Рубин , 141 байт
Попробуйте онлайн!
источник
Java (OpenJDK 8) ,
244229228227226224222218217 байтПопробуйте онлайн!
-2 байта благодаря @KevinCruijssen!
источник
leeching
иseeding
правы..format
и0%
, +1! Кстати, вы можете сыграть в свой ответ еще немного, начавs=z
вместо этого, например: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 байт )Python 2 ,
172170162 байта-8 байт благодаря Линн
Попробуйте онлайн!
источник
Braingolf ,
673655 байтовПопробуйте онлайн!
Я говорил это раньше и скажу снова: Брейнгольф плохо разбирается в искусстве ASCII.
По крайней мере, это только 1/3 байтов, которые потребуются для жесткого кодирования вывода.
источник
V , 107 байтов
Попробуйте онлайн!
HexDump:
источник
Japt , 121 байт
Попробуйте онлайн!
источник
Japt , 98 байт
Не работает в последней версии из - за ошибки , которая портит
4î+
,q-p10
иq|
, но это делает работу в фиксацииf619c52
. Проверьте это онлайн!источник
T-SQL, 238 байт
Процедурное решение, отформатированное:
Все в цикле (вплоть до SET) является частью одного и того же оператора PRINT, включая разрыв строки внутри первого строкового литерала.
Я работаю над решением на основе множеств (создайте и заполните таблицу, затем ВЫБЕРИТЕ из нее), но я не уверен, будет ли она меньше или нет.
источник
Java 8,
271263262 байтаВсе это напрасно ..>.>;)
( Более короткий ответ Java от @ OliverGrégoire .)
Объяснение:
Попробуй это здесь.
источник
char
вместоint
в цикле. Это позволяет вам не разыгрывать его позже.t
можно инициализировать и повторно инициализировать до нуля, а+=
затем. Это все еще должно быть короче.int
&(char)
&t=...;
vschar
&{t=1;t*=...;}
. Если я что-то упустил.Простой TeX, 306 байт
Разгромленный с некоторыми объяснениями:
источник
05AB1E , 120 байтов
Попробуйте онлайн!
Здесь слишком много игры в гольф, я опубликую объяснение, когда у меня меньше 90 байтов.
источник
Stax ,
536864 байтаЗапустите и отладьте его
Распаковано и разряжено это выглядит так.
Обратите внимание, что если вы используете кнопку «Гольф» для удаления пробелов и комментариев из расширенного решения, это неправильно удваивает
}
. Если вы удалите лишний символ, он продолжит работать правильно.источник
C (gcc) ,
217211 байт-6 байт благодаря потолку
Попробуйте онлайн!
источник
/// , 264 байта
Попробуйте онлайн!
Работает, определяя кучу замен и используя их для замены большего количества символов, чем они есть.
источник
Mathematica, 274 байта
источник
Древесный уголь ,
154 149 143 130103 байтаПопробуйте онлайн! (Ссылка на подробную версию.)
источник
\\r
: Попробуйте онлайн! , Обратите внимание, что я вставил фиктивные операции, потому что я не получаю никаких разделителей.\r
уловке, я этого не знал.Жевательная резинка , 150 байт
Попробуйте онлайн!
источник
Perl6,
225219источник
Lua, 380 байт
Используется
gsub
для создания разделителей строк и начальных рядов.l
генерирует пиявки Переименованиеgsub
иrep
экономит больше байтов.источник
Jstx , 126 байт
Попробуйте онлайн!
объяснение
Я уверен, что это может стать значительно короче.
источник
/// , 226 байт
Попробуйте онлайн!
Немного более сложный подход к определению замен. Попробуйте в интерактивном режиме здесь!
источник
Паскаль (FPC) ,
294286266263 байтаПопробуйте онлайн!
Итак ... я закончил с лидирующей и тянущейся новой строкой: D
источник
PowerShell ,
224210181174169160 байтПопробуйте онлайн!
Теперь на 64 байта страшнее
Некоторые хитрые трюки: объединение большого количества «$ (вещи)», чтобы сэкономить на паренсе. Нам нужны только нечетные числа, которые составляют $ _% 2 = 1, поэтому нам не нужен -eq для него. Теперь используется индексирование списка вместо if-else для сохранения 5 байтов. Также избавляется от `n для другого байта. Я не мог получить "$ c`0%" для разделения переменной var и нуля, поэтому текущий маршрут был на 1 байт короче, чем склеивание двух строк. Теперь с форматированием -f.
источник