Prolog 재활

4978 단어 Prolog

재활



잠시 Prolog에서 멀어졌습니다. 완전히 Prolog를 잊어 버리고 있었으므로, 간단한 예제로 기억하고있었습니다. 도전은 거품 정렬입니다.

알고리즘



프로그래밍을 시작했을 무렵에, 최초로 이해한 알고리즘입니다. 직관적으로 알기 쉽지만 비효율적인 알고리즘입니다.
자세한 내용은 Wikipedia를 참조하십시오.
htps : // 그럼.ぃきぺぢ아. 오 rg/우키/%에 3% 83% 90% 에 3% 83% 96% 에 3% 83% 에 B% 에 3% 82% BD% 에 3% 83% BC% 에 3% 83% 88

그림(Wikipedia에서)


코드



1시간 정도 고민하고 있었습니다. 무한 루프에 빠져 버려, 이건 자작의 처리계 N-Prolog의 버그인가? ! 과 차가운 땀을 쓰고 손을 잡았습니다.

/*
    exercize to remember prolog for me
*/

bubble(X,X) :-
    bubble1(X,X1),
    X == X1.
bubble(X,X2) :-
    bubble1(X,X1),
    bubble(X1,X2).

bubble1([],[]).
bubble1([X],[X]).
bubble1([X1,X2|Xs],[X1|Y]) :-
    X1 =< X2,
    bubble1([X2|Xs],Y).

bubble1([X1,X2|Xs],[X2|Y]) :-
    X1 > X2,
    bubble1([X1|Xs],Y).


N-Prolog Ver 0.06
?- [-'tests/sort.pl'].
yes
?- bubble([2,3,1,7,0,9],X).
X = [0,1,2,3,7,9]
yes
?- 

기타 코드 참조, 반성 등



코드가 작동하게 된 후, 다른 사람은 어떤 식으로 쓸 것인가? 라고 구구 해 보았습니다. StackOverFlow에서의 답변을 보면 내 것도 그렇게 빗나가지 않을 것 같습니다. append의 양방향성과 실패를 사용한 예제도 발견되었지만 버블 정렬입니까? ? ?

추가



또한 병합 정렬을 작성하고 감을 되찾고 있습니다. What을 기술하면, How는 컴퓨터, Prolog가 잘 해준다고 하는 것이었습니다. 이것은 변태적 (좋은 의미에서)! Deep-learning이 진화하면 프로그램은 컴퓨터 자신이 쓰는 시대가 방문하는 등의 이야기를 듣습니다. Prolog도 비슷한 발상이군요.

좋은 웹페이지 즐겨찾기