From f08f2d0e3798ff90b7e68c46751e15b7b991a2a0 Mon Sep 17 00:00:00 2001 From: Martin Talarczyk Date: Fri, 13 Nov 2015 12:17:15 +0100 Subject: Commitel Aufgabe 1 bis 4 --- Aufgabe4/raetzelloesen.pl | 159 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 Aufgabe4/raetzelloesen.pl (limited to 'Aufgabe4/raetzelloesen.pl') diff --git a/Aufgabe4/raetzelloesen.pl b/Aufgabe4/raetzelloesen.pl new file mode 100644 index 0000000..8a4ec85 --- /dev/null +++ b/Aufgabe4/raetzelloesen.pl @@ -0,0 +1,159 @@ +#!/usr/bin/env perl +#=============================================================================== +# 4.2 +# +# 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 +#=============================================================================== +#Anzahl der vertauschungen +my $schwirichkeit = 10; + +#Arry aller Worte aus GERMAN9.LST +my @word; + +#Verwürfeltes Rätzel wort +my @wordver; + +#lösungswort im klar text +my $loesung; + +#Den Verwürfelten String als Arry +my @erb; + +my $eingabe; + +my $wordfp_file_name = 'GERMAN9.LST'; # input file name + + +print "Programm begint...\n"; +#------------------------------------------------------------------------------- +# Datei GERMAN9.LST öffnen. +#------------------------------------------------------------------------------- +open my $wordfp, '<', $wordfp_file_name + or die "$0 : failed to open input file '$wordfp_file_name' : $!\n"; + +print "lesse german9.lst ein...\n"; + +@word = <$wordfp>; + +chomp(@word); + +close $wordfp + or warn "$0 : failed to close input file '$wordfp_file_name' : $!\n"; +#------------------------------------------------------------------------------- +# Datei GERMAN9.LST schliesen +#------------------------------------------------------------------------------- + + +print "Spiele beginnt...\n"; + +$loesung = @word[ int rand @word]; + + @erb = verwuerfeln($loesung,$schwirichkeit); + +print_raetsel(@erb); + +$eingabe = <> ; + + +while ( $eingabe ne $erb ) +{ + print "Sehr gut!\nwillst du noch mal Spielen\nyes or no" + $eingabe = <> +} + + +sub print_raetsel { + my ( @arry ) = @_; + + my $count = 0; + +foreach my $char ( @arry ) { + + if ( ( $count % 3 ) eq 0 ) + { + print "\n"; + } + print $char . " "; + + $count++; +} + +} ## --- end sub print_raetsel + +#=== 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 ) = @_; + + my @ergebnis = split //, uc $word; + + my $laenge = int @ergebnis; + + my $index1 = 0; + + my $index2 = 0; + + defined $word or die "Es wurde keien String übergeben.\n"; + + defined $vertauschen or die "Es wurde keine Anzahl der vertauschung übergeben.\n"; + + 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 + + -- cgit v1.2.3-70-g09d2