Thread Variation/Kombination aufteilen und verteilt kalkulieren (15 answers)
Opened by styx-cc at 2018-07-18 02:03

styx-cc
 2020-06-01 02:51
#191868 #191868
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hallo Forum!
Ich hab das Problem abschließend gelöst und wollte euch noch die Lösung mitteilen:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl
use v5.10;
use strict;
use warnings;

use Data::Dumper;

my $series = [3, 9, 7, 3, 13, 5, 45];

my $permut = 1;
$permut *= $_ for (@$series);

my $chunks = 4;#int($permut/100_000_000);
$chunks = $chunks < 1 ? 1 : $chunks;

my $chunk_size = int($permut / $chunks);
my $chunk_start = 1;
my $chunk_end   = $chunk_size;

say join ' ', @$series;
say "Permutations: $permut\tChunk size:\t$chunk_size\tChunks:\t$chunks";

my @chunk_ranges;
while ($chunk_end <= $permut) {
        push @chunk_ranges, [ [$chunk_start, cpns($series, $chunk_start)], [$chunk_end, cpns($series, $chunk_end)] ];
        
        $chunk_start    +=      $chunk_size;    
        $chunk_end              +=      $chunk_size;
}

#last chunk_end contains the rest $permut/$chunk_size gives,
#consequential it equals the amount of permutations-1
$chunk_ranges[-1]->[-1] = [$permut, cpns($series, $permut-1)];

print Dumper \@chunk_ranges;

sub cpns  { convert_positional_notation_systems(@_) };
sub convert_positional_notation_systems {
        my $bases               = shift;
        my $quotient    = shift;        
        my $rest;
        my @result;

        for my $base (reverse @$bases) {
                $rest           = $quotient % $base;
                $quotient       = int($quotient / $base);
                push @result, $rest;
                
                last if $quotient == 0;
        }

        @result = reverse @result;
        return join ' ', @result;
        return \@result;
}


Ausgabe:
Code: (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
34
35
36
37
38
39
40
41
42
43
44
3 9 7 3 13 5 45
Permutations: 1658475 Chunk size: 414618 Chunks: 4
$VAR1 = [
[
[
1,
'1'
],
[
414618,
'6 5 0 9 3 33'
]
],
[
[
414619,
'6 5 0 9 3 34'
],
[
829236,
'1 4 3 1 6 2 21'
]
],
[
[
829237,
'1 4 3 1 6 2 22'
],
[
1243854,
'2 2 1 2 3 1 9'
]
],
[
[
1243855,
'2 2 1 2 3 1 10'
],
[
1658475,
'2 8 6 2 12 4 44'
]
]
];


Man kann am Anfang des Code ein Stellenwertsystem mit beliebig dynamischen Basen festlegen und diese anschließend in beliebig viele Chunks aufteilen und sich diese Dezimal sowie im definierten Stellenwertsystem ausgeben lassen.

Ich werde im Endeffekt Muffis vorschlag aufgreifen und deutlich mehr Häppchen erstellen als CPUs vorhanden sind und so lange rechnen lasssen wie es etwas zu tun gibt.

Lieben Gruß
Last edited: 2020-06-01 03:02:40 +0200 (CEST)
Pörl.

View full thread Variation/Kombination aufteilen und verteilt kalkulieren