From 1fe3699c0ef3f40a145bb666cbff64a59d3aaba6 Mon Sep 17 00:00:00 2001 From: brtastic Date: Sun, 25 Apr 2021 01:06:54 +0200 Subject: Challenge 109 solutions in PHP (translated from Perl) --- challenge-109/brtastic/php/ch-1.php | 8 ++++ challenge-109/brtastic/php/ch-2.php | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 challenge-109/brtastic/php/ch-1.php create mode 100644 challenge-109/brtastic/php/ch-2.php diff --git a/challenge-109/brtastic/php/ch-1.php b/challenge-109/brtastic/php/ch-1.php new file mode 100644 index 0000000000..cc5c5e6de3 --- /dev/null +++ b/challenge-109/brtastic/php/ch-1.php @@ -0,0 +1,8 @@ += 4 ? range(2, floor($num / 2)) : [], + fn ($divisor) => $num % $divisor == 0 + )) . "\n"; +} diff --git a/challenge-109/brtastic/php/ch-2.php b/challenge-109/brtastic/php/ch-2.php new file mode 100644 index 0000000000..304967ffae --- /dev/null +++ b/challenge-109/brtastic/php/ch-2.php @@ -0,0 +1,75 @@ + [$el, ...$arr], + permute( + array_filter( + $what, + fn ($subel) + => $subel != $el || $seen++ + ) + ) + )); + } + + return $options; +} + +function four_squares($input) +{ + $results = []; + + if (count($input) != EL_COUNT) { + return $results; + } + + foreach (permute($input) as $case) { + $real_case = [0, ...$case, 0]; + $summed_groups = array_map( + fn ($el) + => array_sum( + array_map( + fn ($subel) + => $real_case[$subel], + range($el, $el + 2)) + ), + array_filter( + array_keys($real_case), + fn ($el) + => $el % 2 == 0 && $el <= count($real_case) - 2 + ) + ); + + $matching_first = array_filter( + $summed_groups, + fn ($el) + => $el == $summed_groups[0] + ); + + if (count($matching_first) == count($summed_groups)) { + $case_results = []; + for ($letter = 'a'; $letter != 'h'; ++$letter) { + $case_results[$letter] = array_shift($case); + } + + $results[] = $case_results; + } + } + + return $results; +} + +var_dump(four_squares(range(1, 7))); + -- cgit