🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

Q&A

解決済

1回答

2327閲覧

prologによるリストの最小値探索

submaru

総合スコア18

Prolog

Prologは、非手続き型プログラミング言語です。述語論理を使った論理型言語と言われており、自然言語解析や理解、推論などのAIに有効です。エキスパートシステム開発などに用いられています。

0グッド

0クリップ

投稿2021/06/25 10:19

編集2021/06/26 13:34

前提・実現したいこと

prologを使ってリストの最小値とその値が先頭から何番目かを表示させたい。

発生している問題

1回目の処理では正しく値が更新されているが、2回目以降では条件に合っているのに望まれる再帰処理に分岐されない。

?- getminth([5,4,1,3,10,8,1,2],M,N). M = 4, N = 2 .

該当のソースコード

prolog

1getminth([],M,N). 2getminth([L1|L2],M,N):- 3 getminth(L2,L1,1,M,N). 4getminth([],M1,N1,M,N). 5getminth([L1|L2],M1,N1,M,N):- 6 N2 is N1+1, M1 > L1, M is L1, N is N2, getminth(L2,L1,N2,M,N). 7getminth([L1|L2],M,N,M1,N1):- 8 N2 is N1+1, getminth(L2,M1,N2,M1,N2).

補足情報(FW/ツールのバージョンなど)

SWI-Prolog

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

変数増やしたらできました。

投稿2021/06/28 02:00

submaru

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問