[ create a new paste ] login | about

Link: http://codepad.org/OI3EnCd2    [ raw code | fork ]

Perl, pasted on Dec 4:
#!/usr/bin/perl -w

use strict;
use utf8;

#Variablen initialisieren - safety first ;)

my ($buchstabe, $count, $entropie, $input, $logNat, $summeEntropie, $vorkommenAbsolut, $vorkommenProzent);
my @input_file;
my %alphabet;

########################################
####Input aus Datei#####################
open(FH, "<input.txt");
@input_file=<FH>;
close(FH);

#Array in Skalar umwandeln...ist besser zum zaehlen
$input=join (" ",@input_file);


# Gesamtzahl aller Zeichen
$count=$input=~tr/A-Za-z.,ÄäÖöÜüß \///;

print "\nDer Text besteht aus insgesamt $count Zeichen\n";


###########Alle Zeichen in ein Hash einlesen und zählen...geht das auch einfacher? Ne Schleife?!###
	$alphabet{a}=$input=~tr/Aa//;
	$alphabet{b}=$input=~tr/Bb//;
	$alphabet{c}=$input=~tr/Cc//;
	$alphabet{d}=$input=~tr/Dd//;
	$alphabet{e}=$input=~tr/Ee//;
	$alphabet{f}=$input=~tr/Ff//;
	$alphabet{g}=$input=~tr/Gg//;
	$alphabet{h}=$input=~tr/Hh//;
	$alphabet{i}=$input=~tr/Ii//;
	$alphabet{j}=$input=~tr/Jj//;
	$alphabet{k}=$input=~tr/Kk//;
	$alphabet{l}=$input=~tr/Ll//;
	$alphabet{m}=$input=~tr/Mm//;
	$alphabet{n}=$input=~tr/Nn//;
	$alphabet{o}=$input=~tr/Oo//;
	$alphabet{p}=$input=~tr/Pp//;
	$alphabet{q}=$input=~tr/Qq//;
	$alphabet{r}=$input=~tr/Rr//;
	$alphabet{s}=$input=~tr/Ss//;
	$alphabet{t}=$input=~tr/Tt//;
	$alphabet{u}=$input=~tr/Uu//;
	$alphabet{v}=$input=~tr/Vv//;
	$alphabet{w}=$input=~tr/Ww//;
	$alphabet{x}=$input=~tr/Xx//;
	$alphabet{y}=$input=~tr/Yy//;
	$alphabet{z}=$input=~tr/Zz//;
	$alphabet{ae}=$input=~tr/Ää//;
	$alphabet{ue}=$input=~tr/Üü//;
	$alphabet{oe}=$input=~tr/Öö//;
	$alphabet{sz}=$input=~tr/ß//;
	$alphabet{punkt}=$input=~tr/.//;
	$alphabet{komma}=$input=~tr/,//;
	$alphabet{leer}=$input=~tr/ //;
	$alphabet{slash}=$input=~tr/\///;
###################################################

#Zeichen Sortieren und Entropie ausrechnen
foreach $buchstabe (sort keys %alphabet) {
		$vorkommenAbsolut=($alphabet{$buchstabe}/$count);
		$vorkommenProzent=($alphabet{$buchstabe}/$count)*100;

		$logNat=0;	
		$summeEntropie += $entropie;
	
		eval {	#ln(x) = ld(x)/ld(2)
		$logNat=(log(1/$vorkommenAbsolut))/log(2);#Eval verhindert Abbruch bei Division durch 0
		};
		$entropie=$vorkommenAbsolut*$logNat;
	
	print "Buchstabe: \"$buchstabe\"\n";
	print "Häufigkeit: $alphabet{$buchstabe}\t";
	
	printf "Wahrscheinlicheit p(x) Absolut: %.2f \t Prozent: %.2f%% \n", $vorkommenAbsolut, $vorkommenProzent;
	
	print "Informationsgehalt = ld(1/p) = ld(1/$vorkommenAbsolut) = $logNat\n";
	print "Entropie für das Zeichen \"$buchstabe\": $entropie\n";
	print "-----------------------------------------------------------------------\n"

	
}
print "Die Entropie des Textes liegt bei $summeEntropie bit\n";


Create a new paste based on this one


Comments: