Prolog의 내장 역기능 기능이 이상하게 작동

am3decoy

다음 코드가 주어집니다.

fun(a, [b]).
fun(b, [c]).
fun(c, [d]).
fun(d, [e]).
fun(e, []).

xyz(X, Y):-
    fun(X,Z) -> findall([A|B], (member(A,Z), xyz(A,B)), L),
    flatten(L,F), sort(F,J), reverse(J,Y); Y = [].

쿼리를 사용하여 xyz(a,X)예상 출력을 얻습니다 X = [e,d,c,b]..

이 문제를 어떻게 해결할 수 있습니까? 이것이 정렬 기능과 관련이 있습니까? 그렇다면 아래 링크의 문서에 따르면 알파벳 또는 숫자 우선 순위가이 문제를 해결할 수 있지만 여전히 cs40is going before로 설명 할 수 없습니다 cs30. 상관 관계를 찾는 데 어려움을 겪고 있습니다. 이 문제를 어떻게 해결할 수 있습니까?

http://www.swi-prolog.org/pldoc/doc_for?object=sort/2 http://www.swi-prolog.org/pldoc/man?section=compare

그건 그렇고, fun 함수는 fun (a, [b, c]와 같은 다중 요소 목록을 가질 수 있습니다 . 여기서 a다중 종속성 bc.이 측면은 제가 현재 가지고있는 문제와 관련하여 그다지 중요하지 않습니다. 이 사실.


최신 정보

@lurker 덕분에 저는 큰 진전을 이루었습니다.

다음 코드가 주어집니다.

final_xyz(X, Y):- xyz(X, R), reverse(R, Y).
xyz(X, Y) :-
    fun(X,Z) -> findall([A|B], (member(A,Z), xyz(A,B)), L),
    flatten(L,Y); Y = [].

이 문제를 해결하기 위해 코드를 다음과 같이 업데이트했습니다.

xyz-final(X,Y):-
  fun(X,Z),
  Z\=0,
  ( length(Z,1) -> xyz(X,J), reverse(J,Y)
  ;
      xyz2(X,B), sort(B,C), reverse(C,Y)
  ).

xyz(K, [X|Y]):- fun(K, [X]), !, xyz(X, Y).
xyz(_, []).

xyz2(X, Y) :-
    fun(X,Z) -> findall([A|B], (member(A,Z), xyz2(A,B)), L),
    flatten(L,Y); Y = [].

매우 서투른 접근 방식이지만 지금은 저에게 효과적입니다. 더 효율적으로 만들기 위해 노력하겠습니다.

잠복 자

문제는 최종 결과를 되돌리고 싶지만 .NET에 대한 각 재귀 호출에서 반대가 수행된다는 것입니다 xyz/2. 당신이 할 경우 trace당신의 xyz(cs140a, X)전화, 당신은 다른 재귀에 몇 번 호출되는 것 볼 수 있습니다.

마지막에 한 번 원하면 다음과 같이 작성할 수 있습니다.

final_xyz(X, Y) :-
    xyz(X, R),
    reverse(R, Y).
xyz(X, Y) :-
    fun(X,Z) -> findall([A|B], (member(A,Z), xyz(A,B)), L),
    flatten(L,Y); Y = [].

그리고 다음을 호출 final_xyz(cs140a, X)하면 X = [m16a,cs30,cs40,cs110].


여기에 대한 대안 접근 방식 xyz 방지 술어 findall 와를 flatten . 이 버전은 순환 경로를 피해야하며 중복을 표시하지 않습니다.

xyz(X, Y) :-
    fun(X, L),
    xyz(L, [], R),
    reverse(R, Y).

xyz([H|T], A, R) :-
    (   memberchk(H, A)
    ->  xyz(T, A, R)
    ;   fun(H, L)
    ->  xyz(L, [H|A], R1),
        xyz(T, R1, R)
    ;   xyz(T, [H|A], R)
    ).
xyz([], A, A).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Prolog의 내장 역기능 기능이 이상하게 작동

분류에서Dev

Kotlin의 내장 "지연"기능이 실제로 어떻게 작동합니까?

분류에서Dev

내 기능에서 "+"가 이상하게 작동합니다.

분류에서Dev

'constexpr'기능의 이상한 동작?

분류에서Dev

함수 내부의 Internet Explorer 기능이 작동하지 않음

분류에서Dev

기능 내부 기능이 작동하지 않습니까?

분류에서Dev

이미지의 src 저장 기능이 작동하지 않습니다.

분류에서Dev

클릭 기능 내부의 Jquery 변경 기능이 제대로 작동하지 않습니다.

분류에서Dev

직렬화 가능한 게임 저장 기능이 작동하지 않음

분류에서Dev

내 프로그램이 작동하지 않는 이유는 무엇입니까 (파이썬 도움말의 역기능)?

분류에서Dev

내 기능의 FOSUserBundle에서 "등록 확인"이 작동하지 않습니다.

분류에서Dev

Redux 미들웨어 내부의 기능이 작동하지 않음

분류에서Dev

'읽기'시스템 기능의 이상한 동작

분류에서Dev

분할 기능이 이상하게 작동합니까?

분류에서Dev

잘라 내기 기능이 작동하지 않음

분류에서Dev

내 checkall 기능이 작동하지만 uncheckall 기능이 작동하지 않는 이유

분류에서Dev

파이썬에서 인쇄 기능의 이상한 동작

분류에서Dev

Javascript, 내 onclick 기능이 작동하지 않는 이유

분류에서Dev

Nuxt 가져 오기 내부의 Vuex 작업 "기능이 아님"

분류에서Dev

기능 내에서 작동하지 않는 인쇄 기능 재정의

분류에서Dev

IIS / SSL 웹 사이트의 Zingchart에서 작동하지 않는 내보내기 기능

분류에서Dev

jquery Select2 기능의 검색 기능이 작동하지 않습니까?

분류에서Dev

Excel 용 Google 번역 기능이 작동하지 않음

분류에서Dev

onclick 기능이 작동하지 않는 이미지의 색상 변경?

분류에서Dev

LESS CSS 확장 기능이 예상대로 작동하지 않음

분류에서Dev

이 메모장 코드의 기능은 무엇이며 어떻게 작동합니까?

분류에서Dev

R에서 truncdist와 통합 기능의 '이상한'동작

분류에서Dev

Cloud Firestore의 where 기능이 작동하지 않는 이유

분류에서Dev

오늘 확장 기능이 작동하지 않는 SQLite 공유

Related 관련 기사

  1. 1

    Prolog의 내장 역기능 기능이 이상하게 작동

  2. 2

    Kotlin의 내장 "지연"기능이 실제로 어떻게 작동합니까?

  3. 3

    내 기능에서 "+"가 이상하게 작동합니다.

  4. 4

    'constexpr'기능의 이상한 동작?

  5. 5

    함수 내부의 Internet Explorer 기능이 작동하지 않음

  6. 6

    기능 내부 기능이 작동하지 않습니까?

  7. 7

    이미지의 src 저장 기능이 작동하지 않습니다.

  8. 8

    클릭 기능 내부의 Jquery 변경 기능이 제대로 작동하지 않습니다.

  9. 9

    직렬화 가능한 게임 저장 기능이 작동하지 않음

  10. 10

    내 프로그램이 작동하지 않는 이유는 무엇입니까 (파이썬 도움말의 역기능)?

  11. 11

    내 기능의 FOSUserBundle에서 "등록 확인"이 작동하지 않습니다.

  12. 12

    Redux 미들웨어 내부의 기능이 작동하지 않음

  13. 13

    '읽기'시스템 기능의 이상한 동작

  14. 14

    분할 기능이 이상하게 작동합니까?

  15. 15

    잘라 내기 기능이 작동하지 않음

  16. 16

    내 checkall 기능이 작동하지만 uncheckall 기능이 작동하지 않는 이유

  17. 17

    파이썬에서 인쇄 기능의 이상한 동작

  18. 18

    Javascript, 내 onclick 기능이 작동하지 않는 이유

  19. 19

    Nuxt 가져 오기 내부의 Vuex 작업 "기능이 아님"

  20. 20

    기능 내에서 작동하지 않는 인쇄 기능 재정의

  21. 21

    IIS / SSL 웹 사이트의 Zingchart에서 작동하지 않는 내보내기 기능

  22. 22

    jquery Select2 기능의 검색 기능이 작동하지 않습니까?

  23. 23

    Excel 용 Google 번역 기능이 작동하지 않음

  24. 24

    onclick 기능이 작동하지 않는 이미지의 색상 변경?

  25. 25

    LESS CSS 확장 기능이 예상대로 작동하지 않음

  26. 26

    이 메모장 코드의 기능은 무엇이며 어떻게 작동합니까?

  27. 27

    R에서 truncdist와 통합 기능의 '이상한'동작

  28. 28

    Cloud Firestore의 where 기능이 작동하지 않는 이유

  29. 29

    오늘 확장 기능이 작동하지 않는 SQLite 공유

뜨겁다태그

보관