R , 112 (107) 99 바이트
비재 귀적 접근. "<"와 ">"는 정규식에서 이스케이프 문자를 피하기 때문에 사용합니다. ASCII 범위에 대해 더 짧은 사양을 사용할 수 있도록 expand.grid
ASCII 코드 60, 61 및 62를 통해 "<", "="및 ">"의 3 ^ 2n 2n 문자 문자열을 생성 한 다음 grep 균형 잡힌 개폐 브래킷을 제공하는 조합을 확인하십시오. "="가능성은 물론 무시 될 것입니다.
http://rachbelaid.com/recursive-regular-experession/을 통해
function(n)sort(grep("^(<(?1)*>)(?1)*$",apply(expand.grid(rep(list(60:62),2*n)),1,intToUtf8),,T,T))
온라인으로 사용해보십시오!
설명
"^(<(?1)*>)(?1)*$" = regex for balanced <> with no other characters
^ # match a start of the string
( # start of expression 1
< # open <>
(?1)* # optional repeat of any number of expression 1 (recursive)
# allows match for parentheses like (()()())(()) where ?1 is (\\((?1)*\\))
> # close <>
) # end of expression 1
(?1)* # optional repeat of any number of expression 1
$ # end of string
function(n)
sort(
grep("^(<(?1)*>)(?1)*$", # search for regular expression matching open and close brackets
apply(
expand.grid(rep(list(60:62),2*n)) # generate 3^(2n) 60,61,62 combinations
,1,intToUtf8) # turn into all 3^(2n) combinations of "<","=",">"
,,T,T) # return the values that match the regex, so "=" gets ignored
) # sort them
R , 107 바이트
일반적인 재귀 접근.
감사합니다-@Giuseppe
f=function(n,x=0:1)`if`(n,sort(unique(unlist(Map(f,n-1,lapply(seq(x),append,x=x,v=0:1))))),intToUtf8(x+40))
온라인으로 사용해보십시오!