Afficher les tables de multiplication en ligne de commande
Avec les lignes de commande, on peut tout faire, même afficher les tables de multiplication ! Pratique uniquement si vous avez un trou de mémoire et pas envie de sortir la calculatrice.
La commande à utiliser :
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
La même chose en perl (par Crabuchon) :
perl -e 'print join "\n", map {$a=$_;join "\t",map {$_."x$a=".$a*$_} (1 .. $a) } (1 .. 9)'
La version Python (par skaa) :
python -c 'print "\n".join(["\t".join(["%dx%d=%d"%(x,y,x*y) for x in range(1,y+1)]) for y in range(1,10)])'
La version Bash (par fredt) :
for i in {1..9}; do for j in $(seq 1 $i); do echo -ne $i×$j=$((i*j))\\t;done; echo;done
Et le résultat :
1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
12 Commentaires pour "Afficher les tables de multiplication en ligne de commande"
Flux des commentaires de cet article Ajouter un commentaireJ'aurais moins de mal à retenir les tables que la commande permettant de les afficher !
combien de temps tu as mis pour écrire cette ligne de commande ?
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
..... faut être calé quand même
@JackDaniels93 : moi aussi.
@Nwobhm : ce n'est pas moi l'auteur original, mais faut l'avouer elle est complexe.
heu
bc est plus utile a mon sens
echo 'scale=30;(1+sqrt(5))/2' |bc
voila
Serais-je banné? Aucun moyen de poster le moindre commentaire depuis ce matin...
J'avais commenté ce matin, pensant que j'avais oublié de valider j'ai recommenté il y a 10 secondes. Pas mieux. Il semble que le système jette à la poubelle mes commentaires s'ils contiennent une adresse internet (pas de conversion annoncée dans les notes).
Je disais donc, qu'en plus d'avoir découvert la commande seq, ton astuce de geek m'avait permis aussi de découvrir le site originel en cherchant la source de ton astuce.
A découvrir et parcourir, plein d'astuces, même si la plus populaire est assez décevante dans sa banalité, même si il est vrai très utilisée : sudo !!
(après moultes galipettes, dont édition progressive du message jusqu'à détection du contenu, citer le site originel fait apparaître le message suivant : Votre commentaire a été marqué comme spam. Si ceci est une erreur, contactez l\'administrateur)
@makidoko : je sais pas trop ce qui se passe, Askimet à marqué comme spam tout tes commentaires, sauf celui-ci...
Il classe en spam dès que je met le nom du site. Même si je ne met pas le protocole, même si je ne met pas le [point com] et autres, juste le nom du site, hop poubelle.
La version python:
python -c 'print "\n".join(["\t".join(["%dx%d=%d"%(x,y,x*y) for x in range(1,y+1)]) for y in range(1,10)])'
En bash, sans passer par awk et sed :
version «complète» :
for i in {1..9}; do for j in {1..9}; do echo -ne $i×$j=$((i*j))\\t;done; echo;done
version «triangle» :
for i in {1..9}; do for j in $(seq 1 $i); do echo -ne $i×$j=$((i*j))\\t;done; echo;done
(note: × n'est pas x)
@skaa @fredt : c'est ajouté.
Pas mal !
Sous Arch Linux, Python 3 est utilisé par défaut. Pour la commande python, il faut donc utiliser python2 au lieu de python. Ou rajouter des parenthèses.