Как создать список фактов фиксированного размера (включая дубликаты)? - PullRequest
0 голосов
/ 12 декабря 2018

Я новичок в ASP & Clingo, и мне нужно работать над проектом для школы.Я подумал о каком-то простом генераторе музыки.

Сейчас мне нужно сгенерировать ноты (сейчас я придерживаюсь до мажор).Я также хочу генерировать их случайным образом и не знаю, как это сделать.Как я могу заставить следующий код генерировать случайную последовательность заметок (дубликатов тоже)?

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 Ответ

0 голосов
/ 12 декабря 2018

Набор ответов - это набор.У атомов нет порядка, и дубликаты невозможны, потому что это набор.

Вы хотите угадать одну ноту для каждого удара.

удар (1..8).

1 {игра (N, B): нота (N)} 1: - удар (B).

...