#1 Le 12/08/2012, à 20:52
- philoup44
Tableau ---> Trouver l'indice d'une valeur
Salut
Question sur les Tableaux
à partir d'un indice, je peux obtenir la valeur correspondante
echo ${tableau[indice]} ----> affiche la valeur
Mais l'inverse
Connaissant la valeur comment afficher son indice correspondant ??
Pour obtenir la liste de tous les indices conduisant à un élément défini d’un tableau,
on utilise la syntaxe :
${!nomtab[*]}
Exemple
tableau[10]=a
tableau[20]=b
tableau[30]=c
tableau[40]=Bobo
echo "liste de tous les indices"
echo ${!Tableaus[*]} ---> 10 20 30 40
Avec une boucle FOR
for i in ${!Tableau[*]}
do
a=${Tableau[i]}
# si je cherche les éléments contenant B
if [[ "$a" = B* ]]
then
echo "$i ---> ${Tableau[i]}" # affiche 40 ---> Bobo
fi
done
ici j'obtiens l'indice correspondant à Bobo soit 40
en inserant une condition
on peut y arriver
Mais il n'y a pas plus simple ??
NB
cette solution marche tres bien pour moi
Aussi, si il n'y a pas mieux ou "plus propre"
Ce n'est pas grave
Hors ligne
#2 Le 12/08/2012, à 21:01
- lann
Re : Tableau ---> Trouver l'indice d'une valeur
Oui mais s'il y a deux valeurs égales dans le tableau à deux indices différents, ça ne marche pas.
Un peu bizarre ton idée de rechercher l'indice dans le tableau.
D'habitude, il faut sauvegarder, l'indice du tableau récupéré, dans une variable
Hors ligne
#3 Le 12/08/2012, à 21:27
- philoup44
Re : Tableau ---> Trouver l'indice d'une valeur
Salut lann
Oui mais s'il y a deux valeurs égales dans le tableau à deux indices différents, ça ne marche pas.
Je viens de tester dans mon script
Et si je met 2 valeurs identiques avec 2 indices différents
Et bien , chez moi, cà m' affiche bien les 2 résultats
if [[ "$a" = N* ]]
test condition
17 ---> a7 ---> Npiona
18 ---> a8 ---> Ntour1
27 ---> b7 ---> Ncav1
28 ---> b8 ---> Ncav1
37 ---> c7 ---> Npionc
.
....etc
ici les valeurs Ncav1 apparaissent 2 fois
indice valeurs
27 ---> Ncav1
28 ---> Ncav1
Un peu bizarre ton idée de rechercher l'indice dans le tableau
Je débute en shell
Dans mon "script"
Les indices correspondent ici à la position de pièces sur un échiquier
TabPosPieces=( 0 0 0 0 0 0 0 0 0 0 0 Btour1 Bpiona 0 0 0 0 Npiona Ntour1 0 0 Bcav1 Bpionb 0 0 0 0 Ncav1 Ncav1 0 0 Bfou1 ...etc )
donc par exemple, je peux m'en servir pour dire
si indice = piece adverse alors déplacement possible (prise)
si indice vide ---> alors case vide ---> déplacement possible
sinon déplacement interdit etc ...
Ce meme indice dans un autre tableau donne la position en notation humaine
Tab_Nom_Cases=( 0 0 0 0 0 0 0 0 0 0 0 a1 a2 a3 a4 a5 a6 a7 a8 0 0 b1 b2 b3 b4 b5 b6 b7 b8 0 0 c1 c2 c3 c4 c5 c6 c7 c8 0 0 ...etc )
si indice i = 27
echo ${Tab_Nom_Cases[i]} ---> b7
echo ${Tab_Nom_Cases[27]} ---> b7
et comme les indices 0 à 10 sont "libres"
je peux y stocker certaines données pour la suite
par exemple, mettre une valeur " evaluation de la position " à l'indice 0
une valeur positive = avantage blanc
(Mais si c'est une valeur à virgule style +1,55 je me doute qu'il y aura un probleme.... à voir plus tard)
j'ai découvert les Tableaux
Et j'essaie de les exploiter au mieux
et ça m'a paru interessant d'utiliser l'indice de cette façon
J'ai encore beaucoup à apprendre, et je dois certainement commettre des "impairs"
D'habitude, il faut sauvegarder, l'indice du tableau récupéré, dans une variable
Là, j'ai pas compris
Merci pour ta réponse
Dernière modification par philoup44 (Le 12/08/2012, à 23:21)
Hors ligne