Schrift
[thread]8770[/thread]

Rätsel der Woche 2007/4: viel Spaß beim Rätseln (Seite 2)

Leser: 2


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Ishka
 2007-02-27 15:28
#74428 #74428
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ok, geändert.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
docsnyder
 2007-02-27 16:10
#74429 #74429
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Ishka

Danke!

Ich habe meine Lösung nochmal getuned (sie terminiert jetzt auch bei 5-stelligen Eingaben in vernünftiger Zeit und es funktionieren alle Eingaben! ).

Und damit Du nicht ständig an der Lösungsseite rumbasteln musst, hier der Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my($min) = my($n) = shift;
my(@vals, @arr, @res, %sums);

map { my($rt)=sqrt($_); push(@vals, $_) if ( $rt == int($rt) ) } ( reverse(1..$n) );

sub quadSum {
if ( ($_[0] >= 0) && (! @arr || ($_[0] <= $arr[-1])) && (@arr <= $min) ) {
if ( ! $_[0] ) {
push(@{$res[$min=@arr]}, join('+', sort { $b <=> $a } @arr) . "\n");
}
else {
map { push(@arr, $_); quadSum($_[0]-$_); pop(@arr) } @vals }
}
}

quadSum($n);

map { print } @{$res[$min]};

Gruss, Doc\n\n

<!--EDIT|docsnyder|1172585483-->
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2007-02-20 03:15.