【发布时间】:2019-01-25 14:33:24
【问题描述】:
我刚开始学习 erlang,我有这个类任务来创建一个函数,该函数返回它的 3 个参数中有多少是相等的。示例:
- countDuplicates(1,2,3) = 0
- countDuplicates(1,2,2) = 2
- countDuplicates(2,2,2) = 3
我的解决办法是:
- module(equals).
- export([Duplicates/3]).
Duplicates(X,Y,Z)->
List=[X,Y,Z],
A=length(List),
List2=lists:usort(List),
B=length(List2),
if
A-B==0 ->
0;
true ->
A-B+1
end.
代码将参数作为一个列表,然后通过使用 usort 删除任何重复项来创建另一个 list2。
- A= 列表长度
- B= list2 的长度
A-B+1= 重复次数。 如果 A-B 为 0,则保持 0。
这是我解决这个问题的新手方法。这样做最优雅的方法是什么?
【问题讨论】:
-
不能以大写字母 D 调用
Duplicates的函数。 -
第一个case是0还是1? :)
-
您需要处理缩进,应该是 4 个空格,而不是 3 个空格。并且函数体内的 if 表达式需要缩进。
标签: erlang