Thread Ganzzahliges Vielfaches von 2017 in der Form /^[01]+/ (14 answers)
Opened by Jigsaw at 2017-06-25 01:23

Muffi
 2017-06-26 10:43
#186743 #186743
User since
2012-07-18
1465 Artikel
BenutzerIn
[default_avatar]
Habs mal umgebaut. Dauert ca. 1 sek.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
my $number = 2017 * 2;

while (1){
        my @num_array = reverse split(//, $number); # reverse, weil ich wills nach Potenz sortiert
        
        for (my $idx = $#num_array; $idx >= 0; $idx--) { # alle Stellen durchgucken
                if ($num_array[$idx] > 1) { # eine > 1?
                        $num_array[$idx + 1]++; # nächst "höhere" Stelle um eins höher
                        
                        for (my $idx_new = 0; $idx_new <= $idx; $idx_new++) { # der Rest drunter wird 0
                                $num_array[$idx_new] = 0;
                        }
                        
                        $number = join("", reverse @num_array);
                        #while ($number % 2017 > 0) { # wieder Teilbar durch 2017 suchen
                        #       $number ++;
                        #}
        # edit: geht jetzt schneller
                        if ($number % 2017 > 0) {
                                $number += 2017 - ($number % 2017)
                        }
                        
                        last;
                }
        }
        
        if ($number !~ /[^01]/) {
                say $number;
                exit;
        }
        
    $number += 2017;
}


edit: jetzt geht's in "kaum mehr messbar"-Zeit
Last edited: 2017-06-26 11:13:45 +0200 (CEST)
1 + 1 = 10

View full thread Ganzzahliges Vielfaches von 2017 in der Form /^[01]+/