小编Tan*_*nse的帖子

字符串函数子句匹配

我在为旧的 Advent of Code 任务编写一些简单的 erlang 代码时遇到了问题。

以下程序应该读取行,按出现次数对字符串中的字符进行分组,然后计算重复三个字符的行数。


count_occurrences([], Map) -> Map;
count_occurrences([H | T], Map) ->
    count_occurrences(T, maps:put(H, maps:get(H, Map, 0) + 1, Map)).

count(Line, Count) ->
    Map = count_occurrences(Line, #{}),
    case lists:member(3, maps:values(Map)) of
        true -> Count + 1;
        false -> Count
    end.

run() ->
    {ok, Binary} = file:read_file("data.txt"),
    Lines = binary:split(Binary, <<"\n">>, [global]),
    Result = lists:foldl(fun count/2, 0, Lines),
    Result.
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误消息:

10> c(day2).   
{ok,day2}
11> day2:run().
** exception error: no function clause matching day2:count_occurrences(<<"bpacnmelhhzpygfsjoxtvkwuor">>,#{}) (day2.erl, line 5) …
Run Code Online (Sandbox Code Playgroud)

erlang

4
推荐指数
1
解决办法
73
查看次数

标签 统计

erlang ×1