sub retournementPoetivites { my $poeme = $_[0];
foreach my $mot (keys(%{$Recueil{$poeme}{"Mots"}})) { my $poetivite = 0;
my $nbpoetivites = scalar(@{$Recueil{$poeme}{"Mots"}{$mot}});
while( scalar(@{$Recueil{$poeme}{"Mots"}{$mot}}) > 0) { $poetivite += shift(@{$Recueil{$poeme}{"Mots"}{$mot}});
} $poetivite = int($poetivite / $nbpoetivites);
$Recueil{$poeme}{"Mots"}{$mot} = $poetivite;
push(@{$Poetivites{$poeme}{$poetivite}},$mot);
push(@{$Poetivites{"recueil"}{$poetivite}},$mot);
} } sub nettoieMot { my $mot = $_[0];
while($mot =~ m/(\.|,)$/) {chop $mot;
}
return $mot;
}
sub deuxiemePassage { my $ligne;
my $indLigne;
my $lastRatio;
my $compteur = 0;
my $poeme = undef;
while(<fREC>) {
chomp;
$ligne = $_;
my @Ligne = split(/\s+/,$ligne);
if($poeme) { &retournementPoetivites ($poeme);
}
$poeme = $1;
$compteur++;
print fLOG "\tPoeme " . $compteur . " : " . $poeme . "\n";
$indLigne = 0;
$lastRatio = undef;
next;
}
my $nbMotsLigne = scalar(@Ligne);
if($nbMotsLigne == 0) { next;
}
my $mot;
$indLigne++;
for(my $indMot = 1 ;
$indMot <= $nbMotsLigne ;
$indMot++) {
$mot = $Ligne[$indMot-1];
if(exists($Symboles{$mot})) { next;
} if(length($mot) == 1 && !exists($Symboles{$mot}) && !exists($Voyelles{$mot}) && !exists($Consonnes{$mot})) { next;
}
$mot = &nettoieMot($mot);
my $poetivite = 0;
$poetivite += max(values(%Mots)) / $Mots{$mot};
my $nbLettresMot = length($mot);
$poetivite *= abs($nbLettresMot - $Recueil{$poeme}{"longueur_mot_moyenne"});
$poetivite *= 1 + $indLigne / $Recueil{$poeme}{"nombre_lignes"};
$poetivite *= 1 + $indMot / $nbMotsLigne;
my @Mot = split(//,$mot);
my $nbVoyelles = 0;
my $nbConsonnes = 0;
my $nbSymboles = 1;
foreach my $lettre (@Mot) { if (exists $Voyelles{$lettre}) { $Voyelles{$lettre}++;
$nbVoyelles ++;
} else { if (exists $Consonnes{$lettre}) { $Consonnes{$lettre}++;
$nbConsonnes ++;
} else { if (exists $Symboles{$lettre}) { $Symboles{$lettre}++;
$nbSymboles ++;
} else { print "Lettre $lettre non identifiable dans $mot à la ligne $indLigne\n";
next;
} } } } if($mot =~ m/au/) {$nbVoyelles--;
}
my $ratio = $nbVoyelles / $nbLettresMot;
if($ratio == 0 || $ratio == 1) { $poetivite *= $nbLettresMot;
if($lastRatio) { if(($lastRatio - $ratio) == 0) { $poetivite *= $nbLettresMot * $nbLettresMot;
} } } else { if($ratio < (1/3)) { $poetivite *= 1/$ratio;
if($lastRatio) { if($ratio <= $lastRatio) { $poetivite *= $lastRatio / $ratio + 1;
} } } else { if($ratio > (2/3)) { $poetivite *= 1/(1-$ratio);
if($lastRatio) { if($ratio >= $lastRatio) { $poetivite *= $ratio / $lastRatio + 1;
} } } else {$poetivite *= 1;
} } } $lastRatio = $ratio;
if($mot =~ /'/) {$nbSymboles--;
} $poetivite *= 1 + $nbSymboles;
if (exists $Symboles{$Mot[0]}) { $poetivite *= 1 + $nbSymboles;
}
$poetivite = int($poetivite + 0.5);
push(@{$Recueil{$poeme}{"Mots"}{$mot}},$poetivite);
}
}
&retournementPoetivites($poeme);
}
sub spectromie { my $ligne;
my $compteur = 0;
my $ligne_poeme = 0;
my $poeme = undef;
while(<fREC>) {
chomp;
$ligne = $_;
$ligne_poeme++;
my @Ligne = split(/\s+/,$ligne);
$poeme = $1;
$ligne_poeme = 0;
$compteur++;
print fSPEC "\tPoeme " . $compteur . " : " . $poeme . "\n";
next;
}
my $nbMotsLigne = scalar(@Ligne);
if($nbMotsLigne == 0) { print fSPEC "\n";
next;
}
foreach my $mot (@Ligne) {
if(exists($Symboles{$mot})) { next;
} if(length($mot) == 1 && !exists($Symboles{$mot}) && !exists($Voyelles{$mot}) && !exists($Consonnes{$mot})) { next;
}
$mot = &nettoieMot($mot);
push(@{$SampledRecueil{$poeme}{$ligne_poeme}{"mots"}},$mot);
push(@{$SampledRecueil{$poeme}{$ligne_poeme}{"poetivites"}},$Recueil{$poeme}{"Mots"}{$mot});
print fSPEC $Recueil{$poeme}{"Mots"}{$mot} . "\t";
}
print fSPEC "\n";
}
}
function isCloseColor($myImage,$myColor,$rref,$gref,$bref,$rmax) { $myRGBColor = array();
$myRGBColor = imagecolorsforindex($myImage,$myColor);
return (sqrt(pow($myRGBColor["red"]-$rref,2)+pow($myRGBColor["green"]-$gref,2)+pow($myRGBColor["blue"]-$bref,2)) < $rmax);
} function horizonoise($myImage,$dimImage,$strength) { $currColor = imagecolorat($myImage,0,0);
for($i = 0 ;
$i < $dimImage[1] ;
$i++) { for($j = 0 ;
$j < $dimImage[0] ;
$j++) {
if(rand(1,100) >= $strength) { $currColor = imagecolorat($myImage,$j,$i);
} else { imagesetpixel($myImage,$j,$i,$currColor);
}
} if($i != $dimImage[1] - 1) $currColor = imagecolorat($myImage,0,$i+1);
} } function vertinoise($myImage,$dimImage,$strength) { $currColor = imagecolorat($myImage,0,0);
for($i = 0 ;
$i < $dimImage[0] ;
$i++) { for($j = 0 ;
$j < $dimImage[1] ;
$j++) { if(rand(1,100) >= $strength) { $currColor = imagecolorat($myImage,$i,$j);
} else { imagesetpixel($myImage,$i,$j,$currColor);
} } if($i != $dimImage[0] - 1) $currColor = imagecolorat($myImage,$i+1,0);
} } function detoureAndPaste($myImage,$myImageOrigin,$dimImage) { $backColor = imagecolorat($myImageOrigin,1,1);
for($i = 0 ;
$i < $dimImage[0] ;
$i++) { for($j = 0 ;
$j < $dimImage[1] ;
$j++) { $currColor = imagecolorat($myImageOrigin,$i,$j);
if($currColor != $backColor) { $aRGB = array();
$aRGB = imagecolorsforindex($myImageOrigin,$currColor);
imagesetpixel($myImage,$i,$j,imagecolorclosest($myImage,$aRGB["red"],$aRGB["green"],$aRGB["blue"]));
} } } } function licqefacnoise($myImage,$dimImage) { $currColor = imagecolorat($myImage,0,0);
for($i = 0 ;
$i < $dimImage[0] ;
$i++) { for($j = 0 ;
$j < $dimImage[1] ;
$j++) { if(rand(1,$dimImage[1]) >= intval($j*1.0)) { $currColor = imagecolorat($myImage,$i,$j);
} else { imagesetpixel($myImage,$i,$j,$currColor);
} } if($i != $dimImage[0] - 1) $currColor = imagecolorat($myImage,$i+1,0);
} } function linenoise($myImage,$dimImage,$strength,$freq) { $indexWhite = imagecolorexact($myImage,255,255,255);
if($indexWhite == -1) $indexWhite = imagecolorclosest($myImage,255,255,255);
$indexBlack = imagecolorexact($myImage,0,0,0);
if($indexBlack == -1) $indexBlack = imagecolorclosest($myImage,0,0,0);
for($i = 0 ;
$i < $dimImage[0] ;
$i++) { for($j = 0 ;
$j < $dimImage[1] ;
$j++) { if(rand(1,$freq) >= 2) {
} else { $currColor = imagecolorat($myImage,$i,$j);
if($currColor == $indexWhite) continue;
$nb_lignes = rand(1,$strength);
drawLignes($myImage,$dimImage,$currColor,$i,$j,$nb_lignes,$strength);
} } } }
sub spectromie { my $ligne;
my $compteur = 0;
my $ligne_poeme = 0;
my $poeme = undef;
while(<fREC>) {
chomp;
$ligne = $_;
$ligne_poeme++;
my @Ligne = split(/\s+/,$ligne);
$poeme = $1;
$ligne_poeme = 0;
$compteur++;
print fSPEC "\tPoeme " . $compteur . " : " . $poeme . "\n";
next;
}
my $nbMotsLigne = scalar(@Ligne);
if($nbMotsLigne == 0) { print fSPEC "\n";
next;
}
foreach my $mot (@Ligne) {
if(exists($Symboles{$mot})) { next;
} if(length($mot) == 1 && !exists($Symboles{$mot}) && !exists($Voyelles{$mot}) && !exists($Consonnes{$mot})) { next;
}
$mot = &nettoieMot($mot);
push(@{$SampledRecueil{$poeme}{$ligne_poeme}{"mots"}},$mot);
push(@{$SampledRecueil{$poeme}{$ligne_poeme}{"poetivites"}},$Recueil{$poeme}{"Mots"}{$mot});
print fSPEC $Recueil{$poeme}{"Mots"}{$mot} . "\t";
}
print fSPEC "\n";
}
}