From bb80e6aed2baacb5579d91cf86c4fc33852c401f Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Thu, 19 Nov 2015 16:14:03 +0100 Subject: Create module for verwuerfeln --- Aufgabe4/wordGame.pm | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Aufgabe4/wordGame.pm (limited to 'Aufgabe4/wordGame.pm') diff --git a/Aufgabe4/wordGame.pm b/Aufgabe4/wordGame.pm new file mode 100644 index 0000000..c0b9508 --- /dev/null +++ b/Aufgabe4/wordGame.pm @@ -0,0 +1,75 @@ +# +#=============================================================================== +# +# FILE: verwuerfeln.pm +# +# DESCRIPTION: +# +# FILES: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: Stefan Suhren (su), suhren.stefan@fh-swf.de +# ORGANIZATION: FH Südwestfalen, Iserlohn +# VERSION: 1.0 +# CREATED: 19.11.2015 15:41:56 +# REVISION: --- +#=============================================================================== +package wordGame; + +use strict; +use warnings; +use utf8; + +# use common import function +use Exporter; + +# enforce utf-8 mode +binmode (STDIN, ":encoding(UTF-8)"); +binmode (STDOUT, ":encoding(UTF-8)"); +binmode (STDERR, ":encoding(UTF-8)"); +use open ":encoding(UTF-8)"; + +# add exporter as a parent for this package. +our @ISA= qw( Exporter ); + +# these CAN be exported. +our @EXPORT_OK = qw( verwuerfeln ); + +# these are exported by default. +our @EXPORT = qw( verwuerfeln ); + +#=== FUNCTION ================================================================ +# NAME: verwuerfeln +# PURPOSE: +# PARAMETERS: zeichenkette: The string to shuffle. +# vertauschung: The amount of shuffles to do. +# RETURNS: The shuffled string as array. +# DESCRIPTION: Shuffles a string. +# THROWS: no exceptions +# COMMENTS: none +# SEE ALSO: n/a +#=============================================================================== +sub verwuerfeln { + my ($zeichenkette, $vertauschung) = @_; #Parameter übernehmen + + defined $zeichenkette or die "No string for shuffling defined."; + defined $vertauschung or die "No shuffling amount defined."; + + my @ergebnis = split //, uc $zeichenkette; + my $laenge = int @ergebnis; # Anzahl der Buchstaben + + for (my $i = 0; $i < $vertauschung; $i++) + { + my $index1 = int rand $laenge; # 1. Index + my $index2 = int rand $laenge; # 2. Index + + while ($index1 == $index2) + { + $index2 = int rand $laenge; + } + + @ergebnis[$index1, $index2] = @ergebnis[$index2, $index1]; + } + + return @ergebnis; +} ## --- end sub verwuerfeln -- cgit v1.2.3-70-g09d2