1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
| #! /user/bin/perl
use strict;
use warnings;
use utf8;
use feature qw /say/;
ActiverAccents();
# QUESTION de http://www.developpez.net/forums/d1469509/autres-langages/perl/langage/perl-parcours-tableaux-3d/
=pod
my @tab1 = map [map [map 3, 1..6], 1..3], 1..3; #Oui c'est compliqué des tableaux 3D mais j'en ai besoin...
foreach $id (@tab1) {
foreach (@$id) {
print "@$_[0] and $_[0] \n"; #affiche "3 and 3 and 3 and 3 and 3 and 3 and " en boucle
}
}
=cut
my @D1 = ( 1..5 );
my @D2 = ( 20..26 );
my @D3 = ( 30..38 );
my @Tab = ( \@D1, \@D2, \@D3 );
print $#Tab."\n\n"; # Affiche 2 soit le numéro du dernier élément de @Tab. @Tab a donc 3 dimensions 0, 1 et 2
print $#D1."\n"; # Affiche 4 soit le numéro du dernier élément de @D1
print $#D2."\n"; # Affiche 6 soit le numéro du dernier élément de @D2
print $#D3."\n\n"; # Affiche 8 soit le numéro du dernier élément de @D3
print "D1:". $Tab[0][0] ."\n"; # Affiche 1 soit le premier élément de la dimension 1
print "D2:". $Tab[1][0] ."\n"; # Affiche 20 soit le premier élément de la dimension 2
print "D3:". $Tab[2][0] ."\n\n"; # Affiche 30 soit le premier élément de la dimension 3
# Print par dimension
for my $un (0..$#D1) {
print "N1=". $Tab[0][$un] ."\n";
}
print "\n";
for my $deux (0..$#D2) {
print "N2=". $Tab[1][$deux] ."\n";
}
print "\n";
for my $trois (0..$#D3) {
print "N3=". $Tab[2][$trois] ."\n";
}
print "\n";
# Parcours de toutes les dimensions
foreach my $id (@Tab) {
foreach my $un (@D1) {
print "$un \n";
foreach my $deux (@D2) {
print " $deux \n";
foreach my $trois (@D3) {
print " $trois \n";
}
}
}
}
print "\n";
# Applatissement de toutes les valeurs contenues dans @Tab
print "Applatissement de toutes les valeurs contenues dans \@Tab\n";
foreach my $id (@Tab) {
foreach (@$id) {
print "$_ ";
}
print " ";
}
print "\n\n";
# Récupéation d'un sous-tableau
print "Récupéation d'un sous-tableau 3 fois :\n";
print "D1=@D1";
print "\n";
print "D2=@D2";
print "\n";
print "D3=@D3";
print "\n\n";
# Récupéation d'un sous-tableau say au lieu de print
print "Récupéation d'un sous-tableau 3 fois say au lieu de print pour D3 :\n";
print "D1= @D1";
print "\n";
print "D2= @D2";
print "\n";
print "D3= ". @D3 ." Noter la différence avec le suivant, utilité de say !";
print "\n";
say "D3= ". "@D3";
print "\n\n";
# Récupération du 1er sous-tableau
print "Récupération du 1er sous-tableau :\n";
print @{$Tab[0]};
print "\n\n";
# Récupération de tous les sous-tableaux
print "Récupération de tous les sous-tableaux :\n";
foreach my $ind ( @Tab ) {
print @$ind;
print "\n";
}
print "\n\n";
# Autre Récupération de tous les sous-tableaux
print "Autre Récupération de tous les sous-tableaux :\n";
foreach my $ind1 ( @Tab ) {
foreach my $ind2 ( @$ind1 ) {
print "$ind2\t";
}
print "\n";
}
print "\n\n";
# Autre initialisation :
print "Autre initialisation :\n\n";
@D1 = ( 0..5,"Potenkine",7..10 );
@D2 = ( 0..3,"Potenkine",5..10 );
@D3 = ( 0..7,"Potenkine",9..10 );
#NB @Tab = TOUJOURS ( \@D1, \@D2, \@D3 );
my $L = 6;
my $l = 4;
my $P = 8;
if ( $Tab[0][$L] eq $Tab[1][$l] and
$Tab[0][$L] eq $Tab[2][$P] ) {
print "Touché coulé => $Tab[0][$L]";
}
print "\n";
#==============================================================
# Pour avoir les accents sur la console DOS
# http://perl.developpez.com/faq/perl/?page=Terminal#AccentsDOS
#==============================================================
sub ActiverAccents {
my $encodage;
# Windows
if ( lc($^O ) eq 'mswin32') {
eval {
my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
$encodage = "cp$codepage";
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
else {
$encodage = `locale charmap`;
eval {
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
return $encodage;
}
#Sinon :
#ü \x81 à \x85 è \x8A
#é \x82 ç \x87 ï \x8B
#â \x83 ê \x88 î \x8C
#ä \x84 ë \x89 |
Partager