draw_a_cuboid_2.sf 770 B

123456789101112131415161718192021222324252627282930313233
  1. #!/usr/bin/ruby
  2. func cuboid (x=1,y=1,z=1,s=' ',c='+',h='-',v='|',d='/') {
  3. say("cuboid %d %d %d:" % (x, y, z))
  4. ' ' * z+1 + c + h*x + c -> say
  5. { |i|
  6. ' ' * (z - i + 1) + d + s*x + d +
  7. (s * (i - (i > y ? i-y : 1))) +
  8. (i - 1 == y ? c : (i > y ? d : v)) -> say
  9. }.for(1..z)
  10. c + h*x + c + (s * (z < y ? z : y) +
  11. (z < y ? v : (z == y ? c : d))) -> say
  12. { |i|
  13. v + s*x + v + (z > y
  14.  ? (i >= z ? (s*x + c) : (s * y-i + d))
  15.  : (y - i > z
  16.  ? (s * z + v)
  17.  : (s * y-i + (y-i == z ? c : d))
  18. )
  19. ) -> say;
  20. }.for(1..y)
  21. c + h*x + c -> say
  22. }
  23. cuboid(2, 3, 4)
  24. cuboid(1, 1, 1)
  25. cuboid(6, 2, 1)
  26. cuboid(2, 4, 1)