我在维基百科页面上看到这个,想知道是否有人有这个工作实现。Haskell的科赫雪花实现
我想学习Haskell,发现它有点困难,我正在Koch雪花和Sierpinski三角形上工作。
欢迎任何代码或建议。
由于
我在维基百科页面上看到这个,想知道是否有人有这个工作实现。Haskell的科赫雪花实现
我想学习Haskell,发现它有点困难,我正在Koch雪花和Sierpinski三角形上工作。
欢迎任何代码或建议。
由于
这应该给你一个(列表)三角形列表。现在在屏幕上绘制这些三角形到您认为合理的深度。
对于这些类型的图片有很多的结构和独立的规模,我会推荐图包(http://projects.haskell.org/diagrams/),这是一个非常神奇的代码片段,请参阅以下代码以生成由您写的科赫雪花真正在短短的几分钟内:
snowflake :: Int -> Trail R2
snowflake n = k <> k # rotateBy (-1/3) <> k # rotateBy (1/3)
where k = koch n
koch :: Int -> Trail R2
koch 0 = P (-1,0) ~~ P (1,0)
koch n = k <> k # rotateBy (1/6) <> k # rotateBy (-1/6) <> k
where k = koch (n-1) # scale (1/3)
这几乎是不言自明的,最神奇的是开拓者的含半幺群实例,将“串联”的创新端到端。 (<>)是mappend的操作符,过去定义了它的图表,但现在它已成为GHC 7.4中的基础的一部分,并且可能包含在未来版本的Haskell报告中,(#)是只是应用程序颠倒过来了,因为图表作者发现定义图表更令人愉快,然后应用其属性而不是将其写入另一个方向(所以k#rotateBy(1/6)只是rotateBy(1/6)k)。
对于sierpinski的三角你可以看这里: [http://stackoverflow.com/questions/1726698/code-golf-sierpinskis-triangle](http://stackoverflow.com/questions/1726698/code-golf- sierpinskis-triangle)你也许会觉得这有帮助: [http://www.hardforum.com/showthread.php?p=1034927217](http://www.hardforum.com/showthread.php?p=1034927217)这里有一个建议也可能有所帮助: [http://www.rhinocerus.net/forum/lang-functional/96046-haskell-fractals-specifically-snowflakes.html](http://www.rhinocerus.net /forum/lang-functional/96046-haskell-fractals-specifically-snowflakes.html) – 2009-11-21 05:49:05