gpt4 book ai didi

Haskell - 将坐标列表转换为 ASCII 图形?

转载 作者:行者123 更新时间:2023-12-04 18:08:25 26 4
gpt4 key购买 nike

我在尝试完成作业时遇到困难。这是作业的最后一个问题,我已经研究了一段时间,但进展甚微。我需要将图像转换为 ASCII 图形,其中

type Point = (Int, Int)
type Image = [Point]

我必须编写一个函数,它接受一个图像并返回一个字符串。输出应该类似于“.|...\n.xxx.\n-+x--\n.|...\n”,当使用 putStr 输出时看起来像

.|...
.xxx.
-+x--
.|...

原点用+表示,坐标轴|和 --,以及点 'x'。

图形在坐标周围应始终有一个 1 点的边框,因此在打印图形时我需要注意坐标的边界。我有一个函数来获取这些。

我还编写了一个函数 split,它接受一个字符串和一个整数,并在每第 n 个间隔插入\n。我想解决这个问题的方法是创建一个空白图,其中轴的位置正确,然后将空白图传递给新函数以插入点。

谁能帮我解决这个问题?很抱歉,如果它含糊不清,我可以提供您可能需要的任何更多详细信息。

最佳答案

这里有一些需要考虑的事情:

  • 从功能上讲,什么是图像?现在忽略边界,图像是从坐标到该坐标上显示的任何内容的函数。尝试为图像设计一个类型签名。如果您使用 type 可加分称其为 FImage .将此类函数视为您的主要对象(请记住,函数是一等公民)。
  • 实现坐标轴,如FImage .请注意,您不需要任何界限。这不是很好吗?
  • 实现一个接受 FImage 的函数和一个 Point , 并产生一个 FImagex在正确的位置。
  • 从点列表中找出边界。一如既往,始终首先思考:这个的类型签名是什么?
  • 给定一个 FImage和边界,产生最终的 String .您可能想在这里使用列表推导。
  • 把它们放在一起。这里隐藏着一个褶皱!它的论据之一将是要点列表。其他参数是什么(基本情况和组合函数)。以这种水平的 Haskell 专业知识,不要太担心它是否是 foldl。或 foldr ,两者都可以工作(如果类型匹配)。
  • 完成:-)

祝您学习愉快!

关于Haskell - 将坐标列表转换为 ASCII 图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20633229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com