1. ホーム
  2. list

[解決済み] PrologでListの要素をプリントアウトする

2022-02-14 15:01:32

質問

ID、名前、成績の3つの要素を含むリストXがあります。すべてユーザーの入力から取得したものです。

read_student_info([A, B, C]),
nl, nl, menu([[A, B, C] | X]).

read_student_info([A, B, C]) :-
  write('\tStudent ID: '),
  read(A),
  write('\tStudent Name: '),
  read(B),
  write('\tStudent Grade: '),
  read(C).

さて、リストからの要素を表示したい。例えば、ID = 3、名前 = Tom、学年 = 78の生徒がいるとします。それをプリントアウトしたいのです。現在、私がいじくりまわしている関数は、これです。

show_records(X) :-
  X = [A | B],
  A = [C | D],
  id = write(C),
  name = format("~s", [B]),
  grade = write(D),
  show_records(B).

しかし、私は自分が何をしているのかほとんど分からないことを最初に認めます。何かお手伝いいただけると幸いです。

どのように解決するのですか?

というのは、掃除の方法を提案しているだけです。

show_records([]).
show_records([A|B]) :-
  format('ID = ~w\tName = ~w\tGrade = ~w~n',A),
  show_records(B).

をテストします。

?- show_records([[1,abel,10], [2,goofy,4]]).
ID = 1  Name = abel Grade = 10
ID = 2  Name = goofy    Grade = 4

明らかにタブは最適ではないが、シンプルに使える