Mode:
Duration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
:- dynamic(count/1).
:- dynamic(isDark/1).
count(0).
isDark(false).
updateUI :-
count(C),
isDark(D),
write('Counter: '), write(C), nl,
write('Theme: '), (D = true -> write('Dark') ; write('Light')), nl.
increment :-
count(C),
C1 is C + 1,
retract(count(C)),
assert(count(C1)),
updateUI.
decrement :-
count(C),
C1 is C - 1,
retract(count(C)),
assert(count(C1)),
updateUI.
toggleTheme :-
isDark(D),
D1 is (D = false -> true ; false),
retract(isDark(D)),
assert(isDark(D1)),
updateUI.
reset :-
retract(count(_)),
assert(count(0)),
updateUI.
% Simulate actions
updateUI,
increment,
increment,
toggleTheme,
decrement,
reset.Coding works best on desktop or with an external keyboard.