質問するログイン新規登録

質問編集履歴

2

内容の充実化

2021/10/31 01:10

投稿

grape_ll
grape_ll

スコア83

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  prologを用いて,ある自然数(0を含む)Bを与えたときに,B以下となる自然数Aを列挙していく,というものをA=0からとA=Bから出していくという者の二通りで別々に組みたいのですが,勉強したてということもあり,うまくできません.
2
2
  欲しい結果としては,
3
- le(A,3).
3
+ le(A,s(s(s(0)))).
4
4
  A=0;
5
5
  A=s(0);
6
6
  A=s(s(0));
@@ -9,15 +9,17 @@
9
9
  もしくはこれの逆順で表示されるものです.
10
10
  s()は1を加算するように決まっていて,s(0)=1, s(s(0))=2のようになります.
11
11
 
12
+ Ubuntu20.04で行っています.
12
13
 
14
+
13
- 0から列挙していこうとして,次のようなものを書いたのですが,これだとMが加算されると0じゃなくなってしまい,うまく回らないです.
15
+ 0から列挙(昇順)していこうとして,次のようなものを書いたのですが,これだとMが加算されると0じゃなくなってしまい,うまく回らないです.
14
16
  ```prolog
15
17
  ils(M,N) :- M<N.
16
18
  le(0,_).
17
19
  le(s(M),N) :- le(M,N), ils(M,N).
18
20
  ```
19
21
 
20
- 次にA=Bから列挙しようとして次のようなものを描いたのですが,想定した動きをしてくれませんでした.
22
+ 次にA=Bから列挙(降順)しようとして次のようなものを描いたのですが,想定した動きをしてくれませんでした.
21
23
 
22
24
  ```prolog
23
25
  le(N,N).

1

内容の充実化

2021/10/31 01:10

投稿

grape_ll
grape_ll

スコア83

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,15 @@
1
1
  prologを用いて,ある自然数(0を含む)Bを与えたときに,B以下となる自然数Aを列挙していく,というものをA=0からとA=Bから出していくという者の二通りで別々に組みたいのですが,勉強したてということもあり,うまくできません.
2
+ 欲しい結果としては,
3
+ le(A,3).
4
+ A=0;
5
+ A=s(0);
6
+ A=s(s(0));
7
+ A=s(s(s(0))).
8
+ false
9
+ もしくはこれの逆順で表示されるものです.
10
+ s()は1を加算するように決まっていて,s(0)=1, s(s(0))=2のようになります.
11
+
12
+
2
13
  0から列挙していこうとして,次のようなものを書いたのですが,これだとMが加算されると0じゃなくなってしまい,うまく回らないです.
3
14
  ```prolog
4
15
  ils(M,N) :- M<N.