Cours de J (Leçon 3)
par Michel J. Dumontier
Quelques nouveaux concepts de base
Rappel : ce qui suit est le résultat de l'exécution d'un script J.
Les instructions sont en gras (sauf les NB.), les variables, verbes et expressions sont aussi en gras dans les commentaires.
Remarque : Ayant été confronté à bien des fautes de traduction lors de mes onze années passées à la normalisation d'APL (1978-1988), et comme j'aime utiliser les mots les mieux adaptés à la sémantique ou aux concepts rattachés à ceux-ci, j'ai souligné certains mots qu'il convient d'utiliser dans les futurs livres ou articles sur J (puisqu'il y a de nouveaux concepts par rapport à APL dans cette leçon).
NB. Quelques nouveaux concepts de base
expliqués
NB. rapidement (et
par ordre alphabétique en anglais!)
<:3
4 5 NB. Décrémenter de 1 (_1+) (Decrement)
2 3 4
+:
i.3 NB. Doubler (Double)
0 2 4
30 +.
45 NB. PGCD (vaut 15) (GCD)
15
-: 6
4 0 NB. Moitié (Halve)
3 2 0
j. 3 NB. Imaginaire (utilisation monadique)(Imaginary)
0j3
>:i.4 NB. Incrémenter de 1 (1+) (Increment)
1 2 3
4
_+ -_ NB. Indéterminé (le résultat) (Indeterminate)
_.
_ NB.
Infini (Infinity)
_
_:
4 5 NB.
Infini (monadique)(Infinity)
_
2 3
_: _5 NB. Infini (diadique)(Infinity)
_
NB. f/y insère la fonction f
NB. entre les items
de y
NB. /
est un adverbe, il modifie la
NB. fonction f sur sa gauche
NB. Ici, il modifie + pour donner la
NB. fonction somme sur une liste
+/ 3
4 5 NB. vaut
12
12
6 *.
15 NB. PPCM (vaut 30=2*3*5) (LCM)
30
2 [ 3 NB. Gauche
(voir Même) (Left)
2
'co' E.
'cocorico-co' NB. Membre d'un intervalle (Member of Interval)
1 0 1
0 0 0 1 0 0 1 0
NB. Les "uns" du résultat
b=. x E. y
NB. indiquent les
débuts des occurences
NB. du motif
x dans y
NB. ~.
est la fonction ESSENTIEL (NUB): elle a pour
résultat
NB. tous les items
différents dans l'ordre rencontré.
~. 2
3 5 2 4 7 5 NB. 2 3 5 4 7
2 3 5
4 7
NB. ~:
CRIBLE DE l'ESSENTIEL (NUBSIEVE): donne le crible
NB. de
l'ESSENTIEL
~: 2
3 5 2 4 7 5 NB. 1 1 1 0 1 1 0
1 1 1
0 1 1 0
NB. # COPIE (COPY): Preuve à l'aide de COPIE
1 1 1 0 1 1 0 # 2 3 5 2 4 7 5 NB. PREUVE
2 3 5
4 7
montrer=.] NB. montrer (show)
montrer a=. 3 4$i.12
0
1 2
3
4
5 6
7
8 9 10
11
oblique=. /. NB. adverbe OBLIQUE
(OBLIQUE)
NB. fonction
identique
NB. appliquée
obliquement (parralèlement à la 2e diagonale)
+ oblique a
0 0 0
1 4 0
2 5 8
3 6 9
7 10 0
11 0 0
NB. somme sur
appliquée obliquement
+/
oblique a
0 5 15
18 17 11
NB. Adverbe OBLIQUE autre exemple:
]t=.1 2 1 */ 1 3 3 1
1 3 3
1
2 6 6
2
1 3 3
1
</.t
1 | 3 2 | 3 6 1 | 1 6 3 | 2 3 | 1 |
somme=. +/
somme /.
t
1 5 10
10 5 1
NB. La multiplication est une somme OBLIQUE
NB. Rappel: #. est la fonction base
10 #.
2 3 5 7
2357
1 5
10 10 5 1 * 10^5 4 3 2 1 0
100000
50000 10000 1000 50 1
+/1 5
10 10 5 1 * (10^5 4 3 2 1 0)
161051
10 #.
somme /. t
161051
121*1331
161051
NB. ENFERMER ET EXTRAIRE (BOX et OPEN) (1)
<2 4
2 4 |
#<2
4 NB. c'est
un scalaire
1
$$<2
4 NB. sa forme est vide
0
NB. EXTRAIRE DE LA BOÎTE (OPEN the BOX):
NB. vous retrouvez
ce qu'il y a(vait) dans la boîte.
><2
4
2 4
divisepar =. %
NB.il
n'y a pas (encore) de caractères accentués en J
combiendans =. divisepar ~
NB. ~
commute les arguments (Passive)
12
divisepar 3 NB. est équivalent à:
4
3
combiendans 12 NB. a f~ b
est équivalent à
b f a
4
montrer a
0
1 2
3
4
5 6
7
8 9 10
11
+/a NB. sur le Rang 0
12 15
18 21
+/
" 1 a NB. Rang 1
6 22
38
NB. Réel/Imaginaire: éclate les deux parties
NB. d'un nombre
complexe en deux "réels"
+.
2j3
2 3
NB. Reflet f~ x est équivalent à x f x
(Reflexive)
^~ 3 NB. est équivalent
à 3 ^ 3
27
NB. ]
x Même: donne l'argument x (Same)
NB. Voir montrer=. ]
ci-dessus
(1) Ouvrir
n'est pas suffisant: on peut ouvrir sans extraire.
NB. Rappel: classement ascendant et
descendant:
/: 5
2 7 NB. classement
ascendant
1 0 2
\: 5
2 7 NB. classement
ascendant
2 0 1
NB. a /: b tri: l'argument gauche est
NB. trié selon le
classement ascendant de
NB. l'argument
droit.
1 2 3
/: 5 2 7 NB. tri selon le classement ascendant de
l'argument droit
2 1 3
1 2 3
\: 5 2 7 NB. tri selon le classement descendant de
l'argument droit
3 1 2
NB. Le tri croissant (intrinsèque)
est donc /:~
tric =. /:~
NB. Et le tri décroissant
(intrinsèque) est \:~
trid =. \:~
tric 2 5 1 7 3
1 2 3 5 7
trid 2 5 1 7 3
7 5 3 2 1
*: 7
NB. carré
49
%: 64 NB. racine carrée
8
NB. Table: x f/ y
NB. chaque cellule
de x est appliquée sur y en entier
1 2 3
*/ 1 2 3 4 NB. table de multiplication
1 2
3 4
2 4
6 8
3 6 9
12
NB. ___________________ FIN (de la leçon 3)