-- 逆順になるあみだくじ function bars(n) bars = {} function limit(i, j) return (i+j) <= 2*(n-1) end function append(i, j) if limit(i, j) then bar = {i=i, j=j} table.insert(bars, bar) end end for i = 1, 2*(n-1), 1 do if math.mod(i, 2) == 1 then js = 1 else js = 2 end for j = js, i, 2 do append(i, j) end end return bars end function member(i, j, bars) found = false table.foreachi(bars, function(_, bar) if i == bar.i and j == bar.j then found = true end end) return found end function draw(n, bars) str = "" function append(s) str = str..s end function empty() for i = 1, n, 1 do append("| ") end append("\n") end function nums(s, e, step) for i = s, e, step do append(i.." ") end append("\n") end nums(1, n, 1) empty() for i = 1, 2*(n-1), 1 do for j = 1, n, 1 do append("|") if member(i, j, bars) then append("-") else append(" ") end end append("\n") end nums(n, 1, -1) print(str) end function amida(n) draw(n, bars(n)) end amida(9)