2

テストデータ

addEmployee(EmplID, Name1, Name2, TypeOfWork, Salary, TxnDate)
addEmployee("tjb1998", "eva", "mcdowell", "ra", 55000, 20).
addEmployee("tjb1987x", "ben", "xena", "cdt", 68000, q50).
addEmployee("tjb2112", "ryoko", "hakubi", "ra", 63000, 60).
addEmployee("tjb1987", "ben", "croshaw", "cdt", 68000, 90).
addEmployee("tjb3300m", "amane", "mauna", "ma", 61000, 105).

仕事の種類と特定の仕事の従業員数に従って、従業員ごとにグループ化したいと考えています。例えば:

ra 4
cdt 2
ma 1

以下は私が実行しようとしているクエリです

employee(TOW) :- addEmployee(_,_,_,TOW,_,_).
nmbrEmployeesOfSameType (N) :- N = #count { employee(TOW) }.

アドバイスしてください、私は Clingo の初心者レベルです

4

1 に答える 1

3

これを試して:

addEmployee("tjb1998", "eva", "mcdowell", "ra", 55000, 20).
addEmployee("tjb1987x", "ben", "xena", "cdt", 68000, q50).
addEmployee("tjb2112", "ryoko", "hakubi", "ra", 63000, 60).
addEmployee("tjb1987", "ben", "croshaw", "cdt", 60000, 90).
addEmployee("tjb3300m", "amane", "mauna", "ma", 61000, 105).


getType(P, X) :- addEmployee(X, _, _, P, _, _).

type(P) :- addEmployee(_, _, _, P, _, _).

result(P, S) :- S = #count{ I : getType(P,I)}, type(P).

#show result/2.

出力は次のようになります。

clingo version 4.5.3
Reading from test.lp
Solving...
Answer: 1
result("ra",2) result("cdt",2) result("ma",1)
SATISFIABLE

私のコードをコピーしてここで実行し、動作するかどうかを確認することもできます。

于 2015-12-06T07:43:14.887 に答える