sidef_3d_ascii.sf 593 B

12345678910111213141516171819202122232425262728
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Write_language_name_in_3D_ASCII
  4. #
  5. var text = <<'EOT';
  6. ***
  7. * * * **
  8. * * *
  9. * * * *** **
  10. *** * **** * * *
  11. * * * * ***** *
  12. * * * * * *
  13. * * * * * *
  14. *** * **** *** *
  15. EOT
  16. func banner3D(text, shift=-1) {
  17. var txt = text.lines.map{|line| line.gsub('*','__/').gsub(' ',' ')};
  18. var offset = txt.len.of {|i| " " * (shift.abs * (i+1)) };
  19. shift < 0 && offset.reverse!;
  20. (offset »+« txt).join("\n");
  21. }
  22. say banner3D(text);