LISTES et Commandes Évoluées (hp-48G/GX et +)

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

STREAM

Syntaxe
  • {liste} << procédure >> STREAM

    {liste} ayant au moins deux éléments

STREAM applique << procédure >> sur les deux premiers éléments d'une liste, en partant de la gauche.
Le résultat obtenu et l'élément suivant sont ensuite utilisés par << procédure >> jusqu'à EOL.

Message d'erreur obtenu si la liste comporte moins de deux éléments :

Code : Tout sélectionner

STREAM
Erreur:
Dimension
Incorrecte

Dans le MPO 106, la question, de savoir si l'on pouvait obtenir le maximum d'une liste via la commande MAX, a été posée.
La réponse est oui. Il faut en quelque sorte "MAPper" << MAX >> à la liste avec STREAM.

Exemple :

Code : Tout sélectionner

<<
	{ 1 2 3 4 55 6 7 8 } << MAX >> STREAM
>>
… renvoie 55 sur la pile.

Dans le même ordre d'idée, ce programme

Code : Tout sélectionner

<<
	{1 2 3 4 5 6} << * >> STREAM
>>
mais aussi celui-ci…

Code : Tout sélectionner

<< 
	{1 2 3 4 5 6} 
	<< → a b
		<<  a b * >>
	>> STREAM
>>
… renverront 720 sur la pile. C'est l'équivalent de ΠLIST.

Par contre…

Code : Tout sélectionner

<< 
	{1 2 3 4 5 6} 
	<< → a 
		<<  a a * >>
	>> STREAM
>>
… retournera les carrés de chaque élément, soit 1, 4, 9, 16, 25, 36, respectivement sur les niveaux 6, 5, 4, 3, 2 et 1 de la pile.
Modifié en dernier par FLISZT le 19 mars 2022 08:54, modifié 5 fois.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par Danny »

Eh oui bien vu, on ne pense pas assez souvent à STREAM :geek:

Petite correction, il manquait juste l’affectation de la variable locale b ci-dessous :

Code : Tout sélectionner

<< 
{1 2 3 4 5 6} 
	<< → a b
		<<  a b * >>
	>>
	STREAM
>>
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

Merci Danny pour la correction.

J'avais déjà corrigé une première coquille peu après avoir écrit ce post…
Deux sans trois ? J'espère.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

Voilà, c'est corrigé !
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

DOLIST

Syntaxe
  • {liste_1} {liste_2} … {liste_n } n << procédure >> DOLIST

    avec n le nombre de listes

    {liste_1} {liste_2} … {liste_n } ont impérativement le même nombre d'éléments

DOLIST applique << procédure >> à tous les nièmes éléments, colonne par colonne, d'une matrice qui aurait la forme :

Code : Tout sélectionner

	{liste_1} 
	{liste_2} 
	{liste_3} 
	    … 
	{liste_n}
soit en RPL :

Code : Tout sélectionner

	[ [éléments_liste_1]
	  [éléments_liste_2]
	  [éléments_liste_3]
	  [ … ]
	  [éléments_liste_n] ]

Message d'erreur obtenu si une liste, au moins, comporte un nombre éléments différents des autres :

Code : Tout sélectionner

DOLIST Erreur:
Invalid
Dimension
Message d'erreur obtenu si n est supérieur au nombre de listes :

Code : Tout sélectionner

DOLIST Erreur:
Too Few
Arguments
Message d'erreur obtenu si n, le nombre de listes, est omis :

Code : Tout sélectionner

DOLIST Erreur:
Invalid User
Function

Quelques exemples…

Tout d'abord avec une seule liste :

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 }
	1 							@ n = 1
	<< 2 - >> DOLIST
>>
Résultat : {-1 0 1 2 3}

Avec deux listes :

Code : Tout sélectionner

<<
	{1 2 3} {3 2 1} 
	2 							@ n = 2
	<< 2 - >> DOLIST
>>
Résultat : {1 1 2 0 3 -1}

Explications…
Pour mieux comprendre, il est utile de placer les deux listes l'une au-dessus de l'autre.
{1 2 3}
{3 2 1}

On va traiter tous les nièmes éléments (ici n = 2) en commençant par la première colonne.

Première colonne : {1 3}.
Le 1er élément n'est pas affecté. Le second, ici "3", se voit appliquer la procédure << 2 - >> ; résultat « 3 - 2 = 1 ».
Deuxième colonne : {2 2}.
À nouveau le 1er élément n'est pas modifié. Avec le second, ici "2", on obtient : « 2 - 2 = 0 ».
Troisième et dernière colonne : {3 1}.
Premier élément inchangé. Pour le deuxième et dernier élément, on obtient : « 1 - 2 = -1 ».

Avec trois listes :

Code : Tout sélectionner

<<
	{1 2 3} {3 2 1} {1 3 2}
	3 							@ n = 3
	<< 2 - >> DOLIST
>>
Résultat : {1 3 -1 2 2 1 3 1 0}

{1 2 3} ..... 1 2 3
{3 2 1} ..... 3 2 1
{1 3 2} .....-1 1 0

… etc, avec 4, 5 … n listes ! 8O


Mais de toute évidence, DOLIST sera le plus souvent utilisé avec une liste unique, de cette façon :

Syntaxe
  • {liste} 1 << procédure >> DOLIST
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées sur hp-48g et +

Message par FLISZT »

DOSUBS

Syntaxe
  • {liste} n << procédure >> DOSUBS

    avec n entier variant de 1 au nombre total d'éléments de {liste}

    n est le nombre d'éléments de chaque groupe pouvant être constitué, en parcourant {liste} de gauche à droite,
    en fonction du nombre total d'éléments de la liste.

Exemples avec {liste} = {1 2 3 4 5} et << procédure >> qui est de type opérateur unaire.

Pour n = 1, les groupes possibles sont {1}, {2}, {3}, {4}, {5} ;
l'unique élément de chaque groupe sera affecté par << procédure >>.

Pour n = 2, les groupes possibles sont {1 2}, {2 3}, {3 4}, {4 5} ;
seuls les 2ièmes éléments de chaque groupe seront affectés par << procédure >>.

Pour n = 3, les groupes possibles sont {1 2 3}, {2 3 4}, {4 5 6} ;
seuls les 3ièmes éléments de chaque groupe seront affectés par << procédure >>.

Pour n = 4, les groupes possibles sont {1 2 3 4}, {2 3 4 5} ;
seuls les 4ièmes éléments de chaque groupe seront affectés par << procédure >>.

Pour n = 5, l'unique groupe possible est {1 2 3 4 5} ;
seul le 5ième élément sera affecté par << procédure >>.


Autres exemples avec {liste} = {1 2 3 4 5} et << procédure >> qui est de type opérateur binaire.

Pour n = 2, les groupes possibles sont {1 2}, {2 3}, {3 4}, {4 5} ;
les 2 éléments de chaque groupe seront affectés par << procédure >>.

Pour n = 3, les groupes possibles sont {1 2 3}, {2 3 4}, {3 4 5} ;
les 2 derniers éléments de chaque groupe seront affectés par << procédure >>.

Pour n = 4, les groupes possibles sont {1 2 3 4}, {2 3 4 5} ;
les 2 derniers éléments de chaque groupe seront affectés par << procédure >>.

Etc.


Message d'erreur obtenu si n est supérieur au nombre d'éléments de {liste} :

Code : Tout sélectionner

DOSUBS Erreur:
Invalid
Dimension
Message d'erreur obtenu si n est inférieur au nombre d'arguments nécessaires à << procédure >> :

Code : Tout sélectionner

DOSUBS Erreur:
Too Few
Arguments

Quelques exemples concrets…

Opérateur unaire et n = 1

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 }
	1 						@ n = 1
	<< SQ >> DOSUBS
>>
Résultat : {1 4 9 16 25}

Opérateur unaire et n = 2

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	2 						@ n = 2
	<< SQ >> DOSUBS
>>
Résultat : {1 4 2 9 3 16 4 25}

Opérateur binaire et n = 2

Code : Tout sélectionner

 
<<
	{ 1 2 3 4 5 } 
	2 						@ n = 2
	<< + >> DOSUBS
>>
Résultat : {3 5 7 9}

Opérateur binaire et n = 3

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	3 						@ n = 3
	<< + >> DOSUBS
>>
Résultat : {1 5 2 7 3 9}

Opérateur binaire et n = 5

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	5 						@ n = 5
	<< + >> DOSUBS
>>
Résultat : {1 2 3 9}

Fonction de type f(a) et n = 5

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	5 						@ n = 5
	<< -> a
		<< a a + >> 
	>> DOSUBS
>>
Résultat : {1 2 3 4 10}

Fonction de type f(a,b) et n = 5

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	5 						@ n = 5
	<< -> a b
		<< a b + >> 
	>> DOSUBS
>>
Résultat : {1 2 3 4 9}

Fonction de type f(a,b) et n = 3

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 } 
	3 						@ n = 3
	<< -> a b
		<< a b + >> 
	>> DOSUBS
>>
Résultat : {1 5 2 7 3 9}

Code : Tout sélectionner

<<
	1 {8} 
	1 						@ n = 1 
	<< + >> 
	>> DOSUBS					@ dans ce cas, on aurait le même résultat avec DOLIST
>>
Résultat : 9

Code : Tout sélectionner

<<
	1 {2 5} 
	1 						@ n = 1 
	<< + >> 
	>> DOSUBS					@ dans ce cas, on aurait le même résultat avec DOLIST
>>
Résultat : 8
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

NSUB

Syntaxe
  • {liste} n << ... NSUB ... >> DOSUBS

    NSUB est la position d'un élément de {liste}.

    NSUB s'utilise toujours avec DOSUBS.

    Ce qui a été vu précédement avec DOSUBS reste vrai.

Quelques exemples

Code : Tout sélectionner

<<
	{A B C D E}
	1 							@ n = 1	
	<< NSUB SWAP >> DOSUBS
>>
Résultat : {1 A 2 B 3 C 4 D 5 E}
Chaque élément est précédé de la position qu'il avait dans la liste initiale. SWAP permet d'obtenir la position avant l'élément.

Code : Tout sélectionner

<<
	{A B C D E}
	1 							@ n = 1	
	<< NSUB →TAG >> DOSUBS
>>
Résultat : { :1: A :2: B :3: C :4: D :5: E}
Chaque élément est étiqueté avec sa position.

Code : Tout sélectionner

<<
	{A B C D E}
	1 							@ n = 1	
	<< "valeur" NSUB + →TAG >> DOSUBS
>>
Résultat : { :valeur1: A :valeur2: B :valeur3: C :valeur4: D :valeur5: E}
Chaque élément est étiqueté avec « "valeur " + NSUB ».

Code : Tout sélectionner

<<
	{A B C D E}
	3 							@ n = 3 / groupes de 3
	<< "valeur" NSUB + →TAG >> DOSUBS
>>
Résultat :
{A B :valeur1: C
B C :valeur2: D
C D :valeur3: E}

Le 3ième élément de chaque groupe est étiqueté avec « "valeur " + NSUB ».
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

ENDSUB

Syntaxe
  • {liste} n << ... ENDSUB ... >> DOSUBS

    Si n = 1, alors ENDSUB est égal au nombre total d'éléments de {liste}.

    Si n > 1, alors ENDSUB est égal au nombre de groupes de n éléments possibles, en parcourant {liste} de gauche à droite.

    ENDSUB s'utilise toujours avec DOSUBS.

    Ce qui a été vu précédement avec DOSUBS reste vrai.

Quelques exemples

Code : Tout sélectionner

<<
	{A B C D E}
	1 							@ n = 1	
	<< ENDSUB SWAP >> DOSUBS
>>
Résultat : {5 A 5 B 5 C 5 D 5 E}
Chaque élément est précédé du nombre d'éléments dans la liste initiale. SWAP permet d'intervertir les valeurs deux à deux.

Code : Tout sélectionner

<<
	{A B C D E F G H I}
	3 							@ n = 3	
	<< ENDSUB >> DOSUBS
>>
Résultat : { A B C 7 B C D 7 C D E 7 D E F 7 E F G 7 F G H 7 G H I 7}
Chaque groupe de 3 (n = 3) est suivi du nomnbre de groupes possibles, soit 7.

Code : Tout sélectionner

<<
	{A B C D E}
	3 							@ n = 3 / groupes de 3
	<< "valeur" NSUB + →TAG  ENDSUB >> DOSUBS
>>
Résultat :
{A B :valeur1: C 3
B C :valeur2: D 3
C D :valeur3: E 3}

Le 3ième élément de chaque groupe est étiqueté avec « "valeur " + NSUB » et est suivi par le nombre de groupes (ici 3).
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

MAP

Syntaxe
  • {liste} << procédure >> MAP

    MAP permet d'appliquer << procédure >> aux éléments d'une liste et à ceux d'éventuelles sous-listes.

    MAP ne fonctionne pas avec des opérateurs binaires (unaires uniquement).

    MAP est disponible sur les calculatrices hp-49g, hp-49g+, hp-48gII et hp-50g.


Exemples…

Avec un opérateur unaire :

Code : Tout sélectionner

<<
	{1 2 3 4 5 {7 8 {9} } }
	<< SQ					
	>>
	MAP
>>
Résultat : {1 4 9 16 25 {49 64 {81} } }

Avec une fonction de type f(a) :

Code : Tout sélectionner

<<
	{1 2 3 4 5 {7 8 {9} } }
	<< → a
		<< a a + 1 +
		>>
	>>
	MAP
>>
Résultat : {3 5 7 9 11 {15 17 {19} } }

Utilisation de MAP pour supprimer les zéros dans un masque binaire :

Code : Tout sélectionner

<<
	{1 0 0 1 1 1 0 1 0}
	DUP
	<< 1 == >> MAP SWAP IFT
>>	

Résultat : {1 1 1 1 1}
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par Schraf »

@FLISZT : Je me demandais aujourd'hui même à quoi servaient NSUB et ENDSUB qui ne sont pas expliqués dans le manuel du HP-50g, je cherche ce mot sur ce forum et... je vois ton post du même jour ! Ca devrait résoudre certains de mes problèmes... Mercii
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2919
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par zpalm »

Schraf a écrit : 19 mars 2022 20:46 Je me demandais aujourd'hui même à quoi servaient NSUB et ENDSUB qui ne sont pas expliqués dans le manuel du HP-50g
NSUB et ENDSUB sont documentés dans l’advanced user’s reference manual.
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par Schraf »

@Zpalm : Merci ! J'avais 2 guides mais pas celui-là...

@FLISZT : Finalement, en lisant tes explications, cela signifie que Norman Brenner s'est compliqué la vie avec son code de compression logique !!

La liste à filtrer est au niveau 2 et la liste booléenne au niveau 1 :

Code : Tout sélectionner

« 2 « IF NOT THEN DROP END » DOLIST »
'CL. STO

En inversant les niveaux on peut utiliser IFT :

Code : Tout sélectionner

« SWAP IFT »
'CL. STO

Exemple :

2: { 5 8 9 2 2}
1: { 1 0 0 1 0}
VAR CL.
1: { 5 2 }
J'ai modifié mes explications dans HP-48/49/50G : Quand le RPL rencontre APL
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

Schraf a écrit : 19 mars 2022 20:46 @FLISZT : Je me demandais aujourd'hui même à quoi servaient NSUB et ENDSUB qui ne sont pas expliqués dans le manuel du HP-50g, je cherche ce mot sur ce forum et... je vois ton post du même jour ! Ca devrait résoudre certains de mes problèmes... Mercii
Avec plaisir ! :D
Je ne m'étais jamais trop posé la question. Et puis avoir vu ton programme Python dans le MPO 106
Schraf a écrit : 04 mars 2022 08:31 Pour les calculatrices récentes (Ti-83 Edition Python, NUMWORKS, CASIO GRAPH 90, 35+E II) :

Code : Tout sélectionner

from math import ceil

def MPO106(Bo):
    t = 0
    while max(Bo) != min(Bo):
        t += 1
        Bo = [ceil(b/2) + ceil(Bo[k-1]/2) for (k,b) in enumerate(Bo)]
    return [t, Bo[0]]
… j'ai cherché à "émuler" Bo = [ceil(b/2) + ceil(Bo[k-1]/2) for (k,b) in enumerate(Bo)], sans trop de succès. Je ne connais pas vraiment Python et le RPL est à priori assez éloigné du Python. En tout cas, c'est comme ça que je me suis penché sur NSUB et ENDSUB.

J'ai quasiment terminé ce que je voulais faire concernant ce fil (je voudrais encore aborder la commande SEQ et puis je rajouterai aussi qq précisions ici ou là, sans compter d'éventuelles coquilles). Bref, je vais pouvoir passer du temps sur celui que tu nous mijotes depuis qq jours… :)

Ce programme…

Code : Tout sélectionner

<<
	{1 0 0 1 1 1 0 1 0}
	DUP
	<< 1 == >> MAP SWAP IFT
>>	

… je l'ai retrouvé ce samedi sur un coin de cahier. J'avais bricolé ça pour m'essayer au MPO 96 puis au MPO 100.

Documentation, qq liens…

J'ai trouvé ce samedi encore (décidément…) « HP-48 Insights Part I (48G-GX Edition) » (PDF) de Bill Wickes, en attendant que cette (très probable meilleure) copie ne soit disponible. C'est sur le site de Joe Horn : index. On y trouve aussi « HP_50g_AUR_v2_English_searchable » entre autres.

J'ai lu, mais aussi constaté au moins une fois par moi-même, que le « HP-50g AUR » contient qq erreurs.
De ce fait, je trouve aussi intéressant de consulter « HP 49G Advanced User's Guide Command Reference » que l'on peut trouver notamment ici.

https://www.hpcalc.org/details/5973
HLP49 - Le PDF contenu dans le zip, même s'il ne recouvre pas 100% des commandes des hp-49g et +, est utile et bien fait.

https://www.hpcalc.org/details/1691
→ « One-Minute Marvels »

:!: ⇒ je rajoute ce manuel « hp49g+ AUR (with links) » dispo ici : https://www.hpcalc.org/details/6374
Modifié en dernier par FLISZT le 20 mars 2022 18:47, modifié 1 fois.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par Schraf »

Pour alterner 2 listes :

Code : Tout sélectionner

2: { 1 3 5 7 }
1: { 2 4 6 8 }

« →a « 1 « a NSUB GET » DOSUBS » »
EVAL

1: { 1 2 3 4 5 6 7 8 }
PS. A l'origine ce message était une question mais vue que j'ai une solution et que je ne sais pas supprimer un post...
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: LISTES et Commandes Évoluées (hp-48G/GX et +)

Message par FLISZT »

SEQ

Syntaxe
  • { Var_Index … Procédure } Var_Index Début Fin Incrément SEQ

    ou éventuellement

    << Var_Index … Procédure >> Var_Index Début Fin Incrément SEQ


SEQ permet de créer une liste dont les éléments constitueront une suite logique.

Les éléments de cette liste sont les valeurs successives prises par une fonction de type f(x) pour x variant de Début à Fin en fonction de Incrément.

Exemple 1

Code : Tout sélectionner

<<
	{X  SQ  1  + }	 			@ f(x) = x² + 1
	X 					@ Var_Index
	3 					@ Début
	9 					@ Fin
	2 					@ Incrément
	SEQ
>>

	Résultat :   { 10  26  50  82 } 
C'est l'équivalent en Python de :

Code : Tout sélectionner

	print( [x**2 + 1 for x in range(3, 10, 2)] )
									
	Résultat :   [10, 26, 50, 82]
Exemple 2

Code : Tout sélectionner

<<
	{ X } X 0 9 1 SEQ 			@ f(x) = x
>>

	Résultat :   { 0 1 2 3 4 5 6 7 8 9 }
Exemple 3

Code : Tout sélectionner

<<
	{ X  8  <  X  IFT }  X  1  9  2  SEQ
>>
	Résultat :   { 1 3 5 7 }   
C'est l'équivalent en Python de :

Code : Tout sélectionner

	print( [x for x in range(1, 10, 2) if x < 8] )
									
	Résultat :   [1, 3, 5, 7]
En modifiant un peu l'exemple précédent…
On parcourt les nombres impairs de 1 à 13 ; ceux strictement inférieurs à 7 sont conservés tels quels, les autres sont incrémentés de 1 :

Code : Tout sélectionner

<<
	{ X  7  <  X  { X  1  + }  IFTE }  X  1  13  2  SEQ
>>
	Résultat :   { 1 3 5 8 10 12 14 }   
.
Edit / Coquilles : il y avait un X en trop dans les 3 premiers codes RPL.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Répondre

Retourner vers « Tous les Pockets »