summaryrefslogtreecommitdiff
path: root/2024/PHP/day_04/Grid.php
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2025-11-29 20:23:02 +0100
committerDJ O'Leary <dijitol@proton.me>2025-11-29 20:23:02 +0100
commit4c3a50166bf0f78ce89459c352cc1c6536a8b96d (patch)
tree02e4b66a1435680ef1e92bf82576747b27f16447 /2024/PHP/day_04/Grid.php
parentbe2f8528b3829f8263507da301812d852297c168 (diff)
chore: make language folders snake_case
Diffstat (limited to '2024/PHP/day_04/Grid.php')
-rw-r--r--2024/PHP/day_04/Grid.php69
1 files changed, 0 insertions, 69 deletions
diff --git a/2024/PHP/day_04/Grid.php b/2024/PHP/day_04/Grid.php
deleted file mode 100644
index 75d531b..0000000
--- a/2024/PHP/day_04/Grid.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-class Grid implements Stringable
-{
- /**
- * @param string[][] $data
- */
- public function __construct(public array $data)
- {
- }
-
- public function __toString(): string
- {
- $rowToLine = fn (array $row): string => array_reduce(
- array: $row,
- callback: fn (string $acc, string $character): string => $acc . $character,
- initial: "",
- );
-
- return array_reduce(
- array: $this->data,
- callback: fn (string $acc, array $row): string => $acc . $rowToLine($row) . PHP_EOL,
- initial: "",
- );
- }
-
- public function getCharacterAtPosition(Position $position): string
- {
- if ($this->isInBounds($position)) {
- return $this->data[$position->y][$position->x];
- }
-
- return ".";
- }
-
- /**
- * @param Position[] $positions
- */
- public function getStringFromPositions(array $positions): string
- {
- $characters = array_map(
- callback: fn (Position $position): string => $this->getCharacterAtPosition($position),
- array: $positions,
- );
-
- $string = array_reduce(
- array: $characters,
- callback: fn (string $acc, string $character): string => $acc . $character,
- initial: "",
- );
-
- return $string;
- }
-
- public function isInBounds(Position $position): bool
- {
- if (!array_key_exists($position->y, $this->data)) {
- return false;
- }
-
- if (!array_key_exists($position->x, $this->data[$position->y])) {
- return false;
- }
-
- return true;
- }
-}