Skip to content

Instantly share code, notes, and snippets.

@iSarCasm
Last active June 14, 2018 14:28
Show Gist options
  • Save iSarCasm/0a6941a97d4ce414223275a1ae3b4dea to your computer and use it in GitHub Desktop.
Save iSarCasm/0a6941a97d4ce414223275a1ae3b4dea to your computer and use it in GitHub Desktop.
123
event(e1, 0.9).
event(e2, 0.9).
event(e3, 0.9).
event(e4, 0.9).
event(e5, 0.9).
sum(2, 3, e0).
sum(e0, e0, e1).
sum(3, e1, e2).
solve(E, RES):-
sum(X1, X2, E),
get(X1, R1),
get(X2, R2),
RES is R1 + R2,
write(RES).
get(X, R):-
number(X),R is X;
solve(X, R).
event(e1, 0.9).
event(e2, 0.9).
event(e3, -0.3).
event(e4, -0.4).
event(e5, -0.3).
ct_summ(X, Y, RES):-
X >= 0, Y >=0, RES is X + Y - X * Y, write("X + Y - X * Y");
X >= 0, Y =< 0, RES is (X + Y) / (1 - min(X, -Y)), write("(X + Y) / (1 - min(-X, Y))");
X =< 0, Y >=0, RES is (X + Y) / (1 - min(-X, Y)), write("(X + Y) / (1 - min(-X, Y))");
X =< 0, Y =<0, RES is X + Y + X * Y, write("X + Y + X * Y").
c1(RES):-
event(e1, W),
W2 is 0.8,
RES is W * W2,
write("C1 = "), write(W), write(" * "), write(W2), write(" = "), writeln(RES).
c2(RES):-
event(e2, W1),
event(e3, W2),
R1 is W1 * 0.9,
R2 is W2 * 0.7,
write("C2 = "), write(R1), write(" + "), write(R2), write(" = "),
ct_summ(R1, R2, RES),
write(' = '), writeln(RES), !.
c3(RES):-
event(e4, W1),
event(e5, W2),
R1 is W1 * 0.6,
R2 is 1 - W2 * 0.5,
write("C3 = "), write(R1), write(" + "), write(R2), write(" = "),
ct_summ(R1, R2, RES),
write(' = '), writeln(RES), !.
c4(RES):-
c2(C2),
c3(C3),
RES is min(C2, C3) * 0.9,
write("C4 = ("), write(C2), write(" AND "), write(C3), write(") * 0.9 = "), writeln(RES), !.
c5(RES):-
c1(C1),
c4(C4),
RES is max(C1, C4) * 0.8,
write("C5 = ("), write(C1), write(" OR "), write(C4), write(") * 0.8 = "), writeln(RES), !.
event(e1, 0.9).
event(e2, 0.9).
event(e3, -0.3).
event(e4, -0.4).
event(e5, -0.3).
ct_summ(X, Y, RES):-
X >= 0, Y >=0, RES is X + Y - X * Y, write("X + Y - X * Y");
X >= 0, Y =< 0, RES is (X + Y) / (1 - min(X, -Y)), write("(X + Y) / (1 - min(-X, Y))");
X =< 0, Y >=0, RES is (X + Y) / (1 - min(-X, Y)), write("(X + Y) / (1 - min(-X, Y))");
X =< 0, Y =<0, RES is X + Y + X * Y, write("X + Y + X * Y").
imp(X, W, NAME, RES):-
X >= 0,
RES is X * W,
write(NAME), write(" = "), write(X), write(" * "), write(W), write(" = "), writeln(RES), !;
write(NAME), write(" = 0 (nrev e1 < 0)"), RES is 0.
c1(RES):-
event(e1, W), imp(W, 0.8, 'C1', RES).
c2(RES):-
event(e2, W1),
event(e3, W2),
R1 is W1 * 0.9,
R2 is W2 * 0.7,
write("C2 = "), write(R1), write(" + "), write(R2), write(" = "),
ct_summ(R1, R2, RES),
write(' = '), writeln(RES), !.
c3(RES):-
event(e4, W1), W1 >= 0,
event(e5, W2),
R1 is W1 * 0.6,
R2 is 1 - W2 * 0.5,
write("C3 = "), write(R1), write(" + "), write(R2), write(" = "),
ct_summ(R1, R2, RES),
write(' = '), writeln(RES), !;
c4(RES):-
c2(C2),
c3(C3),
RES is min(C2, C3) * 0.9,
write("C4 = ("), write(C2), write(" AND "), write(C3), write(") * 0.9 = "), writeln(RES), !.
c5(RES):-
c1(C1),
c4(C4),
RES is max(C1, C4) * 0.8,
write("C5 = ("), write(C1), write(" OR "), write(C4), write(") * 0.8 = "), writeln(RES), !.
@iSarCasm
Copy link
Author

event(e1, 0.9).
event(e2, 0.8).
event(e3, 0.7).
event(e4, 0.6).
event(e5, 0.5).

rule(imp, e1, 0.7, c1).
rule(imp, e2, 0.5, c1).

dosomething([]).
dosomething(RES, [H1|T1], [H2|T2]) :- writeln("HELLO"), process(0, H1, H2, RES), dosomething(RES, T1, T2).

add(X, X1, X2) :-
X is X1+X2.

process(OldRES, X1, X2, RES):-
writeln(X1),
writeln(X2),
writeln(RES),
get(X1, R1),
get(X2, R2),
RES is OldRES + (R1 * R2),
writeln(RES).

solve(N, RES):-
findall(X, rule(imp, X, _, N), V1),
findall(X, rule(imp, _, X, N), V2),
dosomething(RES, V1, V2),
writeln(V1), writeln(V2),
write(RES).

get(N, R):-
number(N),R is N;
event(N, Y), R is Y;
solve(N, R).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment