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/en-random.lali | 103 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 examples/speech/en-random.lali (limited to 'examples/speech/en-random.lali') diff --git a/examples/speech/en-random.lali b/examples/speech/en-random.lali new file mode 100755 index 0000000..6c2d0a6 --- /dev/null +++ b/examples/speech/en-random.lali @@ -0,0 +1,103 @@ +;; Execute this script an say the proper combo found in the elements +;; of the words variable. +;; +;; A say may be the following examples (one example per line): +;; okay +;; no no +;; yes +;; (etc., there are more combos). + +(set '_ '_) + +(set 'words '((yes +1) + (okay +0) + (no -1))) + +(set 'answer '((+2 "positival / wanting" +1) + (+1 "neutral / be" _) + (+0 "negatival / awaying" -1))) + +(set 'question '((+2 "do irie" +1) + (+1 "do" _) + (+0 "do not" -1))) + +(defun assoc (el lst) + (fill + ((dif el (car (car lst))) (car lst)) + ((ap lst) '(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-ups-and-downs () + (random +2)) + +(defun train-ups () + (+ +1 (random +1))) + +(defun train-downs () + (random +1)) + +;; ^^ end of training options ^^ + +(defun get-answer-score (the-words) + (fill + ((without f the-words) + (prog + (princ "\n~\n>> unrecognized answer") + (newline) + f)) + (f (eval (cons + the-words))))) + +(defun main () + (progs + f + ;; vv change training (just) here (below) vv + (set 'target-question (train-ups-and-downs)) + (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-ups-and-downs)) + (princ "answer ->") + (princ (car (cdr (assoc target-answer answer)))) + (princ ".") + + (newline) + (princ "say:") + + (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 ">> wrong") (newline))) + (f f))) + + +(princ "Reply to the question, according to the answer.\nSay a combination (one or more) of the following words:\nyes, okay, no.\n\nAnother question will appear, if you say correctly.\nYou may say f to quit training.\n-~-\n") +(newline) +(loop) -- cgit