Archives 2012
Saturday, 28 January 2012
|
Écrit par
Grégory Soutadé

Tout le monde sait que les méchants capitalistes de droite dirigent et contrôlent la presse. Tandis que la gauche défend corps et âme une valeur fondamentale de la république Française : la liberté de la presse.

Jean-Luc Mélenchon invité sur Europe 1 peu après l'incidie de Charlie Hebdo

Jean-Luc Mélenchon sur Europe 1 - Matinale du... par lepartidegauche

Heureusement en 2012 ça va changer. Quand Jean-Luc Mélenchon est en froid avec une équipe de journalistes, ça donne ça :

Le 30 août 2011. Le petit journal couvre l'université d'été de Jean-Luc Mélenchon

Veuillez installer Flash Player pour lire la vidéo

 

Le 14 décembre 2011. Manifestation inter syndicale, mais contre qui ?

Veuillez installer Flash Player pour lire la vidéo

 

Le 19 janvier 2012. Déplacement de Jean-Luc Mélenchon à Metz, apparemment l'équipe du Petit Journal n'est plus la bienvenue.

Veuillez installer Flash Player pour lire la vidéo

 

Monday, 23 January 2012
|
Écrit par
Grégory Soutadé

Il y a peu j'avais fait un article sur un petit utilitaire IN DIS PEN SABLE. Autojump de son petit nom. Pour ceux qui ont oublié : Autojump permet de se déplacer rapidement dans l'arborescence en enregistrant les dossiers dans lesquels on va le plus souvent puis en les rendant accessible via la commande "j" suivi d'un pattern. Exemple, je suis à la racine de mon dossier (~/), il me suffit de taper "j kc" pour aller directement à "/home/soutade/projets/kc". Plus fort encore, si je tape "j k[tab]" la complétion me donne directement "j "/home/soutade/projets/kc"".

J'avais adapté Autojump à ma sauce pour qu'il étende la commande cd et j'avais aussi rajouté d'autres options pour gérer la base de données. Mise à part quelques corrections mineures, mes modifications n'ont pas été intégrées dans la version originale (différence de philosophie principalement).

Bref, ceci est un temps révolu. Ma nouvelle version d'Autojump est arrivé : Autojump2 (pour garder la référence à la version originale). Ce n'est pas un fork, ce n'est pas non plus une vraie suite puisque le code a été totalement ré écrit.

Autojump2 c'est donc plus fort, plus rapide et plus intelligent qu'Autojump*. Comme dans ma version modifiée, on n'utilise plus "j", mais directement "cd", on peut ajouter/retirer/modifier nos dossiers préférés à la base, les retrouver grâce à la complétion automatique. Et surtout grande nouveauté : lister automatiquement un ensemble de répertoire !! Toutes les fonctions de cd sont préservées et il n'y a plus un accès à la base pour chaque utilisation de cd (seulement quand c'est nécessaire).

Exemple tiré du README

Arborescence

proj/
|--- v1/
|--- v2/
|--- v3/
|--- branch/
|--- v2/

 

cd --add proj/v2
>>> '/home/soutade/proj/v2' correctly added to database
cd -a proj/v1
>>> '/home/soutade/proj/v1' correctly added to database
cd -a proj/\\*
>>> '/home/soutade/proj/*' correctly added to database
cd --add proj/branch/v2
>>> '/home/soutade/proj/branch/v2' correctly added to database

cd --list
/home/soutade/proj/branch/v2
/home/soutade/proj/v1
/home/soutade/proj/v2
/home/soutade/proj/*
>>> /home/soutade/proj/branch
>>> /home/soutade/proj/v1
>>> /home/soutade/proj/v2
>>> /home/soutade/proj/v3

cd v2
/home/soutade/proj/branch/v2

cd v[tab][tab][tab]
v__1__/home/soutade/proj/branch/v2
v__2__/home/soutade/proj/v1
v__3__/home/soutade/proj/v2
v__4__/home/soutade/proj/v3

cd v__2
/home/soutade/proj/v1

cd v[tab][tab][tab]
v2__1__/home/soutade/proj/branch/v2
v2__2__/home/soutade/proj/v2

cd v2__2
/home/soutade/proj/v2

*Aucun benchmark n'a été réalisé

Sunday, 08 January 2012
|
Écrit par
Grégory Soutadé

Calcul mental

Introduction

Voici quelques techniques pour accélérer le calcul mental. Ces techniques sont très *personnelles* et nécessitent de déjà bien savoir manipuler les méthodes traditionnelles.

Quand on manipule des nombres toute la journée, on est souvent amené à faire des opérations de tête (calcul mental). Un ordinateur, lui, n'a pas de problème, tous les chiffres sont représentés en base 2 (binaire, 0 et 1), les opérations sont donc simples et il est capables de faire des boucles rapidement, trop facile. En plus il a plein de mémoire ... Contrairement à un ordinateur, nous utilisons majoritairement le système décimal :

  • C'est cool
  • On a dix doigts
  • Ça donne des chiffres ronds

Bref, outre le pourquoi du comment de l'utilisation de cette base, le système décimal impose (comme les autres systèmes) des règles à respecter pour chaque opération (+, -, *, /). On apprend ses règles à l'école, je ne reviendrai donc pas dessus.


Calcul par approximation et raffinage

Décomposition

L'idée de cette technique est de transformer une opération "complexe" en une somme d'opérations simples. En base décimale on pourrait qualifier une "opération simple" comme étant une opération portant sur des nombres ronds. On va donc transformer un des deux opérandes (nombre de part et d'autre de l'opérateur [+, -, *, /]) vers son entier rond le plus proche, effectuer l'opération (qui devient "triviale") puis appliquer la différence. Un exemple vaut mieux qu'un long discours :

198 + 43 (qui équivalent à (200 - 2) + 42)
--> 200 + 43 = 243
243 - 2 = 241

Avec la méthode classique de calcul on obtient :
198 + 43
8 + 3 = 11 --> je pose 1 et je retiens 1 (résultat intermédaire 1)
4 + 9 = 13
13 + 1 = 14 --> je pose 4 et je retiens 1 (résultat intermédaire 41)
0 + 1 = 1
1 + 1 = 2
Résultat final 241

Pour cet exemple on note qu'avec la méthode classique il faut 7 opérations contre 3 pour la technique optimisée. Il y a donc un net avantage à décomposer l'opération. Il faut cependant faire attention, l'opération finale de soustraction peut entraîner des erreurs de calculs.

Calcul de gauche à droite

Dans la série "approximation puis raffinage" il y a aussi l'astuce du calcul de "gauche à droite". Mais on nous apprend le contraire ??? Ben oui... Sauf que le calcul de "gauche à droite" a un gros avantage : économiser de la mémoire. Si on reprend l'exemple précédent (la méthode classique), on remarque que pour une opération membre à membre il faut "poser" un chiffre, puis lui appliquer la retenue précédente. Alors que si on effectue le même calcul de gauche à droite, on a tout de suite le résultat intermédiaire (approximation) que l'on raffine au fur et à mesure, nul besoin de conserver une retenue puisque l'on réalise directement l'opération de propagation :

198 + 43
9 + 4 = 13
1 + 1 = 2 (résultat intermédiaire 238)
8 + 3 = 11
3 + 1 = 4
Résultat final 241

En terme de nombre d'opérations, on n'est pas forcément beaucoup plus performant qu'avec la méthode classique. Mais en terme de mémorisation, c'est beaucoup plus efficace, et puis si on se trompe sur les dernières opérations, le résultat sera globalement approché (pratique pour des vérifications).

 

Dans le désordre

Il est parfois plus facile de réaliser une suite opération dans un ordre différent de l'ordre initial. Par exemple:

17 + 44 + 23

Transformons le en :

17 + 23 + 44

17  + 23 = 40 (facile grâce au 7 et au 3 qui sont complémentaires)
40  + 44 = 88

Néanmoins, réordonner une suite n'est pas des plus trivial.

 

Multiplication

Pour ce qui est de la multiplication, il faut combiner les deux techniques :

56 * 13 --> équivalent à : (56 * 10) + (56 * 3)
56 * 10 = 560 (premier résultat intermédiaire)
56 *  3
3 * 5 = 15
3 * 6 = 18
15 * 10 = 150
150 + 18 = 168 (second résultat intermédaire)
On arrive à 560 + 168
5 + 1 = 6 (résultat intermédiaire 660)
6 + 6 = 12
1 + 6 = 7 (résultat intermédiaire 728)
0 + 8 = 8
Résultat final 728

Avec la méthode classique :

56 * 13
6 * 3 = 18 --> je pose 8, je retiens 1
3 * 5 = 15
15 + 1 = 16
16 * 10 = 160
160 + 8 = 168 (premier résultat intermédiaire)
6 * 1 = 6
5 * 1 = 5
5 * 10 = 50
50 + 6 = 56
56 * 10 = 560 (second résultat intermédiaire)
On arrive à 560 + 168
0 + 8 = 8
6 + 6 = 12 --> je pose 2, je retiens 1 (résultat 28)
5 + 1 = 6
6 + 1 = 7
Résultat final 728

En comparaison : moins d'opérations, des opérations plus simples à réaliser et moins de résultats à mémoriser.

Il faut cependant faire attention : ce procédé n'est pas "naturel" et peut facilement entraîner des erreurs de calcul. Dans le doute, il vaut mieux décomposer les opérations sur un bon vieux papier !


Division

Il n'y a aucune astuce concernant la division, c'est une opération trop complexe. On peut néanmoins parfois se contenter d'une approximation pour faciliter les calculs : 13 / 4,2 (= 3,095) --> 13 / 4 --> 12 / 4 = 3. On peut aussi annuler la virgule en multipliant par 10 et calculer 130/42 ~= 3,010.

 

Tables de multiplications

En général les tables de multiplications jusqu'à 5 ne posent pas de problème, au-delà il peut apparaitre certaines difficultés. Néanmoins en décomposant l'opération on peut facilement retomber sur nos pattes :
8 * 7 = (8 * 5) + (8 * 2) = 40 + 16 = 56

La table de 10 est triviale
La table de 9 est facile à calculer : Pour tout x on effectue, 9 * x = (x - 1) * 10 - x.
Exemple : 9 * 4 = (4 - 1) * 10 - 4 = 30 - 4 = 26
Pour les tables de 8, 7 et 6, voir la technique plus haut.
La table de 5 est évidente
Pour la table de 4, on peut effectuer le calcul en 2 fois avec une multiplication par deux
Exemple : 8 * 4 = (8 * 2) * 2 = 16 * 2 = 32
Pour la table de 3 le plus simple est de passer par une addition :
Exemple : 8 * 3 = (8 * 2) + 8 ou 8 + 8 + 8 = 16 + 8 = 24
Les tables de 2, 1 et 0 sont simples également


Conclusion

Ces techniques permettent de calculer plus rapidement et en utilisant moins de mémoire, mais une utilisation régulière peut entraîner des erreurs (surtout lors du raffinage). L'important dans ce genre d'exercice est d'avoir une bonne représentation mentale (graphique) de l'opération en cours (quelle que soit la méthode utilisée).