From b18e1682318452372b0d8017f9ffe72db3e890db Mon Sep 17 00:00:00 2001 From: Daniel Cerqueira Date: Wed, 3 Sep 2025 12:55:14 +0100 Subject: add some *nice* lali scripts --- examples/speech/pt-random.lali | 107 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 examples/speech/pt-random.lali (limited to 'examples/speech/pt-random.lali') diff --git a/examples/speech/pt-random.lali b/examples/speech/pt-random.lali new file mode 100755 index 0000000..6ff31fb --- /dev/null +++ b/examples/speech/pt-random.lali @@ -0,0 +1,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 " +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) -- cgit