В, 8 7 байт
1 байт сэкономлен благодаря @DJMcMayhem, поместив все это в один оператор регулярного выражения.
linux
Попробуйте онлайн!
Выходы:
i
Примечание: 10
is нет 2
or j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
, это 9!:14''
Шестнадцатеричный дамп:
26
Объяснение
1
Теперь вывод выглядит так:
(':',~12{9!:14'')
Нам нужно удалить все небуквенно-цифровые символы и ','
(since it is not included in (":65 97 48)
), так что давайте сделаем это, используя регулярное выражение
'+/'
||answer||
Хаскелл, 75 72 63 58 56 байт
('.',~10{9!:14'')
Попробуйте онлайн! Позвонить с ":26
. Output:
,~
Спасибо xnor, который предложил ,
и 62{.".(':',~12{9!:14''),',',(":65 97 48),'+/',('.',~10{9!:14''),":26
как двухбайтовые имена переменных вместо (62){.".(':',~(12){(9)!:(14)''),',',(":(65),(97),48),'+/',('.',~(10){(9)!:(14)''),":26
or similar, saving 9 bytes. I especially like how j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
нарушает подсветку синтаксиса. И еще раз спасибо xnor за обобщение диапазонов, сэкономив еще 4 байта.
Редактировать: Я узнал, что символы Юникода разрешены в качестве идентификаторов в Haskell, поэтому, например. (+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*
_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
, (+:>.+:^^*_){.".(':',~(+:+:>.^*_){(*:>.^*_)!:(+:<.^+:*_)''),',',(":(>:*:+:+:+:*_),(<.^<:^<:^*_),<:*:<.^+:*_),'+/',('.',~(+:<.+:^*_){(*:>.^*_)!:(+:<.^+:*_)''),":+:<.*:>:^*_
, ... также могут использоваться как двухбайтовые идентификаторы. Поскольку в программе остался один трехбайтовый идентификатор, я заменил его на (((((()()()){}){}){}){}) # push 48
(((()()())){}{}) # push 9
{({}[()]< # for 9..0
(({})()) # pop a, push a, push a+1
>)}{} # end for
(({})(()()()()){}) # pop a, push a, push a + 8
(((((()()()){}){}){}())< # push 26 and save a 26 for later
{({}[()]< # for 26..0
(({})()) # pop a, push a, push a+1
>)}{} # end for
(({})(()()()){}()) # pop a, push a, push a + 7
>) # push that 26 that we held
{({}[()]< # for 26..0
(({})()) # pop a, push a, push a+1
>)}{} # end for
, saving another 2 bytes.
Объяснение:
(((((()()()){}){}){}){})(((()()())){}{}){({}[()]<(({})())>)}{}(({})(()()()()){})(((((()()()){}){}){}())<{({}[()]<(({})())>)}{}(({})(()()()){}())>){({}[()]<(({})())>)}{}
и -A
являются допустимыми именами переменных. Из спецификация языка:
Идентификатор состоит из буквы, за которой следуют ноль или более букв, цифр, символов подчеркивания и одинарных кавычек. [...] Подчеркнуть, f=
(À=(Á=!($={})+(Ø=""))[Â=_=+[]],Ã=(Ä=!_+Ø)[Å=++_],Æ=(Ç=$+Ø)[_],È=(É=$.$+Ø)[_],Ê=Ä[Ë=++_],Ì=Ä[Í=++_],Î=++_,Ï=Ç[Ð=++_],Ñ=Ç[Ò=++_],Ó=++_,$=$[Ô=Ï+Æ+È+Á[Í]+Ñ+Ã+Ê+Ï+Ñ+Æ+Ã][Ô],$($((Õ=Ã+Ä[Í]+Ñ+Ê+Ã+È)+`"${Ù=($=À)+Æ+(Ö=Ô[Ð])}($ ${[Æ+$+"[["+Î+ ++_,Ø+Ð+_+"],["+Ò+Ð,Ø+ ++_+Å+"],["+_+Ó,Ú=Ø+Å+Ë+Í]}]])${Ù}(_=$[Â];_<$[Å];)Ø+=${(_="\\")+Ú+Ñ+Ö+(Û=(_=_+Å)+Ð)+Å+Ô[Ë]+_+Î+Ó}.${$+Ö+Æ+Û+Ð+_+Â+Í+Û+Â+Á[Å]+Ö+_+Â+Í+Æ+É[Ë]+Ì}(_++);${Õ} Ø"`)()))
console.log(f())
, is treated as a lower-case letter, and can occur wherever a lower-case letter can. However, for
all сам по себе является зарезервированным идентификатором, используемым в качестве подстановочного знака в шаблонах.
Таким образом, код эквивалентен
eval()
В понимании списка Function()
gets bound to Object()
and $={}[Ô="constructor"][Ô]
$(("return"+`"encoded script"`)())
to constructor
( return
is equivalent to {}+"" -> "[object Object]"
!{}+"" -> "false"
!+[]+"" -> "true"
{}[{}]+"" -> "undefined"
, поэтому сопоставление с образцом выполнено успешно). Тогда диапазон À=(Á=!($={})+(Ø=""))[Â=_=+[]]
Ã=(Ä=!_+Ø)[Å=++_]
Æ=(Ç=$+Ø)[_]
È=(É=$.$+Ø)[_]
Ê=Ä[Ë=++_]
Ì=Ä[Í=++_]
Î=++_
Ï=Ç[Ð=++_]
Ñ=Ç[Ò=++_]
Ó=++_
$=$[Ô=Ï+Æ+È+Á[Í]+Ñ+Ã+Ê+Ï+Ñ+Æ+Ã][Ô]
// function that returns string
$($((Õ=Ã+Ä[Í]+Ñ+Ê+Ã+È)+`"${Ù=($=À)+Æ+(Ö=Ô[Ð])}($ ${[Æ+$+"[["+Î+ ++_,Ø+Ð+_+"],["+Ò+Ð,Ø+ ++_+Å+"],["+_+Ó,Ú=Ø+Å+Ë+Í]}]])${Ù}(_=$[Â];_<$[Å];)Ø+=${(_="\\")+Ú+Ñ+Ö+(Û=(_=_+Å)+Ð)+Å+Ô[Ë]+_+Î+Ó}.${$+Ö+Æ+Û+Ð+_+Â+Í+Û+Â+Á[Å]+Ö+_+Â+Í+Æ+É[Ë]+Ì}(_++);${Õ} Ø"`)())
builds the string of all characters greater equal ""
:
Ø
Для каждого персонажа for($ of[[48,58],[65,91],[97,123]])for(_=$[0];_<$[1];)Ø+=String.fromCharCode(_++);return Ø
in this string it's then checked whether console.log('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')
and f=\r\n
416 byte submission here\r\n
alert(f())
, resulting in the chars (À=(Á=!($={})+(Ø=""))[Â=_=+[]],Ã=(Ä=!_+Ø)[Å=++_],Æ=(Ç=$+Ø)[_],È=(É=$.$+Ø)[_],Ê=Ä[Ë=++_],Ì=Ä[Í=++_],Î=++_,Ï=Ç[Ð=++_],Ñ=Ç[Ò=++_],Ó=++_,$=$[Ô=Ï+Æ+È+Á[Í]+Ñ+Ã+Ê+Ï+Ñ+Æ+Ã][Ô],$($((Õ=Ã+Ä[Í]+Ñ+Ê+Ã+È)+`"${Ù=($=À)+Æ+(Ö=Ô[Ð])}($ ${[Æ+$+"[["+Î+ ++_,Ø+Ð+_+"],["+Ò+Ð,Ø+ ++_+Å+"],["+_+Ó,Ú=Ø+Å+Ë+Í]}]])${Ù}(_=$[Â];_<$[Å];)Ø+=${(_="\\")+Ú+Ñ+Ö+(Û=(_=_+Å)+Ð)+Å+Ô[Ë]+_+Î+Ó}.${$+Ö+Æ+Û+Ð+_+Â+Í+Û+Â+Á[Å]+Ö+_+Â+Í+Æ+É[Ë]+Ì}(_++);${Õ} Ø"`)()))
. Затем char *
and _
обязаны __($$,_,$,_$,$_){$>_$?_$=_$?!$:$,$=*(""-_+$_++)&*"{":_;_$?*(""-_+$$++)=$++:_;$&&__($$,_,$,_$,$_);}_(_){__(_,"",_,!!_,"½´ÞÅþå");}
and $ sudo unshare --fork --pid --mount-proc bash golf
declare -a __=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5" [6]="6" [7]="7" [8]="8" [9]="9" [10]="a" [11]="b" [12]="c" [13]="d" [14]="e" [15]="f" [16]="g" [17]="h" [18]="i" [19]="j" [20]="k" [21]="l" [22]="m" [23]="n" [24]="o" [25]="p" [26]="q" [27]="r" [28]="s" [29]="t" [30]="u" [31]="v" [32]="w" [33]="x" [34]="y" [35]="z" [36]="A" [37]="B" [38]="C" [39]="D" [40]="E" [41]="F" [42]="G" [43]="H" [44]="I" [45]="J" [46]="K" [47]="L" [48]="M" [49]="N" [50]="O" [51]="P" [52]="Q" [53]="R" [54]="S" [55]="T" [56]="U" [57]="V" [58]="W" [59]="X" [60]="Y" [61]="Z")
, давая символы declare -p __
and so on.