J, 171 байт
(+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
Ой ... мой мозг болит ... Попробуй онлайн!
Вот так вы можете увидеть все это одной строкой (хотя она не будет работать с переносами строк).
(+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*
_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
Гарантируется работа только с J-версией j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
в указанном порядке. (Только первые 12 символов имеют значение.)
объяснение
Большая часть программы посвящена постоянному поколению. С заменой этих констант на их значения программа выглядит так:
(62){.".(':',~(12){(9)!:(14)''),',',(":(65),(97),48),'+/',('.',~(10){(9)!:(14)''),":26
С некоторыми скобками удалены, а некоторые числа стали лучше:
62{.".(':',~12{9!:14''),',',(":65 97 48),'+/',('.',~10{9!:14''),":26
Это состоит из группы ,
и ,~
s, которые добавляют и дополняют аргументы. Вот отдельные значения:
":26
('.',~10{9!:14'')
'+/'
(":65 97 48)
','
(':',~12{9!:14'')
1
это 26
как строка.
9!:14''
генерирует следующую строку в TIO:
j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
с 2
, мы получаем 10
th-й символ ( i
из linux
) и добавляем в .
его конец, получая i.
.
3
и 5
говорят сами за себя.
4
список чисел 65 97 48
в виде строки
6
аналогично 2
, за исключением того, что это 12
символ th ( u
from linux
) и добавляет :
в конец, уступая u:
.
Это все вместе дает u:,65 97 48+/i.26
. ".
оценивает это, давая нам:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;<=>?@ABCDEFGHI
(Примечание: +/
это табличное дополнение.)
Затем, с помощью 62{.
, мы берем первые 62
символы из этого, давая нам ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
.