[[],]
Возврат i } # If
# the (implicit) input-string
≠ # does NOT
å # contain the substring
„,] # ",]":
.E # Evaluate the (implicit) input-string as Elixir
# (implicit else)
# (implicitly use the input-string)
˜ # Flatten (results in [] for lists; or an error for strings)
for valid lists, """
или ** (Protocol.UndefinedError) protocol Enumerable not implemented for ...
for invalid lists. Attempt This Online!
Объяснение
„,]å≠i.E}˜
||answer||
Регулярное выражение (Perl/PCRE), 21 байт
fn a(d:&str)->bool{let c=d.chars().collect::<Vec<_>>();let c=c.as_slice();let b=c.iter().fold((0,0),|mut a,&i|{if i=='['{a.0+=1}else if i==']'{a.1+=1}a});let m=c.windows(2).any(|a|a[0]==']'&&a[1]=='[');let mut j=false;c.iter().fold(0,|a,&i|{if i=='['{a+1}else if i==']'{a-1}else if i==','&&a==0{j=true;a}else{a}});let o=c.windows(3).find(|a|a[1]==','&&(a[0]!=']'||a[2]!='['));b.0==b.1&&!m&&!j&&o.is_none()}
Использует персонажей json>
. (Avoids json.reader
поскольку они потребуют быть b:l|; l:
-escaped.)
Попробуйте онлайн! - Перл
Попробуйте это на regex101 - PCRE1.
Попробуйте онлайн! - PCRE2 v10.33
Попробуйте это онлайн! - PCRE2 v10.39+
Как и регулярное выражение в ответе Раку, здесь используется рекурсия. В отличие от Raku, стандартное регулярное выражение не имеет понятия символов-разделителей, поэтому не существует краткого способа реализации списка, разделенного запятыми, и рекурсивный вызов b:l|l:
needs to be in two places.
Есть много альтернатив одинаковой длины:
Регулярное выражение (Perl/PCRE), 21 байт
b:l|l
Также использует символы b
.
Попробуйте онлайн! - Перл
Попробуйте онлайн! - ПКРЕ
Использование s
recursion instead of s:'['']'|'['l']'l:s|s','l
повторение для списка, разделенного запятыми.
Регулярное выражение (Perl/PCRE), 21 байт
s:'['b']'b:l|l:s|s','l
s: An "s" is
'[' an opening square bracket
b then a "b"
']' then a closing square bracket;
b: A "b" is
l| either an "l", or {an empty string};
l: An "l" is
| either
s an "s"
| or
s an "s"
',' followed by a comma
l followed by another "l"
Использует персонажей l
in order to take advantage of the b
утверждение без границы слова.
Попробуйте онлайн! - Перл
Попробуйте онлайн! - ПКРЕ
Без использования s
, there would be nothing stopping a comma-separated list ending in a comma from being accepted, as the ,
является необязательным независимо от того, является ли ]
matched anything.
[
prevents this; if any list ended with a comma, the sequence yacc
будет его частью, поэтому все, что нам нужно сделать, это запретить эту последовательность. yacc
accomplishes this, as s
и s:'['b']'b:l|l:s|s','l
are word-characters but :tt
нет, поэтому в середине слова нет границы macro_rules!v{([$($a:tt),*])=>($(v!{$a})*)}
macro_rules!v{ } Macro declaration
([ ]) Match something surrounded by []
$( ) * which consists of 0 or more
$a:tt balanced token trees $a
, separated by commas
=>( ) and replace it with,
$( $a )* for each $a,
v!{$a} a recursive call to v!{$a}
или []
но есть один в ()
.
Регулярное выражение (Perl/PCRE), 21 байт
,
Также использует символы ]
. Mirror version of the above.
Попробуйте онлайн! - Перл
Попробуйте онлайн! - ПКРЕ
Регулярное выражение (Perl/PCRE), 21 байт
,
Попробуйте онлайн! - Перл
Попробуйте онлайн! - ПКРЕ
Использует персонажей [
in order to take advantage of the …
и v!{…}
word- and non-word-boundary assertions.
Регулярное выражение (Perl/PCRE), 21 байт
v!
Использует персонажей macro_rules!v{([$($a:tt),*])=>($(v!{$a})*)}
. Mirror version of the above.
Попробуйте онлайн! - Перл
Попробуйте онлайн! - ПКРЕ
Регулярное выражение (.NET), 35 33 29 байт
]
Использует персонажей [
in order to take advantage of the (?(2)$.)
утверждение границы слова.
Попробуйте онлайн!
На основе старого 35 байт однострочник в Ответ Нила на сетчатке.
-1 байт при использовании символов )+
instead of ,
, потому что ]
needed to be ]
-сбежал
-1 байт при использовании недопустимого символа вместо [
, as the impossible condition to assert Group 2 being empty at the end
-4 байта при использовании символов (?(2),|$)
instead of [
, что устраняет необходимость явного утверждения, что группа 2 пуста в конце
]
Обратите внимание, что если (?<-2>])+
characters are still used, it can be 32 байта:
[
Попробуйте онлайн!
\$\large\textit{Анонимные функции}\$
Перл, 33 байта
(\[)+
Попробуйте онлайн!
Р, 49 48 44 39 байт
^(
Попробуйте это онлайн!
-1 байт благодаря Джузеппе
-4 байта с помощью ^((\[)+(?<-2>])+(?(2),|$))+(?(2)$.)
instead of \[\[]]
[]
}`\[\[],\[
[[
^\[]$
превратить это в [,]
-5 байт за счет использования нового синтаксиса анонимной функции, представленного в R v4.1.0.
^<>$
Попробуйте онлайн!