✨ Add day 10 part 1
This commit is contained in:
44
day_10/functions.php
Normal file
44
day_10/functions.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* @param array $array
|
||||
* @return array|bool
|
||||
*/
|
||||
function array_flatten(array $array) {
|
||||
return iterator_to_array(array_flatten_iterator($array), false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $array
|
||||
* @return Generator
|
||||
*/
|
||||
function array_flatten_iterator(array $array) {
|
||||
foreach ($array as $value) {
|
||||
if (is_array($value)) {
|
||||
yield from array_flatten_iterator($value);
|
||||
} else {
|
||||
yield $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $x1
|
||||
* @param int $y1
|
||||
* @param int $x2
|
||||
* @param int $y2
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function getPointsBetween(int $x1, int $y1, int $x2, int $y2)
|
||||
{
|
||||
$dx = $x2-$x1;
|
||||
$dy = $y2-$y1;
|
||||
$max = max(abs($dx), abs($dy));
|
||||
for($t = 0; $t<=$max; $t++) {
|
||||
$points[] = sprintf('%s,%s', $x1+($t*$dx)/$max, $y1+($t*$dy)/$max);
|
||||
}
|
||||
|
||||
return $points;
|
||||
}
|
||||
Reference in New Issue
Block a user