gpt4 book ai didi

functional-programming - Erlang 列出 :filter returns "\n\f"

转载 作者:行者123 更新时间:2023-12-02 17:57:46 25 4
gpt4 key购买 nike

我正在函数式编程类(class)中开展一个学校项目。该项目旨在确定一组多米诺骨牌(表示为 1-6 中两个数字的元组列表)是否可以首尾相连。我对这个问题没问题,但我遇到了一个问题,其中 lists:filter 返回字符串 "\n\f" 而不是类似的列表在 documentation 中说.

我在网上找不到任何东西,想知道你们是否有任何想法。

谢谢!

这是我的代码。问题出在 check_dominos() 函数中。

-module(challenge).
-export([test/0, check_dominos/1]).


% If there is an even number of each number, true
% else, false

extract_numbers([]) -> [];
extract_numbers([{First, Second} | T]) -> [First] ++ [Second] ++ extract_numbers(T).

add_matching_numbers(_Previous, []) -> [];
add_matching_numbers(Previous, [First | T]) when Previous =:= First-> [Previous + First | add_matching_numbers(First, T)];
add_matching_numbers(_Previous, [First | T]) -> add_matching_numbers(First, T).


check_dominos(Dominos) ->
All_Numbers = extract_numbers(Dominos),
Sorted_Numbers = lists:sort(All_Numbers),
Accumulated_Numbers = add_matching_numbers(0, Sorted_Numbers) ,

Filter_Lambda = fun(Num) -> Num rem 2 == 0 end,
Result = lists:filter(Filter_Lambda, Accumulated_Numbers),

Result.

% Still working on the logic of this part
%case length(Accumulated_Numbers) =:= length(Result) of
% true -> true;
% _ -> false
%end.

test() ->
Test_1 = [{1, 3}, {3, 2}, {2, 1}], % Already in order
Test_2 = [{5, 2}, {5, 6}, {6, 3}, {1, 4}], % Shouldn't work
Test_3 = [{2, 6}, {3, 5}, {1, 4}, {3, 4}, {6, 1}, {2, 5}], % Should work

true = check_dominos(Test_1),
false = check_dominos(Test_2),
true = check_dominos(Test_3).

最佳答案

Erlang 字符串是字符代码列表,默认情况下 Erlang shell 会尝试将整数列表显示为字符串。要更改此行为,请在运行程序之前调用 shell:strings(false).

关于functional-programming - Erlang 列出 :filter returns "\n\f",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75264525/

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