cuboid.pl 609 B

12345678910111213141516171819
  1. sub say{print@_,$/}sub cube
  2. {my($x,$y,$z)=map{int}@_;my(
  3. $c,$h,$v,$d,$s)=((qw{+ - | /}
  4. ),$ARGV[3]||' ');my($p,$o)=(0,
  5. 0);say ' 'x($z+1),$c,$h x$x,$c;
  6. for(1..$z){say ' 'x($z-$_+1),$d,
  7. $s x$x,$d,$s x($_-1-$p),$_>$y?!$p
  8. ?do{$p=1;$o=$z-$y;$c}:$p++?$d:$c:
  9. $v;}say$c,$h x$x,$c,$z<$y?do{$s x
  10. $z,$v}:$p?do{$s x($z-$o),$d}:do{$
  11. s x$z,$c};for(1..$y){say$v,$s x$x
  12. ,$v,$z-1>=$y?$_>=$z?($s x$x,$c):(
  13. $s x($z-$_-$o),$d):$z==$y?do{$s#
  14. x($y-$_),$d}:$y-$_>$z?do{$s x$z
  15. ,$v}:$y-$_==$z?do{$s x($y-$_),
  16. $c}:do{$s x($y-$_),$d}}say$c,
  17. $h x$x,$c}cube @ARGV>2?@ARGV
  18. [0..2]:map{rand($_)}20,10,8