getSize(); echo "Matrix size: {$size}x{$size}\n\n"; // Expected finder pattern (7x7) // 1 1 1 1 1 1 1 // 1 0 0 0 0 0 1 // 1 0 1 1 1 0 1 // 1 0 1 1 1 0 1 // 1 0 1 1 1 0 1 // 1 0 0 0 0 0 1 // 1 1 1 1 1 1 1 $expectedFinder = [ [1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 0, 1], [1, 0, 1, 1, 1, 0, 1], [1, 0, 1, 1, 1, 0, 1], [1, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1], ]; $finderPositions = [ ['name' => 'Top-Left', 'row' => 0, 'col' => 0], ['name' => 'Top-Right', 'row' => 0, 'col' => $size - 7], ['name' => 'Bottom-Left', 'row' => $size - 7, 'col' => 0], ]; foreach ($finderPositions as $finder) { echo "=== {$finder['name']} Finder Pattern ===\n"; $errors = 0; for ($r = 0; $r < 7; $r++) { $row = $finder['row'] + $r; $bits = ''; $expectedBits = ''; for ($c = 0; $c < 7; $c++) { $col = $finder['col'] + $c; $isDark = $matrix->getModuleAt($row, $col)->isDark(); $expectedDark = $expectedFinder[$r][$c] === 1; $bits .= $isDark ? '1' : '0'; $expectedBits .= $expectedDark ? '1' : '0'; if ($isDark !== $expectedDark) { $errors++; } } echo "Row {$r}: {$bits} (expected: {$expectedBits})"; if ($bits === $expectedBits) { echo " ✅\n"; } else { echo " ❌\n"; } } if ($errors === 0) { echo "✅ {$finder['name']} finder pattern is CORRECT\n\n"; } else { echo "❌ {$finder['name']} finder pattern has {$errors} errors\n\n"; } }