Open Source WEB

2006-08-11 [Haskell] シェルピンスキーのガスケット

『プログラマの数学』によると Pascal の三角形の数字の偶数奇数を塗り分けるとなんとシェルピンスキーのガスケットが現れるらしい. ちょっとやってみよう

pascal = [1]:[zipWith (+) ([0]++p) (p++[0]) | p <- pascal]
disp = map (\ i -> if even i then '.' else '#')

と定義(sierpinski.hs)しておいて,ghci に読み込む.

% ghci sierpinski.hs
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.5.20060804, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling main:Main        ( sierinski.hs, interpreted )
Ok, modules loaded: Main.
*main:Main> 

こうしておいて,mapM_ putStrLn $ map disp $ take 64 pascal を評価すると

*main:Main> mapM_ putStrLn $ map disp $ take 64 pascal
#
##
#.#
####
#...#
##..##
#.#.#.#
########
#.......#
##......##
#.#.....#.#
####....####
#...#...#...#
##..##..##..##
#.#.#.#.#.#.#.#
################
#...............#
##..............##
#.#.............#.#
####............####
#...#...........#...#
##..##..........##..##
#.#.#.#.........#.#.#.#
########........########
#.......#.......#.......#
##......##......##......##
#.#.....#.#.....#.#.....#.#
####....####....####....####
#...#...#...#...#...#...#...#
##..##..##..##..##..##..##..##
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
################################
#...............................#
##..............................##
#.#.............................#.#
####............................####
#...#...........................#...#
##..##..........................##..##
#.#.#.#.........................#.#.#.#
########........................########
#.......#.......................#.......#
##......##......................##......##
#.#.....#.#.....................#.#.....#.#
####....####....................####....####
#...#...#...#...................#...#...#...#
##..##..##..##..................##..##..##..##
#.#.#.#.#.#.#.#.................#.#.#.#.#.#.#.#
################................################
#...............#...............#...............#
##..............##..............##..............##
#.#.............#.#.............#.#.............#.#
####............####............####............####
#...#...........#...#...........#...#...........#...#
##..##..........##..##..........##..##..........##..##
#.#.#.#.........#.#.#.#.........#.#.#.#.........#.#.#.#
########........########........########........########
#.......#.......#.......#.......#.......#.......#.......#
##......##......##......##......##......##......##......##
#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#.....#.#
####....####....####....####....####....####....####....####
#...#...#...#...#...#...#...#...#...#...#...#...#...#...#...#
##..##..##..##..##..##..##..##..##..##..##..##..##..##..##..##
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#
################################################################

おおっ.

--nobsun


Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us