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 56 57 58 59 60 61 62 63 64 65
| function solve(
$imageWidth,
$imageHeight,
array $image,
$patternWidth,
$patternHeight,
array $pattern
) {
$result = [-1, -1];
if (($patternWidth >= 1) && ($patternWidth <= 400) &&
($patternHeight >= 1) && ($patternHeight <= 400) &&
($imageWidth >= 1) && ($imageWidth <= 400) &&
($imageHeight >= 1) && ($imageHeight <= 400) &&
($patternWidth <= $imageWidth) && ($patternHeight <= $imageHeight)) {
$img_x; $img_y; $pattern_x; $pattern_y; $pattern_not_found; $pattern_is_matching;
$pattern_not_found = true;
for($img_x=0; ($pattern_not_found && ($img_x <= ($imageWidth - $patternWidth))); $img_x++) { // <- check if img_x == (imageWidth - $patternWidth) or not
for($img_y=0; ($pattern_not_found && ($img_y <= ($imageHeight - $patternHeight))); $img_y++) { // <- check if img_y == ($imageHeight - $patternHeight) or not
$pattern_is_matching = true;
for($pattern_x=0; ($pattern_is_matching && ($pattern_x < $patternWidth)); ++$pattern_x) {
for($pattern_y=0; ($pattern_is_matching && ($pattern_y < $patternHeight)); ++$pattern_y) {
if ($image[$img_x + $pattern_x][$img_y + $pattern_y] != $pattern[$pattern_x][$pattern_y]) {
$pattern_is_matching = false;
}
}
}
if ($pattern_is_matching) {
$pattern_not_found = false;
$result = [$img_x, $img_y];
}
}
}
}
return $result;
}
$image = [
[0xff0000, 0x00ff00, 0x0000ff],
[0xd3d3d3, 0x000000, 0xd3d3d3],
[0xff0000, 0x00ff00, 0x0000d3],
[0xff0000, 0x00ff00, 0x0000ff],
[0xff0000, 0x00ff00, 0x0000ff],
[0xff0000, 0x00ff00, 0x0000ff]
];
$pattern = [
[0xff0000, 0x00ff00, 0x0000ff],
[0xff0000, 0x00ff00, 0x0000ff],
[0xff0000, 0x00ff00, 0x0000ff]
];
print_r($image);
$result = solve(6, 3, $image, 3, 3, $pattern);
print_r($result); |
Partager