answer-set-programming - 如何生成固定大小的事实列表(包括重复项)?
问题描述
我是 ASP 和 Clingo 的新手,我需要为学校做一个项目。我想到了一些基本的音乐发生器。
现在,我需要生成音符(我现在坚持使用 C 大调)。我也想随机生成它们,但我不知道该怎么做。如何使以下代码生成随机的音符序列(也可以重复)?
note(c;d;e;f;g;a;b).
20 { play(X) : note(X)} 30.
#show play/1.
到目前为止,代码不允许超过 7 作为上限,因为它不会显示重复的注释。
电流输出:play(b) play(g) play(e) play(c)
想要的输出:play(d) play(g) play(f) ...[20-30 randomly generated notes]
我希望以后能够添加约束(比如这个注释不应该跟那个注释,等等)。我很感激任何提示,因为我对此知之甚少。
解决方案
答案集是一个集合。原子没有顺序,不可能重复,因为它是一个集合。
您想为每个节拍猜测一个音符。
节拍(1..8)。
1 {播放(N,B):音符(N)} 1:-节拍(B)。
推荐阅读
- zsh - brew 升级后 PoweLevel9k 崩溃
- python - 在 python try-except 子句的 unittest 中未捕获 AssertError
- python-3.x - 我在我的代码中两次使用相同的模型,如何避免转移权重?
- java - 在不检查存在的情况下解决损坏的符号链接
- html - Safari中的引导列+垂直选项卡受到干扰
- android - 如何计算Android手机从手上掉下来的垂直距离?
- reactjs - 如何在 React.js 中获取 URL 值?
- katalon-studio - 我们可以为katalon studio中的文本字段生成随机的唯一字母吗?
- android - 获取麦克风 ID Android API < 23
- c# - C# 使用丢弃'_'