gpt4 book ai didi

haskell - 给定列表长度、项目和填充项生成列表

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

首先,抱歉,这个标题不好,我真的不知道该怎么调用它。这是我的一项家庭作业的问题:

“编写并测试(多态)Haskell 函数 center 的定义,该函数采用三个参数:

  1. [a] 类型的列表 arg1
  2. Int 类型的宽度 arg2,以及
  3. a 类型的填充项 arg3

并返回

长度为arg2、类型为[a]的列表,

包含以填充项为中心的列表arg1(即,arg1 之前和 arg1 之后的项目数最多为 1)。

例如,center "abcd"7 '-' 可能会产生 "--abcd-""-abcd--" (由你选择)。”

我不希望你为我实际编写这个函数,因为它是家庭作业,但我只需要一些关于如何解决这个问题的指导,也许还需要一个我可能发现对解决这个问题有用的任何 Haskell 函数的列表.

最佳答案

不需要递归(对您而言)。结果将由夹在左右填充列表之间的输入列表组成。 ++ 运算符可以连接列表:

center s w f = lfill ++ s ++ rfill where
n = ... -- compute the total amount of fill required
nl = ... -- divide the total fill into left amount
nr = ... -- divide the total fill into right amount
lfill = ... -- replicate f nl times
rfill = ... -- replicate f nr times

where 子句包含创建左右填充列表的代码。

填充项的总数 (n) 将是 ws 长度之间的差值。填充项的数量必须除以 2 并向上舍入 (ceiling),从而在左 (nl) 和右 (nr) 之间划分或向下(地板)。您可以计算左侧的金额,然后通过从左侧的金额中减去总金额来计算右侧的金额,或者您可以将左侧计算为 floor,将右侧计算为 ceiling 部门。获得左右填充量后,您可以使用replicate 创建f 项的列表。

关于haskell - 给定列表长度、项目和填充项生成列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284687/

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