【问题标题】:How to compare each element separately of two char lists Standard ML如何分别比较两个字符列表的每个元素标准 ML
【发布时间】:2016-12-29 01:31:22
【问题描述】:

我对 SML 非常陌生,我正在尝试编写一个函数来比较两个字符列表,例如,它从 list1 中获取一个字符并将其与 list2 中的所有字符进行比较

val list1 = explode("abcdefghijklmnopqrstuvwxyz")
val list2 = explode("bcdaghklfeijonmtrqpsvuwyzx!-232=,./;'[]{}:?<")

所以它从list1中获取元素'a',然后将它与list2的每个元素进行比较,并不断检查所有元素,如果混乱的list2等于非混乱的list1,则返回true

【问题讨论】:

    标签: sml


    【解决方案1】:

    这听起来像XY problem

    XY 问题是询问您尝试的解决方案,而不是您的实际问题。这会导致在寻求帮助的人和提供帮助的人方面浪费大量的时间和精力。

    您是否在测试list1 是否是list2 的子集、子多集、子字符串、子序列或排列?或者如果它们是等效的?尝试并表达您的实际问题,然后然后描述您尝试的解决方案。 :-)

    您可能希望使用List.existsList.all 的组合。

    例如,如果您要测试 list1 是否是 list2 的子集:

    fun contains (ys, x) = List.exists (fn y => x = y) ys
    fun isSubsetOf (xs, ys) = List.all (fn x => contains (ys, x)) xs
    

    其中说:对于所有xxs,必须存在一个yys 使得x = y

    【讨论】:

    • 很好的解释,尽管我怀疑这是家庭作业,并且 OP 的讲师期待一个不使用标准库高阶函数的幼稚解决方案。在他们进一步澄清之前很难确定。
    • 不管我们如何完成它,它应该是用 2 种不同的编程语言编写的声明我们应该检测一个 pangram 句子,因此 list1 将包含该句子,而 list2 将包含从 a 到 z 的字母,如果所有字母都在列表 1 中的句子中,那么它不是 pangram
    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多