Кто-нибудь здесь твердолобый поклонник Bethesda? Может быть, вы предпочитаете Obsidian Entertainment? Что ж, если вы - одна из тех вещей, то следующая картина должна быть вам относительно знакома.
Я взял на себя смелость подготовить довольно уникальный вызов ASCII-Art, так что вот первая подсказка о том, что я собираюсь сделать, чтобы вы делали:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: | |
| | | |
| | 0x01 | 0x0D | |
| | 0x02 | 0x0E | |
| | 0x03 | 0x0F | |
| | 0x04 | 0x10 | |
| | 0x05 | 0x11 | |
| | 0x06 | 0x12 | |
| | 0x07 | 0x13 | |
| | 0x08 | 0x14 | |
| | 0x09 | 0x15 | |
| | 0x0A | 0x16 | |
| | 0x0B | 0x17 | |
| | 0x0C | 0x18 | |
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Это очень простой (пустой) шаблон для дизайна терминала RobCo Fallout в чистом ASCII, ваша работа будет заключаться в следующем:
- Сначала создайте этот шаблон.
- Затем предоставляется список строк
l
и номер0 <= n <= 4
для его заполнения!
Две динамические части хакерского терминала:
Количество попыток
- Количество оставшихся попыток (обозначено полями с пробелами).
- Для этой задачи вы будете использовать
X
вместо■
.
- Для этой задачи вы будете использовать
Пароли
- Пароли, определенные
l
, перемежаются случайными печатными символами ASCII. - Пароли, как вы можете видеть на примере, могут переносить несколько строк (
NAMES
). - Все пароли на экране терминала должны иметь одинаковый шанс быть где угодно.
- Можно ожидать, что все пароли будут одинаковой длины, хотя это не имеет значения.
- Список символов используемых для разделения паролей:
!"#$%&'()*+/:;<=>?@[\]^_{|}
. - Все пароли
l
должны быть одинаковой длины. - ПАРОЛЯМ ДОЛЖНЫ ИМЕТЬ ПОТЕНЦИАЛ, КОТОРЫЙ ОБРАТИТСЯ ОТ ОБОИХ КОЛОНН.
- Это также относится к строкам, но только по старшему байтовому адресу (0x18-> 0x01 недопустимо).
- Поле для отображения паролей с обеих сторон имеет ширину 15 (с пробелом с обеих сторон).
- Вы можете предположить, что никакие слова
l
не будут длиннее этого.
- Вы можете предположить, что никакие слова
- Пароли только в алфавитном порядке, то есть только буквы.
Пример:
l = ["SMART","ENACT","SWORE","PITYS","SMELL","CARTS","RACES"]
, n = 4
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X X X | | # N = 4 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Если n = 2
на том же примере:
_____________________________________________________
/ \
| _____________________________________________ |
| | | |
| | Welcome to ROBCO Industries (TM) Termlink | |
| | Password Required | |
| | Attempts Remaining: X X | | # N = 2 drives these X's.
| | | |
| | 0x01 $?_/%$ENACT||"} | 0x0D TYS"_'$\#|^%&{} | |
| | 0x02 }:!*@{/_<"[]#>; | 0x0E #{!"^&\]'|}_[$% | |
| | 0x03 $%&'()*+/:;<\_' | 0x0F }|[(%SMELL/_$@( | |
| | 0x04 ^SMART(!@$*'^_@ | 0x10 []_#!"{|}'%$\&^ | |
| | 0x05 (*@#%}*(!%)^(_! | 0x11 %$}[!\#'^&_]{|" | |
| | 0x06 $%&'()*+/:;<_@) | 0x12 \SWORE|%'_!}\^" | |
| | 0x07 "/')=*%!&>#<:$+ | 0x13 ^{['&$|!_]%\"#} | |
| | 0x08 ;'*$&"(<%!#)RAC | 0x14 ']!|^#[$"_\}&{% | |
| | 0x09 ES:($&';%#+"<*/ | 0x15 @)($!CARTS*!@$_ | |
| | 0x0A ;'*$&"(<%!#)/+: | 0x16 !#%${"'}&[]^|_\ | |
| | 0x0B |'_!}$\%["#^{&] | 0x17 ]"_#$&}^%[{|\'! | |
| | 0x0C #{!"^&\]'|}_[PI | 0x18 _![&#{$%\^'|}"] | | # Notice how PITYS wrapped.
| |_____________________________________________| |
| |
\_______________________________________________________/
\_______________________________________/
Эти примеры были созданы вручную, поэтому распределение не рандомизировано, извините.
Это код-гольф , самый низкий счетчик байтов будет признан победителем. Я получу вознаграждение через 3 дня, если не было получено ответов на общую сумму 250 REP.
NAMES
пункт 2 пули? « Можно ожидать, что все пароли будут одинаковой длины, хотя это не имеет значения. » Или « Все пароли в l должны быть одинаковой длины. »? Может быть, я просто слепой (опять же!), Но я не вижу RACES
ни в одном из выводов - следует ли нам принять это, чтобы означать, что должна быть возможность не использовать пароль? Является ли Math.random
(и эквиваленты) достаточно случайным для целей этой задачи?