2014-09-17 2 views
2

나는 4 개의 이름을 정의하는 사실을 가지고있다.사실에서 가장 긴 원자 길이 찾기. (프롤로그)

name('Fooo Baar'). 
name('Bar Fo'). 
name('Far Boooo'). 
name('Example Example'). 

가장 긴 이름을 찾기 위해 어떻게 이러한 사실을 반복 할 수 있습니까? 여기에 내 현재 진행 상황이 있지만 다음에해야 할 일이 전혀 없습니다.

longest_name(L):- 
    name(Nimi), 
    atom_length(Nimi, L), 
    write(L), 
    nl, 
    fail. 
+1

당신은 사용할 수 있습니다 예를 들어, 원자의 길이를 수집하고 정렬하기 위해'setof/3'을 사용합니다 ... –

답변

0

선언적 방식 : \ + means하지

longest_name(L) :- 
    name(N), atom_length(N, L), 
    \+ (name(X), atom_length(X, Y), Y > L). 

, 그것은 매우 읽을 수 있어야하므로 ...

+0

이 정의의 문제점은 최대 길이가 동일한 원자가 여러 개인 경우 반복되는 솔루션을 제공 할 수 있다는 것입니다. 끝 부분에 커팅을 추가 할 수 있습니까? –