Der Rückfall auf die Viertel - Teil I
Kuckucksei 1 des Tages 17-03-2019
Der erste, noch unbeholfene Versuch:
Code-Schnippsel
...
## Array-Einträge kriegen Kuckucksei "Notenlängen-Änderung" untergejubelt
### Instrument 1
my $arrays_inst1_ref = notevalue_change(\@arrays_inst1);
@arrays_inst1 = ();
@arrays_inst1 = @$arrays_inst1_ref;
### Instrument 2
my $arrays_inst2_ref = notevalue_change(\@arrays_inst2);
@arrays_inst2 = ();
@arrays_inst2 = @$arrays_inst2_ref;
### Instrument 3
my $arrays_inst3_ref = notevalue_change(\@arrays_inst3);
@arrays_inst3 = ();
@arrays_inst3 = @$arrays_inst3_ref;
...
# Subroutine Notevalue-Array transformieren ( Kuckuckseiprinzip )
sub notevalue_change {
print "\nSubroutine notevalue_change!\n\n";
my $arrays_instx_ref = shift;
my @arrays_instx = @$arrays_instx_ref;
my @arrays_instx_new;
foreach ( @arrays_instx ) {
my $array_temp_ref = $_;
print "\nArray: $array_temp_ref\n\n";
my $aenderung_choice = int rand (2);
if ( $aenderung_choice == 0 ) {
print "Es findet keine Änderung statt!\n";
my @array_temp = @$array_temp_ref;
push @arrays_instx_new, [@array_temp];
next
}
my @array_temp_new;
my @array_temp_new_changed;
my $duration_old;
my $type_old;
foreach ( @$array_temp_ref ) {
my $zeile = $_;
print "Zeile: $zeile\n";
if ( $zeile =~ m/<duration>/ ) { $duration_old = $zeile }
if ( $zeile =~ m/<type>/ ) { $type_old = $zeile }
push @array_temp_new, $zeile;
}
print "Alter Notenwert-Eintrag, Dauer: $duration_old\n";
print "Alter Notenwert-Eintrag, Typ: $type_old\n";
my $duration_value = $duration_old;
my $type_value = $type_old;
$duration_value =~ s/.*<duration>(.*)<\/duration>.*/$1/;
$type_value =~ s/.*<type>(.*)<\/type>.*/$1/;
print "Alter Notenwert, Dauer: $duration_value\n";
print "Alter Notenwert, Typ: $type_value\n";
if ( $duration_value eq "2" && $type_value eq 'half' ) {
my $duration_new = $duration_old;
$duration_new =~ s/(.*<duration>).*(<\/duration>.*)/$1X1X$2/;
$duration_new =~ s/X//g;
my $type_new = $type_old;
$type_new =~ s/(.*<type>).*(<\/type>.*)/$1quarter$2/;
print "Neuer Notenwert, Dauer: $duration_new\n";
print "Neuer Notenwert, Typ: $type_new\n";
foreach ( @array_temp_new ) {
my $zeile = $_;
print "Zeile vor Änderung: $zeile\n";
if ( $_ =~ m/<duration>/ ) { $_ = $duration_new }
if ( $_ =~ m/<type>/ ) { $_ = $type_new }
print "Zeile nach Änderung: $zeile\n";
push @array_temp_new_changed, $zeile;
}
map { map { push @array_temp_new_changed, $_ } @array_temp_new } 1..2;
} elsif ( $duration_value eq "4" && $type_value eq 'whole' ) {
my $duration_new = $duration_old;
$duration_new =~ s/(.*<duration>).*(<\/duration>.*)/$1X1X$2/;
$duration_new =~ s/X//g;
my $type_new = $type_old;
$type_new =~ s/(.*<type>).*(<\/type>.*)/$1quarter$2/;
print "Neuer Notenwert, Dauer: $duration_new\n";
print "Neuer Notenwert, Typ: $type_new\n";
foreach ( @array_temp_new ) {
my $zeile = $_;
print "Zeile vor Änderung: $zeile\n";
if ( $zeile =~ m/<duration>/ ) { $zeile = $duration_new }
if ( $zeile =~ m/<type>/ ) { $zeile = $type_new }
print "Zeile nach Änderung: $zeile\n";
push @array_temp_new_changed, $zeile;
}
map { push @arrays_instx_new, [@array_temp_new_changed] } 1..4;
}
}
return \@arrays_instx_new
}
...
Ergebnis
Ich gebe es bekannt, noch bevor ich selbst es gehört habe.*
Vielleicht ist es komplett mißlungen.
Oh, ja. Es sieht mißlungen aus, lol.
Misti, misti auf der Skiabfahrtslaufsteilhangpisti.
Don't mess with the Kuckucksei, or what?
... ( denk, denk, denk ) ...
Zu unordentlich ( und falsch ) !
Neue Ausgangsbasis:
Code
# Subroutine Notevalue-Array transformieren ( Kuckuckseiprinzip )
sub notevalue_change {
print "\nSubroutine notevalue_change!\n\n";
my $arrays_instx_ref = shift;
my @arrays_instx = @$arrays_instx_ref;
my @arrays_instx_new;
my @array_durations;
my @array_types;
# Feststellen der Notenwerte
foreach ( @arrays_instx ) {
my $array_temp_ref = $_;
print "\nArray: $array_temp_ref\n\n";
my @array_temp = @$array_temp_ref;
my $duration_value;
my $type_value;
my $duration_old;
my $duration_new;
my $type_old;
my $type_new;
foreach ( @array_temp ) {
my $zeile = $_;
print "Zeile: $zeile\n";
if ( $zeile =~ m/<duration>/ ) { $duration_old = $zeile; $duration_new = $zeile }
if ( $zeile =~ m/<type>/ ) { $type_old = $zeile; $type_new = $zeile }
}
print "Alter Notenwert-Eintrag, Dauer: $duration_old\n";
print "Alter Notenwert-Eintrag, Typ: $type_old\n";
$duration_value = $duration_old;
$type_value = $type_old;
$duration_value =~ s/.*<duration>(.*)<\/duration>.*/$1/;
$type_value =~ s/.*<type>(.*)<\/type>.*/$1/;
print "Alter Notenwert, Dauer: $duration_value\n";
print "Alter Notenwert, Typ: $type_value\n";
push @array_durations, $duration_value;
push @array_types, $type_value;
}
# Änderungen - falls stattfinden - entsprechend der Notenwerte
my $array_count = 0;
foreach ( @arrays_instx ) {
my $array_temp_ref = $_;
my @array_temp = @$array_temp_ref;
print "\nArray-Eintrag $array_count, Noten-Dauer: $array_durations[$array_count]\n";
print "Array-Eintrag $array_count, Noten-Typ: $array_types[$array_count]\n";
my $aenderung_choice = int rand (2);
if ( $aenderung_choice == 0 ) {
print "Es findet keine Änderung statt!\n";
push @arrays_instx_new, [@array_temp]
} else {
print "Es wird geändert!\n";
push @arrays_instx_new, [@array_temp]
}
$array_count++
}
return \@arrays_instx_new
}
Damit geht's später weiter. Genüßlich, langsam & easy und eins nach dem anderen.
* Weil's grade einfacher ist für mich.
Kommentare
Kommentar veröffentlichen