【发布时间】:2021-05-26 01:32:52
【问题描述】:
features([explicit-0, danceability-1, energy-1,
key-0, loudness-0, mode-1, speechiness-1,
acousticness-1, instrumentalness-1,
liveness-1, valence-1, tempo-0, duration_ms-0,
time_signature-0]).
%this predicate filters the features and gives the filtered list as a result.
filter_features(Features, Filtered) :-
features(X),
filter_features_rec(Features, X, Filtered).
filter_features_rec([], [], []).
filter_features_rec([FeatHead|FeatTail], [Head|Tail], FilteredFeatures) :-
filter_features_rec(FeatTail, Tail, FilteredTail),
_-Use = Head,
(
( Use is 1,
FilteredFeatures = [FeatHead|FilteredTail])
;
( Use is 0,
FilteredFeatures = FilteredTail
)
).
这是如何工作的?这里 -use 的用途是什么? 我无法解释 -0,-1 权重以及我们如何使用它们以及它们在这里的函数中代表什么?
【问题讨论】:
-
假设这段代码不是你自己写的,谁给你的?您应该首先询问编写此代码或将其推荐给您的人。如果是你自己找到的一些代码,你在哪里找到的,它应该做什么?
-
遗憾的是,如果您了解 Prolog 语法,您的问题将会得到解答 :-( 所以这可能意味着您可能需要回过头来阅读。事实上,这段代码看起来像它是由一个严重高估了他们对一般编程知识,特别是 Prolog 知识的人编写的;我至少知道这在大多数大学中很常见,所以我对你有感觉。祝你好运。
-
但你在 Stackoverflow 上找到的很多代码也很糟糕,即使乍一看似乎也能正常工作。这不是寻找工作代码的地方,就是这样。
标签: prolog