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 1my $arrays_inst1_ref = notevalue_change(\@arrays_inst1);@arrays_inst1 = ();@arrays_inst1 = @$arrays_inst1_ref;### Instrument 2my $arrays_inst2_ref = notevalue_change(\@arrays_inst2);@arrays_inst2 = ();@arrays_inst2 = @$arrays_inst2_ref;### Instrument 3my $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