본인의 코스에서이 간단한 DCG 과제 (프롤로그)를 해결하려고합니다. 문제는 DCG를 만드는 것입니다. 나는 이미 내 규범에서 담론의 우주를 정의했다. 그러나이 질문은 저에게 약간 오도하는 것입니다. 내가 읽은 것과 아는 것에 따르면, 내 노트와이 Learn Prolog Now를 사용하십시오! - 링크 : http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse29DCG (프롤로그) 문제
(a^nb^nc^n)으로 DCG를 구성 할 수 있습니다. 여기서 b와 c는 보통 글자이고 n은 글자가 곱해질 숫자입니다. 그러나, 내 질문은 이와 같습니다.
"언어 0n1n0n을 인식 (또는 생성)하기위한 DCG 설계 및 구현"
누군가 나를 도와주세요. 질문에서 정확히 원하는 것은 무엇입니까?
답변 중 하나와 관련하여 다음 코드를 사용해 보았습니다. I 생각
s --> [].
s(M) --> a(M),b(M),c(M).
a --> [].
a(New) --> [0], a(Cnt),{New is Cnt+1}.
b --> [].
b(New) --> [1], b(Cnt),{New is Cnt+1}.
c --> [].
c(New) --> [0], c(Cnt),{New is Cnt+1}.
count(T, N) --> [0,1,0], count(T, M), {N is M+1}.
count(_, 0) --> [].
's의 -> [] .' 쓸모가 없다. 'a -> [] .'는'a (0) -> [] .' 등이어야합니다. * EDIT * 섹션에 게시 했으므로 이러한 변경 사항은 생성 부분에서도 필요합니다. – CapelliC
나는 당신에게 알려주려고 노력할 것이다! 감사합니다 – Cuta
그냥 알려 드리겠습니다. Learn Prolog Now의 예를 따랐습니다. 링크. http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse29. 나는 또한 이것을 시도했다 : s -> a, s, b, s, c. 그것은 [a, b, c]와 완벽하게 작동하지만, [a, a, b, b, c, c]를 입력하면 false가됩니다. – Cuta