나는 세 가지 이름의 무작위 목록을 생성하기 위해 (중복 금지) 술어 randomnames/1
을 작성해야하는이 연습을하고 있습니다. 나는 이미 10 이름을 가진 데이터베이스를 가지고 있고 그들은 모두 예를 들어, 숫자에 해당합니다프롤로그 - 특정 길이의 목록을 생성하는 방법?
randomname(Name) :-
random(0, 11, N), % generate random integer between 1 and 10.
name(N, Name).
내 질문은 다음과 같습니다 : name(1, Mary).
내가 한 임의의 이름을 생성하는 술어를 쓴 내가 이것을 어떻게합니까 목록에? 그리고 정확히 3 가지 요소의 목록이 있습니까? 너무 많은 내장 기능을 사용하고 싶지 않습니다. length/2
괜찮을 것입니다. 나는 그것이 필요할지도 모른다라고 생각한다 :)
고맙습니다.
편집 : 먼저 3 개의 임의 번호 (이름이 나중에 나올 수 있음) 목록을 생성하려고합니다. 나는이 끔찍하게 틀린 작은 것을 썼다. :/2 술어로 이것을하는 방법을 안다; 사용자가 세 요소 (예 : numberlist(3,X).
)가있는 목록을 원한다는 쿼리를 입력하면됩니다. 그러나 나는 코드에 적어 두는 방법을 알아낼 수 없다. 나는 항상 세 개의 숫자 목록을 원한다. 또한 내 목록을 생성하는 데 findall
을 사용하려고 생각했지만 목록의 길이를 3 개의 임의 요소로 제한하는 방법을 다시 모릅니다.
너무 많은 내장 기능이 얼마나 많이 있습니까? – lurker
글쎄, 나는'랜덤'과'길이'와 기본'is' 등을 사용할 수 있다고 생각합니다. 그러나 운동이므로 절대적으로 필요한 경우를 제외하고는 내장형을 사용하지 않아야합니다. 당신은 builtins와 함께 길을 가지면, 나는 그것을보고 싶다! –
오,'findall'과'bagof'도 가능합니다! –