List rooted trees: Difference between revisions
Content added Content deleted
m (Added Sidef) |
|||
Line 483: | Line 483: | ||
((((())))) |
((((())))) |
||
#t</pre> |
#t</pre> |
||
=={{header|Sidef}}== |
|||
{{trans|Python}} |
|||
<lang ruby>func bagchain(x, n, bb, start=0) { |
|||
n || return [x] |
|||
var out = [] |
|||
start.to(bb.end).each { |i| |
|||
var (c, s) = @bb[i] |
|||
if (c <= n) { |
|||
out += bagchain([x[0] + c, x[1] + s], n-c, bb, i) |
|||
} |
|||
} |
|||
return out |
|||
} |
|||
func bags(n) { |
|||
n || return [[0, ""]] |
|||
var upto = [] |
|||
(n-1).downto(1).each { |i| upto += bags(i) } |
|||
bagchain([0, ""], n-1, upto).map{|p| [p[0]+1, '('+p[1]+')'] } |
|||
} |
|||
func replace_brackets(s) { |
|||
var (depth, out) = (0, []) |
|||
s.each { |c| |
|||
if (c == '(') { |
|||
out.append(<( [ {>[depth%3]) |
|||
++depth |
|||
} |
|||
else { |
|||
--depth |
|||
out.append(<) ] }>[depth%3]) |
|||
} |
|||
} |
|||
return out.join |
|||
} |
|||
bags(5).each { |x| |
|||
say replace_brackets(x[1]) |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
([{([])}]) |
|||
([{()()}]) |
|||
([{()}{}]) |
|||
([{}{}{}]) |
|||
([{()}][]) |
|||
([{}{}][]) |
|||
([{}][{}]) |
|||
([{}][][]) |
|||
([][][][]) |
|||
</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |