Поэтому я должен написать различные процедуры, которые помогут мне решить загадку фермер-волк-козел-капуста-удобрение. Для тех из вас, кто этого не знает, фермеру приходится перебираться с северного берега реки на южный берег со всеми остальными объектами. Банк становится безопасным в 3 ситуациях: фермер присутствует ИЛИ, волк не остался с козлом ИЛИ, коза не осталась с капустой. Для целей упражнения переменными будут [f, b, g, w, c].
Процедура (выберите (Банк, Предметы)), в которой я застрял, включает в себя поиск списка из 1 или 2 элементов (всегда включая фермера - f), которые могут быть частью транспортировки из Банка, не оставляя его в безопасности.
Если кто-то выберет ([g, f, b], Items), возможные возвращаемые значения для Items могут быть [f], [f, g], [f, b]. Однако, если мы выберем ([g, f, c], Items), единственные возможные возвращаемые значения - это [f, c] или [f, g], поскольку козу и капусту нельзя оставлять вместе.
Таким образом, может ли кто-нибудь дать мне подсказку, как получить все возможные варианты для предметов, но в списках не более 2 предметов?