;; 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 " +0) (+1 "" _) (+0 "não " -0) (-1 "" -1))) (defun assoc (el lst) (fill ((dif el (car (car lst))) (car lst)) ((ap lst) '(f f f)) (f (assoc el (cdr lst))))) (defun without (el lst) (fill ((dif el (car lst)) f) ((ap (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)