fork(5) download
  1. # -*- coding: utf-8 -*-
  2.  
  3. _={│:[1,4],─:[2,8],┌:[4,8],┐:[4,2],└:[1,8],┘:[1,2],┼:[1,4,2,8]}
  4. s=->a,l,b{l==[]&&a==[]?b:(l.product(l).any?{|q,r|q,r=q[0],r[0];(q[0]-r[0])**2+(q[1]-r[1])**2>a.size**2}?!0:(w,f=l.pop
  5. w&&v=!a.size.times{|i|y=_[x=a[i]]
  6. f&&y&[f]==[]||(k=l.select{|p,d|w!=p||y&[d]==[]}
  7. (y-[f]).map{|d|z=[w[0]+(d<2?-1:(d&4)/4),w[1]+(d==2?-1:d>7?1:0)]
  8. g=d<3?d*4:d/4
  9. b[z]?_[b[z]]&[g]!=[]||v=0:k<<[z,g]}
  10. v||r=s[a[0...i]+a[i+1..-1],k,b.merge({w=>x})]
  11. return r if r)}))}
  12. c=eval"[#{gets}]"
  13. r=s[6.downto(0).map{|i|[_.keys[i]]*c[i]}.flatten,[[[0,0],nil]],{}]
  14. h=j=k=l=0
  15. r.map{|w,_|y,x=w
  16. h>x&&h=x
  17. j>y&&j=y
  18. k<x&&k=x
  19. l<y&&l=y}
  20. s=(j..l).map{|_|' '*(k-h+1)}
  21. r.map{|w,p|y,x=w
  22. s[y-j][x-h]=p.to_s}
  23. puts s
  24.  
Success #stdin #stdout 0.02s 7432KB
stdin
2,2,1,1,1,1,0
stdout
┌─┐
│ │
└─┘