Project Euler 85

驚きの適当さ。終了判定すらしていない。なぜかPerl
最後のほうで出たものが答え。

親の長方形を埋めるための子の長方形の数は、親の長方形の辺の長さが逆転していても同じ。
つまり親の長方形のサイズが3x4でも4x3でも同じだよということ。


パターンの数は力技で数えられる。
親の各辺の長さをxx, yyとし、子候補の各辺の長さをx, yとすると、

( xx - x + 1 ) * ( yy - y + 1 )

個の配置方法があるから、あとは子のサイズ変えて数えるだけ。

#project euler 85

use strict;
use warnings;

my $framex = 3;
my $framey = 2;


my $diff = 9999999;
my $cand_area = 0;
my $target = 2000000;

foreach my $xx ( 1..10000){
	foreach my $yy ( 1..$xx){
		my $fill_patterns = 0;
		foreach my $x ( 1..$xx){
			foreach my $y ( 1..$yy){
				$fill_patterns += ( $xx - $x + 1 ) * ( $yy - $y + 1 );
			}
		}
		if( abs($target - $fill_patterns) < $diff ){
			$diff = abs( $target - $fill_patterns); 
			$cand_area = $xx * $yy;
			print "$diff, $cand_area\r"
		} 
	}
}