홈>
프롤로그에서 if 문이나 루프를 사용하는 방법을 이해하려고 노력하고 있지만 다른 상황이 많기 때문에 얻을 수 없습니다. 예 : 자바에서 쉽게 말할 수있는 것을 말하고 싶다면
if(x>=4) { } else if { }
(x>4)
까지 루프 동안 무언가를하고 싶다면
. 프롤로그에는 많은 문제가 있습니다. 알려주세요. 나는 숫자가있는 1 개의 list1이 있고 list2가 있다고 말하는 운동을 봅니다.
내가해야 할 일은 List1의 모든 숫자가 최대 10이어야하는 새 list2를 만들어야하지만 list2에서 각 숫자의 두 번 표시되어야합니다.
더 명확하게 설명 해야하는 것, list1에는 14라고 말하는 숫자가 있고 10보다 크므로 list2에서는 14,14 여야합니다 .if 문을 작성하거나 목록과 같은 루프를 예를 들어 어떻게 만들 수 있습니까? 충분히 읽었지만이 언어는 적어도 나에게 이상합니다. 예를 들어 if 문을 배웠지만이 경우에는 사용할 수 없습니다. 여기에서 검색했지만 스위트는 없습니다. 제발, 당신이 그것을 정리할 수 있다면 if 문과 루프가 좋은 설명을 제공하여 프롤로그에 들어갑니다. 프롤로그에서 시작하는 사람에게 더 이해하기 쉽도록 java if 문이나 루프와 같이 "유사한"을 작성하는 것이 도움이 될 것입니다.
doubles(List1,List2)
- 답변 # 1
관련 자료
- mysql - 단일 문에서 AND 및 OR을 사용하는 방법
- r - ifTHEN 문 사용 방법
- R에서 두 가지 조건으로 if 문을 사용하는 방법
- java - 여기서 어설 션을 어떻게 사용합니까?
- swift - PublishersCombineLatest를 사용하여 게시자 1 명을 얻는 방법
- Sublime Text 3에서 Git Bash를 사용하는 방법
- swift - 함수 유형은 어떻게 사용합니까?
- ios - 신속한 사용법 또는 운영자
- unreal 4 - Pitch, Roll 및 Yaw 대신 X, Y 및 Z를 사용하는 방법
- php - 양식에서 진술을 어떻게 에코 할 수 있습니까?
- python - 이미지에 pyautogui를 사용하는 방법
- algorithm - 파이썬에서 무한대를 사용하는 방법
- javascript - 개미 디자인 양식 initialValue 사용 방법
- fastify에서 ajv-i18n을 어떻게 사용할 수 있습니까?
- reactjs - mapStateToProps에서 useParams를 사용하는 방법은 무엇입니까?
- keras - 텍스트 분류에 GPT 3를 어떻게 사용할 수 있습니까?
- (Android) SQL에서 변수를 사용하는 방법은 무엇입니까?
- php 8 - PHP에서 "Nullsafe 연산자"를 어떻게 사용할 수 있습니까?
- string - Ruby 변수 인수에서 "# {…}를 사용하는 방법?
- C ++에서 #include없이 cout 및 cin을 사용하는 방법은 무엇입니까?
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
댓글을 달려고했지만 댓글이 길어졌습니다!
대부분의 Prolog 초보자가 가진 가장 큰 문제는 "이 다른 언어에서 X를하는 것처럼 Prolog에서 X를하는 방법"이라는 관점에서 생각한다는 것입니다. 프롤로그가 다른 언어와 전혀 다르기 때문에 여러 번 실패합니다. 예, 당신은 그것을 강요 할 수 있지만 결국에는 매우 잘못 작성된 Prolog 프로그램으로 끝납니다. 대신, 원래 문제에 대해 생각하고 프롤로그 작동 방식 측면에서 문제를 다시 변환해야합니다. Prolog에서는 컴퓨터에 일련의 단계를 사용하여 수행 할 작업 (제한적)을 지시하는 함수가 아니라 논리 및 산술 관계 (선언적)를 설명하는 사실과 규칙을 선언합니다. 이것은 Prolog의 "문제"가 아닙니다. 문제는 초보자가 Prolog를 이해하지 못한다는 것입니다.
Prolog 용어로 문제를 설명해 봅시다. 두 번째 목록이 첫 번째의 요소를 10보다 큰 요소와 복제하는 목록 간의 관계를 설명하는 규칙이 필요합니다. 관계
dup_greater_than_10
를 호출하겠습니다. .기본 사례는 간단하다 : 빈리스트
[]
빈 목록의 "dup보다 큰 10"입니다 :이제 비어 있지 않은 목록의 각 요소를 처리해야합니다. 프롤로그의 목록은 머리와 꼬리 (목록의 나머지)로 작성 될 수 있습니다.
[X|Xs]
첫 번째 요소가X
인 목록입니다. "목록의 나머지"(꼬리)는Xs
목록입니다. .X
사건에 대한 규칙을 작성합시다 이 경우 두 번째 인수는 첫 번째 인수와 동일한 머리 여야합니다. 이 규칙은[X|Ys]
[X|Xs]
목록의 "dup over than 10"버전입니다 만약X =< 10
목록Ys
Xs
목록의 "10보다 큰 dup"입니다. .이제
와이즈 비즈 와이즈 비즈X > 10
사건에 대한 규칙이 필요합니다 . 나는 그것을 설명하고 간단한 프롤로그의 글을 당신에게 남겨 두겠습니다 :Ys
의 복제를 표현하는 것이 얼마나 간단한 지보십시오 목록의 머리에? 프롤로그에서 다음 목록을 작성할 수 있습니다.Xs
이것은 초기 요소X
로 시작하는 목록입니다[X1, X2, ..., Xn|T]
, ...,X1
그리고 꼬리X2
.알다시피, "
Xn
는 어떻게합니까?" 진술과T
"이 렌치로 못을 두드리는 방법은 무엇입니까?"라고 묻는 것과 같습니다. 할 수는 있지만 비효율적이며 예쁘지 않습니다. 올바른 질문은 "어떻게 이런 종류의 문제를 해결합니까? 프롤로그에 문제가 있습니까? "if