User since
2003-08-14
2022
Artikel
BenutzerIn
@styx-cc: Die Richtungsangaben finde ich gut gelöst, auch wenn es bei Produkt oder Summe ja eigentlich egal ist, ob man nach links oder rechts, bzw. nach oben oder unten, geht - da ja das Ergebnis gleich ist. Ansonsten eine schöne geradlinige Lösung!
User since
2003-08-04
12208
Artikel
Admin1
ich verstehe problem 8 nicht. "5 consecutive digits" - da gibt es doch nur 5 möglichkeiten, oder?
ich habe also 5 produkte, und ich finde nur eins davon im gegebenen string. aber die antwort
ist falsch...
User since
2003-08-14
2022
Artikel
BenutzerIn
@pq:
Womöglich habe ich es dann auch falsch verstanden, habe es so aufgenommen, dass es um das größte Produkt zweier aufeinanderfolgender fünfstelliger Zahlen gebildet werden soll, wobei ich die Überschneidung von Ziffern als gegeben angenommen habe. Aktuell ist die Seite leider nicht erreichbar, sodass man nicht in die Aufgabenstellung schauen kann. Meine Lösung mal anbei (kann aber sein das ich die Aufgabenstellung missverstanden habe):
EDIT: Lösung überarbeitet.
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
use strict;
use warnings;
use Data::Dumper;
my $data = join '', map {chomp; $_} (<DATA>);
my @data;
my @results;
do {
push @data, substr $data,0,5; substr $data,0,1,''
} while ( length $data > 4);
while (@data) {
my $cur = shift @data;
my $p = 1;
$p *= $_ for split //, $cur;
push @results, [$cur, $p];
}
my $max = [0,0];
for (@results) { $max = $_ if $_->[1] > $max->[1] };
print Dumper $max;
__DATA__
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
Ich habe es auch so verstanden wie Ronnie, die Lösung war dann auch richtig:
my $max = 0;
while ( $digits ) { # iterate through $digits
my $next = substr( $digits, 0, $nod ); # get next digits
my @fac = split( '', $next ); # get factors
my $cur = 1;
$cur *= $_ for ( @fac ); # multiply
$cur > $max and $max = $cur; # set as maximum if needed
substr( $digits, 0, 1, '' ); # delete 1st digit
} # while
Wobei $digits diese lange Zahl ist und $nod die Anzahl an aufeinander folgenden Zahlen.
MfG Horst
User since
2004-03-22
5679
Artikel
ModeratorIn + EditorIn
ist noch jemand außer mir dabei?
lichtkind+2008-05-12 13:22:09--ist noch jemand außer mir dabei?
Hallo lichtkind,
evtl. wollte ich da mal wieder ran, allerdings in C#. In meinem Archiv (vom toten Mac) finde ich noch die Lösungen 1-11 (in Perl), wobei ich nicht sicher bin ob das alle sind - aber es sind sicher alle die ich noch im Backup hatte.
Gruß,
Ronnie
Problem 2
Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Find the sum of all the even-valued terms in the sequence which do not exceed four million.
Da ich nicht besonders gut Enlisch kann:
bezieht sich "four million" auf "even-valued terms" (1, 2, 3, 5, ... bis letzte passende Zahl unter 4.000.000)?
User since
2008-05-02
69
Artikel
BenutzerIn
Ja. even-valued heißt btw "grade", sprich "2, 4, 6, 8, 10, 12, ..."
Du sollst quasi die Summe der Schnittmenge von allen natürlichen graden Zahlen <= 4000000 und den Fibonacci-Zahlen finden.