Schrift
[thread]11032[/thread]

Project Euler (Seite 2)

Leser: 34


<< |< 1 2 3 4 5 6 >| >> 57 Einträge, 6 Seiten
Ronnie
 2007-12-30 22:27
#104283 #104283
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@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!
pq
 2008-12-31 00:51
#104292 #104292
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
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...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Ronnie
 2008-12-31 01:11
#104296 #104296
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@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.
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
#!/usr/bin/perl

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
Gast Gast
 2008-12-31 14:52
#104314 #104314
Ich habe es auch so verstanden wie Ronnie, die Lösung war dann auch richtig:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
    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
lichtkind
 2008-05-12 15:22
#109607 #109607
User since
2004-03-22
5679 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ist noch jemand außer mir dabei?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Gast Gast
 2008-05-12 15:51
#109608 #109608
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
Gast Gast
 2008-05-12 19:10
#109621 #109621
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)?
FoolAck
 2008-05-12 19:27
#109622 #109622
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
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.
Gast Gast
 2008-05-12 19:57
#109625 #109625
thx!
lichtkind
 2008-05-12 20:18
#109627 #109627
User since
2004-03-22
5679 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ronnie warum c# ?
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
<< |< 1 2 3 4 5 6 >| >> 57 Einträge, 6 Seiten



View all threads created 2007-12-15 12:19.