ピラミッドを作る

http://ja.doukaku.org/8/より。
Haskellの場合。

module Main (main) where

pyramid :: Int -> [String]
pyramid n =
  [(replicate (n - i) ' ' ++ replicate (i * 2 - 1) '*') | i <- [1 .. n]]

main :: IO ()
main = putStr $ unlines $ pyramid 4
-- =>   *
--     ***
--    *****
--   *******

Rubyの場合。関数型言語脳。

def pyramid(n)
  (1 .. n).to_a.map do |i|
    ' ' * (n - i) + '*' * (i * 2 - 1)
  end
end

print pyramid(4).join("\n")
# =>   *
#     ***
#    *****
#   *******

ちなみにRubyでもCohiを使うとこう書けます。いや、だから何だという気もしますが。

require 'cohi'
require 'cohi/prelude'

include Cohi

define(:pyramid) do |n|
  map[lambda {|i| ' ' * (n - i) + '*' * (i * 2 - 1) }, (1 .. n).to_a]
end

put_str ** unlines ** pyramid[4]
# =>   *
#     ***
#    *****
#   *******