sierpinski_sidef.sf 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/ruby
  2. class Sierpinski {
  3. # **
  4. # * * *
  5. # **
  6. method letter_s(n) {
  7. var c = ['*'];
  8. {
  9. c = (c.map{|x| ' '*(x.len*2) + x*2 + ' '*(x.len*1) } +
  10. c.map{|x| x + ' '*(x.len) + x + ' '*(x.len) + x } +
  11. c.map{|x| ' '*(x.len*1) + x*2 + ' '*(x.len*2) }
  12. );
  13. } * n;
  14. return c;
  15. }
  16. # *
  17. # *
  18. # *
  19. method letter_i(n) {
  20. var c = ['*'];
  21. {
  22. c = (c.map{|x| x*2 } +
  23. c.map{|x| x*2 } +
  24. c.map{|x| x*2 }
  25. );
  26. } * n;
  27. return c;
  28. }
  29. # *
  30. # **
  31. # ***
  32. method letter_d(n) {
  33. var c = ['*'];
  34. {
  35. c = (c.map{|x| x*1 + ' '*(x.len*2) } +
  36. c.map{|x| x*2 + ' '*(x.len*1) } +
  37. c.map{|x| x*3 }
  38. );
  39. } * n;
  40. return c;
  41. }
  42. # ***
  43. # **
  44. # ***
  45. method letter_e(n) {
  46. var c = ['*'];
  47. {
  48. c = (c.map{|x| x*3 } +
  49. c.map{|x| x*2 + ' '*(x.len) } +
  50. c.map{|x| x*3 }
  51. );
  52. } * n;
  53. return c;
  54. }
  55. # ***
  56. # **
  57. # *
  58. method letter_f(n) {
  59. var c = ['*'];
  60. {
  61. c = (c.map{|x| x*3 } +
  62. c.map{|x| x*2 + ' '*(x.len*1) } +
  63. c.map{|x| x*1 + ' '*(x.len*2) }
  64. );
  65. } * n;
  66. return c;
  67. }
  68. }
  69. var size = 2;
  70. var ski = Sierpinski();
  71. var str = "sidef";
  72. var chars = [];
  73. str.each { |char|
  74. chars.append(ski.('letter_' + char)(size));
  75. }
  76. chars.zip { |*a|
  77. say a.join(' ')
  78. }