#!/usr/bin/env perl #=============================================================================== # # FILE: buchstabenraetzel.pl # # USAGE: ./buchstabenraetzel.pl # # DESCRIPTION: Erstellt ein Buchstabenrätzel zu einenem lösungswort # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Martin Talarczyk (MT), martin@talarczyk.de # ORGANIZATION: Fachhochschule Südwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 05.11.2015 10:10:27 # REVISION: --- #=============================================================================== use strict; use warnings; use utf8; binmode (STDIN, ":encoding(UTF-8)"); binmode (STDOUT, ":encoding(UTF-8)"); binmode (STDERR, ":encoding(UTF-8)"); use open ":encoding(UTF-8)"; #=============================================================================== # Variabelen Deklarasion #=============================================================================== my $loesung = "Grünkohl"; my $vertauschen = 10; print "\n"; print $loesung. "\n"; foreach (0..4) { print verwuerfeln($loesung,$_) ; print "\n"; } #print @erb ; print "\n"; #=== FUNCTION ================================================================ # NAME: verwuerfeln # PURPOSE: # PARAMETERS: # $word # String der vertauscht wird. # $vertasuchen # anzahl der vertauschungen # RETURNS: # @ergebnis # Vertasuchter String in einem Feld. # DESCRIPTION: # übernimmt eine String desswen buchsteben beliebig oft miteinader # vertauscht werden. # THROWS: no exceptions # COMMENTS: none # SEE ALSO: n/a #=============================================================================== sub verwuerfeln { my ( $word , $vertauschen ) = @_; defined $word or die "Es wurde keien String übergeben.\n"; defined $vertauschen or die "Es wurde keine Anzahl der vertauschung übergeben.\n"; my @ergebnis = split //, uc $word; my $laenge = int @ergebnis; my $index1 = 0; my $index2 = 0; for ( my $count = 0 ; $count < $vertauschen ;$count++ ) { do { $index1 = int rand $laenge; $index2 = int rand $laenge; } while ( $index1 eq $index2 ); # ----- end do-while ----- @ergebnis[$index1,$index2] = @ergebnis[$index2,$index1]; } return @ergebnis; } ## --- end sub verwuerfeln