blob: 1b3407cca4f6066b3ff796e13642bc46849bfa46 (
plain)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
;; Executa este script e diz uma combinação dos elementos da variável
;; words.
;;
;; Alguns exemplos que podes dizer (um exemplo por linha):
;; okay
;; nao nao
;; sim
;; (etc., existem mais combinações).
(set '_ '_)
(set 'words '((sim +1)
(okay +0)
(nao -1)))
(set 'answer '((+2 "positival / querer" +0)
(+1 "neutral / ser" _)
(+0 "negatival / forar" -0)))
(set 'question '((+2 "sim / queres <verbo>" +0)
(+1 "<verbo>" _)
(+0 "não <verbo>" -0)
(-1 "<negação do vazio>" -1)))
(defun assoc (el lst)
(fill
((dif el (car (car lst))) (car lst))
((algo lst) '(f f f))
(f (assoc el (cdr lst)))))
(defun without (el lst)
(fill
((dif el (car lst)) f)
((algo (car lst)) t)
(f (without el (cdr lst)))))
;; vv begin of training options vv
(defun train-all-questions ()
(- (random +3) +1))
(defun train-negative-concord-questions ()
-1)
(defun train-good-questions ()
(random +2))
(defun train-all-answers ()
(random +2))
;; ^^ end of training options ^^
(defun get-answer-score (the-words)
(fill
((without f the-words)
(prog
(princ "\n~\n>> desconheço")
(newline)
f))
(f (eval (cons + the-words)))))
(defun main ()
(progs
f
;; vv change training (just) here (below) vv
(set 'target-question (train-all-questions))
(set 'it-quest (assoc target-question question))
(princ (car (cdr it-quest)))
(princ "\b?\n")
(newline)
;; vv change training (just) here (below) vv
(set 'target-answer (train-all-answers))
(princ "resposta ->")
(princ (car (cdr (assoc target-answer answer))))
(princ ".")
(newline)
(princ "dizer:")
(set 'question-score target-question)
(set 'my-words (readl))
(differ my-words '(f))
(set 'answer-score (get-answer-score
(map
(lambda (word)
(car (cdr (assoc word words))))
my-words)))
(princ "\n~")
(newline)
(fill
((dif target-answer
(+ question-score answer-score))
'correct)
(f 'wrong))))
(defun loop ()
(set 'res (main))
(fill
((dif res 'correct) (loop))
((dif res 'wrong) (prog (princ ">> errado") (newline)))
(f f)))
(princ "Perante a pergunta, dizer de acordo com a resposta.\nDizer uma combinação (de uma ou mais) das seguintes palavras:\nsim, okay, nao.\n\nSe acertares, aparecerá outra pergunta.\nPodes dizer f para sair deste treino.\n-~-\n")
(newline)
(loop)
|