-
Notifications
You must be signed in to change notification settings - Fork 13
tamgucalc (fr)
Ce tableur, extrêmement léger, se lance instantanément dans votre terminal. Il vous permet de saisir des nombres, de définir des labels mais surtout de rentrer des formules numériques en Lisp. Vous pouvez ensuite sauvegarder vos feuilles de calcul avec leurs formules dans un fichier CSV. Vous pouvez aussi exporter vos feuilles en ne conservant que les données brutes.
Le code fait moins de 2000 lignes et est entièrement modifiable à votre convenance, si vous désirez rajouter vos propres options.
Par défaut, le tableur utilise les dimensions de votre terminal pour définir le nombre de lignes et de colonnes. La taille d'une colonne est 10 par défaut. L'ensemble de ces dimensions peut être modifié au sein du tableur. Notez que lorsque vous modifiez ces dimensions, celles-ci sont sauvegardés dans votre feuille de calcul.
Pour rentrer une valeur, il suffit de se positionner sur une cellule avec les flèches et d'entrer votre valeur. Vous pouvez alors passer à la cellule suivante avec les flèches ou appuyer sur la touche "entrée". Une cellule peut contenir des chiffres, des formules ou des labels.
Vous pouvez aussi utiliser la souris pour positionner le curseur sur une cellule particulière ou pour sélectionner un groupe de cellules.
Pour entrer une formule, il suffit de se positionner sur une cellule et de taper: '('. Lorsque votre formule est terminée, le système vérifie que les parenthèses s'équilibrent et il vous affiche le message: "Ready to compute".
Il suffit de presser: "entrée" pour qu'elle soit alors calculée.
Lorsque vous tapez une formule, vous pouvez utiliser les flèches pour choisir les cases qui entrent dans votre formule. Lorsque vous avez sélectionné une cellule, vous pressez "entrée" pour l'enregistrer dans votre formule.
Pour choisir un domaine de cellules, il vous faut d'abord choisir une première cellule, puis taper ".." (deux points) puis choisir une seconde cellule. tamgucalc remplace alors votre sélection automatiquement avec les règles suivantes:
Le choix d'une cellule apparaît sous la forme suivant:
- mat[i:j]: une seule cellule aux positions i,j.
- mat[:c][a:b]: 'c' est le numéro de colonne, 'a,b' sont les lignes de 'a' à 'b' sur la colonne 'c'.
- mat[l:][a:b]: 'l' est le numéro de ligne, 'a,b' sont les colonnes de 'a' à 'b' sur la ligne 'l'.
Notez, l'utilisation de "l:" et ":c" pour identifier lignes et colonnes.
Notez que lorsque vous définissez un domaine qui comprend plusieurs lignes et colonnes, tamgucalc introduit un opérateur "&&&" afin de fusionner l'ensemble des lignes choisies en un seul vecteur de données. De cette façon, votre sélection devient un seul élément.
(sum (&&& mat[1:][1:3] mat[2:][1:3]))
Les formules dans tamgucalc doivent être écrite dans le Lisp défini pour Tamgu (voir la documentation). Vous pouvez définir des lambdas fonctions, des fonctions (defun) ou simplement utiliser les opérateurs de base.
Important Par défaut, toutes les valeurs numériques sont des "double" au sens C (type 'float' pour tamgu).
Les opérateurs traditionnels tels que : +,-,/, * sont disponibles.
Vous pouvez aussi utiliser: "sum" et "product". Notez que "+" est utilisé pour des valeurs atomiques et que "sum" s'applique à la fois sur les listes et les valeurs atomiques.
L'ensemble des méthodes Lisp définie dans Tamgu (voir la documentation) est d'ailleurs disponible, ainsi que les méthodes disponibles pour les listes, telle que "size" par exemple.
# addition
(+ mat[6:1] mat[7:1] mat[10:1] )
# Reste d'une division
(% mat[6:1] mat[7:1])
# logarithme Népérien
(ln mat[9:1] )
# Vous pouvez encapsuler vos formules
(* 2 (+ mat[6:1] mat[7:1] mat[10:1]))
# Tester une valeur
(if (>= mat[8:2] 60) 20 0)
# Appliquer une modification sur une liste et faire la somme
(sum (_map '(* 2) mat[:1][6:10]))
# Filtrer les valeurs sur lesquelles appliquer notre somme
(sum (_filter '(> 20) mat[:1][6:10]))
Vous pouvez aussi définir des lambdas fonctions dans vos cellules et effectuer tous les calculs voulus y compris des récursions.
# Une fonction simple pour calculer la moyenne
((lambda (x) (/ (sum x) (size x))) mat[1:][1:10])
# On peut aussi récurser
((lambda (x)
(if (eq x ())
0
(+
(* 2 (car x))
(self (cdr x)))))
mat[:1][6:10])
Quand vous définissez une fonction avec "defun" dans une cellule telle que:
(defun avg(x) (/ (sum x) (size x)))
La cellule prend alors le nom de cette fonction. Vous pouvez désormais l'utiliser dans votre feuille comme nouvel opérateur:
(avg mat[:1][1:8]))
Il est possible aussi de rentrer des formules traditionnelles (regular formulas) en commençant votre définition avec un "=" and en finissant avec un ";".
= mat[1:2] + mat[2:4] - ln(mat[3:4]);
Certaines valeurs sont disponibles telles que: _pi, _phi, _tau et _e. Vous pouvez les utiliser directement dans votre code. Notez que lorsque vous tapez l'une de ces valeurs dans une formule, elles sont remplacées par leur nom grec.
Des fonctions peuvent également être définies directement dans le code du tamgucalc et ensuite utilisées dans vos feuilles. Notez que si vous avez l'intention de partager vos feuilles, vous devrez également partager ces fonctions. Un certain nombre ont déjà été rajoutées à titre d'exemple:
average calcule la moyenne d'une sélection: (average mat[:1][1:10])
fillcolumn remplit la colonne commençant à cell_i, cell_j avec le contenu de la sélection.
(fillcolumn (sort mat[:1][1:10] false) 1 2) remplit la colonne 2, depuis la ligne 1 avec les données triées de la sélection.
(fillcolumn (cauchy_distribution 20 0 1) 1 3) remplit la colonne 3 avec une distribution de Cauchy (voir chapitre 37: Random)
(fillcolumn (poisson_distribution 20 1) 1 4) remplit la colonne 4 avec une distribution de Poisson
fillrow remplit la ligne commençant à cell_i, cell_j avec le contenu de la sélection.
(fillrow (sort mat[:1][1:10] false) 1 2) remplit la ligne 1, depuis la colonne 2 avec les données triées de la sélection.
upto extrait la sous-liste dans sélection jusqu'à la valeur val.
(fillcolumn (sort (upto mat[:1][10:] 0) false) 1 2): remplit la colonne 2 avec la liste de valeur dans la colonne 1 jusqu'au premier 0.
Notez l'utilisation de mat[:1][10:] pour extraire une colonne complète à partir de la cellule 1,10.
tamgucalc offre quelques options:
- Contrôle+b : Mode noir (pour les terminaux à fond noir) également -b sur la ligne de commande
- Contrôle+i : Afficher/Masquer les index également -i sur la ligne de commande
- Contrôle+n : Afficher/masquer les messages également -n sur la ligne de commande
- Control+e : modifier une formule
- Contrôle+d : supprimer des cellules
- Contrôle+k : copie d'un groupe de cellules
- Contrôle+x : déplacer un groupe de cellules
- Contrôle+g : sauter à une cellule: écrire l,c.
- Contrôle+s : sauvegarde
- Contrôle+w : sauvegarde sous
- Contrôle+f : sauvegarde les données brutes
- Contrôle+r : permet de modifier le nombre de lignes et de colonnes affichés à l'écran: écrire l:c
- Contrôle+t : permet de modifier la taille d'une colonne
- Contrôle+q : permet de sortir
Vous pouvez trouver "tamgucalc" à: tamgucalc.tmg Une version plus avancée avec contrôle de la souris est disponible ici: tamgucalc_mc.tmg
Pour exécuter "tamgucalc" vous devez aussi vous procurer l'interpréteur "tamgu" dont des versions précompilées sont disponibles à:
- Mac OS: Version for macos
- Linux: Versions for linux:fedora, ubuntu, centos
Pour lancer tamgucalc: tamgu tamgucalc.tmg (fichier)
Notez que fichier est optionnel...