Prompt:
<?php
// From a supplied array of numbers (of length at least two) select and return two that are the closest to each
// other and return them in order (smaller number, larger number).
// >>> find_closest_elements(array(1.0, 2.0, 3.0, 4.0, 5.0, 2.2))
// array(2.0, 2.2)
// >>> find_closest_elements(array(1.0, 2.0, 3.0, 4.0, 5.0, 2.0))
// array(2.0, 2.0)
function find_closest_elements($numbers) {

function candidate(...$args) {
    return find_closest_elements(...$args);
}

function test(): void {
    if (candidate(array(1.0, 2.0, 3.9, 4.0, 5.0, 2.2)) !== array(3.9, 4.0)) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 5.9, 4.0, 5.0)) !== array(5.0, 5.9)) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0, 4.0, 5.0, 2.2)) !== array(2.0, 2.2)) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0, 4.0, 5.0, 2.0)) !== array(2.0, 2.0)) { throw new Exception("Test failed!"); }
    if (candidate(array(1.1, 2.2, 3.1, 4.1, 5.1)) !== array(2.2, 3.1)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given array of numbers (of at least two elements), apply a linear transform to that array,
// such that the smallest number will become 0 and the largest will become 1
// >>> rescale_to_unit(array(1.0, 2.0, 3.0, 4.0, 5.0))
// array(0.0, 0.25, 0.5, 0.75, 1.0)
function rescale_to_unit($numbers) {

function candidate(...$args) {
    return rescale_to_unit(...$args);
}

function test(): void {
    if (candidate(array(2.0, 49.9)) !== array(0.0, 1.0)) { throw new Exception("Test failed!"); }
    if (candidate(array(100.0, 49.9)) !== array(1.0, 0.0)) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0, 4.0, 5.0)) !== array(0.0, 0.25, 0.5, 0.75, 1.0)) { throw new Exception("Test failed!"); }
    if (candidate(array(2.0, 1.0, 5.0, 3.0, 4.0)) !== array(0.25, 0.0, 1.0, 0.5, 0.75)) { throw new Exception("Test failed!"); }
    if (candidate(array(12.0, 11.0, 15.0, 13.0, 14.0)) !== array(0.25, 0.0, 1.0, 0.5, 0.75)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Filter given array of any phpthon values only for integers
// >>> filter_integers(array("a", 3.14, 5))
// array(5)
// >>> filter_integers(array(1, 2, 3, "abc", array(), array()))
// array(1, 2, 3)
function filter_integers($values) {

function candidate(...$args) {
    return filter_integers(...$args);
}

function test(): void {
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(4, array(), array(), 23.2, 9, "adasd")) !== array(4, 9)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, "c", 3, 3, "a", "b")) !== array(3, 3, 3)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return length of given string
// >>> strlen("")
// 0
// >>> strlen("abc")
// 3
function strlen($string) {

function candidate(...$args) {
    return strlen(...$args);
}

function test(): void {
    if (candidate("") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("x") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("asdasnakj") !== 9) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// For a given number n, find the largest number that divides n evenly, smaller than n
// >>> largest_divisor(15)
// 5
function largest_divisor($n) {

function candidate(...$args) {
    return largest_divisor(...$args);
}

function test(): void {
    if (candidate(3) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(7) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(10) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(100) !== 50) { throw new Exception("Test failed!"); }
    if (candidate(49) !== 7) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return array of prime factors of given integer in the order from smallest to largest.
// Each of the factors should be arrayed number of times corresponding to how many times it appeares in factorization.
// Input number should be equal to the product of all factors
// >>> factorize(8)
// array(2, 2, 2)
// >>> factorize(25)
// array(5, 5)
// >>> factorize(70)
// array(2, 5, 7)
function factorize($n) {

function candidate(...$args) {
    return factorize(...$args);
}

function test(): void {
    if (candidate(2) !== array(2)) { throw new Exception("Test failed!"); }
    if (candidate(4) !== array(2, 2)) { throw new Exception("Test failed!"); }
    if (candidate(8) !== array(2, 2, 2)) { throw new Exception("Test failed!"); }
    if (candidate(57) !== array(3, 19)) { throw new Exception("Test failed!"); }
    if (candidate(3249) !== array(3, 3, 19, 19)) { throw new Exception("Test failed!"); }
    if (candidate(185193) !== array(3, 3, 3, 19, 19, 19)) { throw new Exception("Test failed!"); }
    if (candidate(20577) !== array(3, 19, 19, 19)) { throw new Exception("Test failed!"); }
    if (candidate(18) !== array(2, 3, 3)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// From an array of integers, remove all elements that occur more than once.
// Keep order of elements left the same as in the input.
// >>> remove_duplicates(array(1, 2, 3, 2, 4))
// array(1, 3, 4)
function remove_duplicates($numbers) {

function candidate(...$args) {
    return remove_duplicates(...$args);
}

function test(): void {
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4)) !== array(1, 2, 3, 4)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 2, 4, 3, 5)) !== array(1, 4, 5)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// For a given string, flip lowercase characters to uppercase and uppercase to lowercase.
// >>> flip_case("Hello")
// "hELLO"
function flip_case($string) {

function candidate(...$args) {
    return flip_case(...$args);
}

function test(): void {
    if (candidate("") !== "") { throw new Exception("Test failed!"); }
    if (candidate("Hello!") !== "hELLO!") { throw new Exception("Test failed!"); }
    if (candidate("These violent delights have violent ends") !== "tHESE VIOLENT DELIGHTS HAVE VIOLENT ENDS") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Concatenate array of strings into a single string
// >>> concatenate(array())
// ""
// >>> concatenate(array("a", "b", "c"))
// "abc"
function concatenate($strings) {

function candidate(...$args) {
    return concatenate(...$args);
}

function test(): void {
    if (candidate(array()) !== "") { throw new Exception("Test failed!"); }
    if (candidate(array("x", "y", "z")) !== "xyz") { throw new Exception("Test failed!"); }
    if (candidate(array("x", "y", "z", "w", "k")) !== "xyzwk") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Filter an input array of strings only for ones that start with a given prefix.
// >>> filter_by_prefix(array(), "a")
// array()
// >>> filter_by_prefix(array("abc", "bcd", "cde", "array"), "a")
// array("abc", "array")
function filter_by_prefix($strings, $prefix) {

function candidate(...$args) {
    return filter_by_prefix(...$args);
}

function test(): void {
    if (candidate(array(), "john") !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("xxx", "asd", "xxy", "john doe", "xxxAAA", "xxx"), "xxx") !== array("xxx", "xxxAAA", "xxx")) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a positive floating point number, it can be decomposed into
// and integer part (largest integer smaller than given number) and decimals
// (leftover part always smaller than 1).
// Return the decimal part of the number.
// >>> truncate_number(3.5)
// 0.5
function truncate_number($number) {

function candidate(...$args) {
    return truncate_number(...$args);
}

function test(): void {
    if (candidate(3.5) !== 0.5) { throw new Exception("Test failed!"); }
    if (candidate(1.25) !== 0.25) { throw new Exception("Test failed!"); }
    if (candidate(123.0) !== 0.0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return only positive numbers in the array.
// >>> get_positive(array(-1, 2, -4, 5, 6))
// array(2, 5, 6)
// >>> get_positive(array(5, 3, -5, 2, -3, 3, 9, 0, 123, 1, -10))
// array(5, 3, 2, 3, 9, 123, 1)
function get_positive($l) {

function candidate(...$args) {
    return get_positive(...$args);
}

function test(): void {
    if (candidate(array(-1, -2, 4, 5, 6)) !== array(4, 5, 6)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 3, -5, 2, 3, 3, 9, 0, 123, 1, -10)) !== array(5, 3, 2, 3, 3, 9, 123, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -2)) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return true if a given number is prime, and false otherwise.
// >>> is_prime(6)
// false
// >>> is_prime(101)
// true
// >>> is_prime(11)
// true
// >>> is_prime(13441)
// true
// >>> is_prime(61)
// true
// >>> is_prime(4)
// false
// >>> is_prime(1)
// false
function is_prime($n) {

function candidate(...$args) {
    return is_prime(...$args);
}

function test(): void {
    if (candidate(6) !== false) { throw new Exception("Test failed!"); }
    if (candidate(101) !== true) { throw new Exception("Test failed!"); }
    if (candidate(11) !== true) { throw new Exception("Test failed!"); }
    if (candidate(13441) !== true) { throw new Exception("Test failed!"); }
    if (candidate(61) !== true) { throw new Exception("Test failed!"); }
    if (candidate(4) !== false) { throw new Exception("Test failed!"); }
    if (candidate(1) !== false) { throw new Exception("Test failed!"); }
    if (candidate(5) !== true) { throw new Exception("Test failed!"); }
    if (candidate(11) !== true) { throw new Exception("Test failed!"); }
    if (candidate(17) !== true) { throw new Exception("Test failed!"); }
    if (candidate(85) !== false) { throw new Exception("Test failed!"); }
    if (candidate(77) !== false) { throw new Exception("Test failed!"); }
    if (candidate(255379) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// This function takes an array l and returns an array l' such that
// l' is identical to l in the indicies that are not divisible by three, while its values at the indicies that are divisible by three are equal
// to the values of the corresponding indicies of l, but sorted.
// >>> sort_third(array(1, 2, 3))
// array(1, 2, 3)
// >>> sort_third(array(5, 6, 3, 4, 8, 9, 2))
// array(2, 6, 3, 4, 8, 9, 5)
function sort_third($l) {

function candidate(...$args) {
    return sort_third(...$args);
}

function test(): void {
    if (candidate(array(5, 6, 3, 4, 8, 9, 2)) !== array(2, 6, 3, 4, 8, 9, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 8, 3, 4, 6, 9, 2)) !== array(2, 8, 3, 4, 6, 9, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 6, 9, 4, 8, 3, 2)) !== array(2, 6, 9, 4, 8, 3, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 6, 3, 4, 8, 9, 2, 1)) !== array(2, 6, 3, 4, 8, 9, 5, 1)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return sorted unique elements in an array
// >>> unique(array(5, 3, 5, 2, 3, 3, 9, 0, 123))
// array(0, 2, 3, 5, 9, 123)
function unique($l) {

function candidate(...$args) {
    return unique(...$args);
}

function test(): void {
    if (candidate(array(5, 3, 5, 2, 3, 3, 9, 0, 123)) !== array(0, 2, 3, 5, 9, 123)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return maximum element in the array.
// >>> max_element(array(1, 2, 3))
// 3
// >>> max_element(array(5, 3, -5, 2, -3, 3, 9, 0, 123, 1, -10))
// 123
function max_element($l) {

function candidate(...$args) {
    return max_element(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 3)) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 3, -5, 2, -3, 3, 9, 0, 124, 1, -10)) !== 124) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return the number of times the digit 7 appears in integers less than n which are divisible by 11 or 13.
// >>> fizz_buzz(50)
// 0
// >>> fizz_buzz(78)
// 2
// >>> fizz_buzz(79)
// 3
function fizz_buzz($n) {

function candidate(...$args) {
    return fizz_buzz(...$args);
}

function test(): void {
    if (candidate(50) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(78) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(79) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(100) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(200) !== 6) { throw new Exception("Test failed!"); }
    if (candidate(4000) !== 192) { throw new Exception("Test failed!"); }
    if (candidate(10000) !== 639) { throw new Exception("Test failed!"); }
    if (candidate(100000) !== 8026) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// This function takes an array l and returns an array l' such that
// l' is identical to l in the odd indicies, while its values at the even indicies are equal
// to the values of the even indicies of l, but sorted.
// >>> sort_even(array(1, 2, 3))
// array(1, 2, 3)
// >>> sort_even(array(5, 6, 3, 4))
// array(3, 6, 5, 4)
function sort_even($l) {

function candidate(...$args) {
    return sort_even(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 3)) !== array(1, 2, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 3, -5, 2, -3, 3, 9, 0, 123, 1, -10)) !== array(-10, 3, -5, 2, -3, 3, 5, 0, 9, 1, 123)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 8, -12, 4, 23, 2, 3, 11, 12, -10)) !== array(-12, 8, 3, 4, 5, 2, 12, 11, 23, -10)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// prime_fib returns n-th number that is a Fibonacci number and it's also prime.
// >>> prime_fib(1)
// 2
// >>> prime_fib(2)
// 3
// >>> prime_fib(3)
// 5
// >>> prime_fib(4)
// 13
// >>> prime_fib(5)
// 89
function prime_fib($n) {

function candidate(...$args) {
    return prime_fib(...$args);
}

function test(): void {
    if (candidate(1) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(2) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(3) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(4) !== 13) { throw new Exception("Test failed!"); }
    if (candidate(5) !== 89) { throw new Exception("Test failed!"); }
    if (candidate(6) !== 233) { throw new Exception("Test failed!"); }
    if (candidate(7) !== 1597) { throw new Exception("Test failed!"); }
    if (candidate(8) !== 28657) { throw new Exception("Test failed!"); }
    if (candidate(9) !== 514229) { throw new Exception("Test failed!"); }
    if (candidate(10) !== 433494437) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You're given an array of deposit and withdrawal operations on a bank account that starts with
// zero balance. Your task is to detect if at any point the balance of account fallls below zero, and
// at that point function should return true. Otherwise it should return false.
// >>> below_zero(array(1, 2, 3))
// false
// >>> below_zero(array(1, 2, -4, 5))
// true
function below_zero($operations) {

function candidate(...$args) {
    return below_zero(...$args);
}

function test(): void {
    if (candidate(array()) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, -3, 1, 2, -3)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, -4, 5, 6)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, -1, 2, -2, 5, -5, 4, -4)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, -1, 2, -2, 5, -5, 4, -5)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, -2, 2, -2, 5, -5, 4, -4)) !== true) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// triples_sum_to_zero takes an array of integers as an input.
// it returns true if there are three distinct elements in the array that
// sum to zero, and false otherwise.
// >>> triples_sum_to_zero(array(1, 3, 5, 0))
// false
// >>> triples_sum_to_zero(array(1, 3, -2, 1))
// true
// >>> triples_sum_to_zero(array(1, 2, 3, 7))
// false
// >>> triples_sum_to_zero(array(2, 4, -5, 3, 9, 7))
// true
// >>> triples_sum_to_zero(array(1))
// false
function triples_sum_to_zero($l) {

function candidate(...$args) {
    return triples_sum_to_zero(...$args);
}

function test(): void {
    if (candidate(array(1, 3, 5, 0)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 3, 5, -1)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 3, -2, 1)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 7)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 5, 7)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, -5, 3, 9, 7)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 3, 5, -100)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(100, 3, 5, -100)) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Imagine a road that's a perfectly straight infinitely long line.
// n cars are driving left to right;  simultaneously, a different set of n cars
// are driving right to left.   The two sets of cars start out being very far from
// each other.  All cars move in the same speed.  Two cars are said to collide
// when a car that's moving left to right hits a car that's moving right to left.
// However, the cars are infinitely sturdy and strong; as a result, they continue moving
// in their trajectory as if they did not collide.
// This function outputs the number of such collisions.
function car_race_collision($n) {

function candidate(...$args) {
    return car_race_collision(...$args);
}

function test(): void {
    if (candidate(2) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(3) !== 9) { throw new Exception("Test failed!"); }
    if (candidate(4) !== 16) { throw new Exception("Test failed!"); }
    if (candidate(8) !== 64) { throw new Exception("Test failed!"); }
    if (candidate(10) !== 100) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return array with elements incremented by 1.
// >>> incr_list(array(1, 2, 3))
// array(2, 3, 4)
// >>> incr_list(array(5, 3, 5, 2, 3, 3, 9, 0, 123))
// array(6, 4, 6, 3, 4, 4, 10, 1, 124)
function incr_list($l) {

function candidate(...$args) {
    return incr_list(...$args);
}

function test(): void {
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 1)) !== array(4, 3, 2)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 2, 5, 2, 3, 3, 9, 0, 123)) !== array(6, 3, 6, 3, 4, 4, 10, 1, 124)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// pairs_sum_to_zero takes an array of integers as an input.
// it returns true if there are two distinct elements in the array that
// sum to zero, and false otherwise.
// >>> pairs_sum_to_zero(array(1, 3, 5, 0))
// false
// >>> pairs_sum_to_zero(array(1, 3, -2, 1))
// false
// >>> pairs_sum_to_zero(array(1, 2, 3, 7))
// false
// >>> pairs_sum_to_zero(array(2, 4, -5, 3, 5, 7))
// true
// >>> pairs_sum_to_zero(array(1))
// false
function pairs_sum_to_zero($l) {

function candidate(...$args) {
    return pairs_sum_to_zero(...$args);
}

function test(): void {
    if (candidate(array(1, 3, 5, 0)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 3, -2, 1)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 7)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, -5, 3, 5, 7)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(-3, 9, -1, 3, 2, 30)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(-3, 9, -1, 3, 2, 31)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(-3, 9, -1, 4, 2, 30)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(-3, 9, -1, 4, 2, 31)) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Change numerical base of input number x to base.
// return string representation after the conversion.
// base numbers are less than 10.
// >>> change_base(8, 3)
// "22"
// >>> change_base(8, 2)
// "1000"
// >>> change_base(7, 2)
// "111"
function change_base($x, $base) {

function candidate(...$args) {
    return change_base(...$args);
}

function test(): void {
    if (candidate(8, 3) !== "22") { throw new Exception("Test failed!"); }
    if (candidate(9, 3) !== "100") { throw new Exception("Test failed!"); }
    if (candidate(234, 2) !== "11101010") { throw new Exception("Test failed!"); }
    if (candidate(16, 2) !== "10000") { throw new Exception("Test failed!"); }
    if (candidate(8, 2) !== "1000") { throw new Exception("Test failed!"); }
    if (candidate(7, 2) !== "111") { throw new Exception("Test failed!"); }
    if (candidate(2, 3) !== "2") { throw new Exception("Test failed!"); }
    if (candidate(3, 4) !== "3") { throw new Exception("Test failed!"); }
    if (candidate(4, 5) !== "4") { throw new Exception("Test failed!"); }
    if (candidate(5, 6) !== "5") { throw new Exception("Test failed!"); }
    if (candidate(6, 7) !== "6") { throw new Exception("Test failed!"); }
    if (candidate(7, 8) !== "7") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given length of a side and high return area for a triangle.
// >>> triangle_area(5, 3)
// 7.5
function triangle_area($a, $h) {

function candidate(...$args) {
    return triangle_area(...$args);
}

function test(): void {
    if (candidate(5, 3) !== 7.5) { throw new Exception("Test failed!"); }
    if (candidate(2, 2) !== 2.0) { throw new Exception("Test failed!"); }
    if (candidate(10, 8) !== 40.0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// The Fib4 number sequence is a sequence similar to the Fibbonacci sequnece that's defined as follows:
// fib4(0) -> 0
// fib4(1) -> 0
// fib4(2) -> 2
// fib4(3) -> 0
// fib4(n) -> fib4(n-1) + fib4(n-2) + fib4(n-3) + fib4(n-4).
// Please write a function to efficiently compute the n-th element of the fib4 number sequence.  Do not use recursion.
// >>> fib4(5)
// 4
// >>> fib4(6)
// 8
// >>> fib4(7)
// 14
function fib4($n) {

function candidate(...$args) {
    return fib4(...$args);
}

function test(): void {
    if (candidate(5) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(8) !== 28) { throw new Exception("Test failed!"); }
    if (candidate(10) !== 104) { throw new Exception("Test failed!"); }
    if (candidate(12) !== 386) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return median of elements in the array l.
// >>> median(array(3, 1, 2, 4, 5))
// 3
// >>> median(array(-10, 4, 6, 1000, 10, 20))
// 15.0
function median($l) {

function candidate(...$args) {
    return median(...$args);
}

function test(): void {
    if (candidate(array(3, 1, 2, 4, 5)) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(array(-10, 4, 6, 1000, 10, 20)) !== 8.0) { throw new Exception("Test failed!"); }
    if (candidate(array(5)) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(array(6, 5)) !== 5.5) { throw new Exception("Test failed!"); }
    if (candidate(array(8, 1, 3, 9, 9, 2, 7)) !== 7) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Checks if given string is a palindrome
// >>> is_palindrome("")
// true
// >>> is_palindrome("aba")
// true
// >>> is_palindrome("aaaaa")
// true
// >>> is_palindrome("zbcd")
// false
function is_palindrome($text) {

function candidate(...$args) {
    return is_palindrome(...$args);
}

function test(): void {
    if (candidate("") !== true) { throw new Exception("Test failed!"); }
    if (candidate("aba") !== true) { throw new Exception("Test failed!"); }
    if (candidate("aaaaa") !== true) { throw new Exception("Test failed!"); }
    if (candidate("zbcd") !== false) { throw new Exception("Test failed!"); }
    if (candidate("xywyx") !== true) { throw new Exception("Test failed!"); }
    if (candidate("xywyz") !== false) { throw new Exception("Test failed!"); }
    if (candidate("xywzx") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return 2^n modulo p (be aware of numerics).
// >>> modp(3, 5)
// 3
// >>> modp(1101, 101)
// 2
// >>> modp(0, 101)
// 1
// >>> modp(3, 11)
// 8
// >>> modp(100, 101)
// 1
function modp($n, $p) {

function candidate(...$args) {
    return modp(...$args);
}

function test(): void {
    if (candidate(3, 5) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(1101, 101) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(0, 101) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(3, 11) !== 8) { throw new Exception("Test failed!"); }
    if (candidate(100, 101) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(30, 5) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(31, 5) !== 3) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// For a given array of input numbers, calculate Mean Absolute Deviation
// around the mean of this dataset.
// Mean Absolute Deviation is the average absolute difference between each
// element and a centerpoint (mean in this case):
// MAD = average | x - x_mean |
// >>> mean_absolute_deviation(array(1.0, 2.0, 3.0, 4.0))
// 1.0
function mean_absolute_deviation($numbers) {

function candidate(...$args) {
    return mean_absolute_deviation(...$args);
}

function test(): void {
    if (candidate(array(1.0, 2.0)) !== 0.5) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0, 4.0)) !== 1.0) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0, 4.0, 5.0)) !== 1.2) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// remove_vowels is a function that takes string and returns string without vowels.
// >>> remove_vowels("")
// ""
// >>> remove_vowels("abcdef")
// "bcdf"
// >>> remove_vowels("aaaaa")
// ""
// >>> remove_vowels("aaBAA")
// "B"
// >>> remove_vowels("zbcd")
// "zbcd"
function remove_vowels($text) {

function candidate(...$args) {
    return remove_vowels(...$args);
}

function test(): void {
    if (candidate("") !== "") { throw new Exception("Test failed!"); }
    if (candidate("abcdef\nghijklm") !== "bcdf\nghjklm") { throw new Exception("Test failed!"); }
    if (candidate("fedcba") !== "fdcb") { throw new Exception("Test failed!"); }
    if (candidate("eeeee") !== "") { throw new Exception("Test failed!"); }
    if (candidate("acBAA") !== "cB") { throw new Exception("Test failed!"); }
    if (candidate("EcBOO") !== "cB") { throw new Exception("Test failed!"); }
    if (candidate("ybcd") !== "ybcd") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return true if all numbers in the array l are below threshold t.
// >>> below_threshold(array(1, 2, 4, 10), 100)
// true
// >>> below_threshold(array(1, 20, 4, 10), 5)
// false
function below_threshold($l, $t) {

function candidate(...$args) {
    return below_threshold(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 4, 10), 100) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 20, 4, 10), 5) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 20, 4, 10), 21) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 20, 4, 10), 22) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 8, 4, 10), 11) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 8, 4, 10), 10) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Add two numbers x and y
// >>> add(2, 3)
// 5
// >>> add(5, 7)
// 12
function add($x, $y) {

function candidate(...$args) {
    return add(...$args);
}

function test(): void {
    if (candidate(0, 1) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(1, 0) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(2, 3) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(5, 7) !== 12) { throw new Exception("Test failed!"); }
    if (candidate(7, 5) !== 12) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Check if two words have the same characters.
// >>> same_chars("eabcdzzzz", "dddzzzzzzzddeddabc")
// true
// >>> same_chars("abcd", "dddddddabc")
// true
// >>> same_chars("dddddddabc", "abcd")
// true
// >>> same_chars("eabcd", "dddddddabc")
// false
// >>> same_chars("abcd", "dddddddabce")
// false
// >>> same_chars("eabcdzzzz", "dddzzzzzzzddddabc")
// false
function same_chars($s0, $s1) {

function candidate(...$args) {
    return same_chars(...$args);
}

function test(): void {
    if (candidate("eabcdzzzz", "dddzzzzzzzddeddabc") !== true) { throw new Exception("Test failed!"); }
    if (candidate("abcd", "dddddddabc") !== true) { throw new Exception("Test failed!"); }
    if (candidate("dddddddabc", "abcd") !== true) { throw new Exception("Test failed!"); }
    if (candidate("eabcd", "dddddddabc") !== false) { throw new Exception("Test failed!"); }
    if (candidate("abcd", "dddddddabcf") !== false) { throw new Exception("Test failed!"); }
    if (candidate("eabcdzzzz", "dddzzzzzzzddddabc") !== false) { throw new Exception("Test failed!"); }
    if (candidate("aabb", "aaccc") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return n-th Fibonacci number.
// >>> fib(10)
// 55
// >>> fib(1)
// 1
// >>> fib(8)
// 21
function fib($n) {

function candidate(...$args) {
    return fib(...$args);
}

function test(): void {
    if (candidate(10) !== 55) { throw new Exception("Test failed!"); }
    if (candidate(1) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(8) !== 21) { throw new Exception("Test failed!"); }
    if (candidate(11) !== 89) { throw new Exception("Test failed!"); }
    if (candidate(12) !== 144) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// brackets is a string of "<" and ">".
// return true if every opening bracket has a corresponding closing bracket.
// >>> correct_bracketing("<")
// false
// >>> correct_bracketing("<>")
// true
// >>> correct_bracketing("<<><>>")
// true
// >>> correct_bracketing("><<>")
// false
function correct_bracketing($brackets) {

function candidate(...$args) {
    return correct_bracketing(...$args);
}

function test(): void {
    if (candidate("<>") !== true) { throw new Exception("Test failed!"); }
    if (candidate("<<><>>") !== true) { throw new Exception("Test failed!"); }
    if (candidate("<><><<><>><>") !== true) { throw new Exception("Test failed!"); }
    if (candidate("<><><<<><><>><>><<><><<>>>") !== true) { throw new Exception("Test failed!"); }
    if (candidate("<<<><>>>>") !== false) { throw new Exception("Test failed!"); }
    if (candidate("><<>") !== false) { throw new Exception("Test failed!"); }
    if (candidate("<") !== false) { throw new Exception("Test failed!"); }
    if (candidate("<<<<") !== false) { throw new Exception("Test failed!"); }
    if (candidate(">") !== false) { throw new Exception("Test failed!"); }
    if (candidate("<<>") !== false) { throw new Exception("Test failed!"); }
    if (candidate("<><><<><>><>><<>") !== false) { throw new Exception("Test failed!"); }
    if (candidate("<><><<><>><>>><>") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return true is array elements are monotonically increasing or decreasing.
// >>> monotonic(array(1, 2, 4, 20))
// true
// >>> monotonic(array(1, 20, 4, 10))
// false
// >>> monotonic(array(4, 1, 0, -10))
// true
function monotonic($l) {

function candidate(...$args) {
    return monotonic(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 4, 10)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 4, 20)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 20, 4, 10)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 1, 0, -10)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 1, 1, 0)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 2, 5, 60)) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4, 5, 60)) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(9, 9, 9, 9)) !== true) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return sorted unique common elements for two arrays.
// >>> common(array(1, 4, 3, 34, 653, 2, 5), array(5, 7, 1, 5, 9, 653, 121))
// array(1, 5, 653)
// >>> common(array(5, 3, 2, 8), array(3, 2))
// array(2, 3)
function common($l1, $l2) {

function candidate(...$args) {
    return common(...$args);
}

function test(): void {
    if (candidate(array(1, 4, 3, 34, 653, 2, 5), array(5, 7, 1, 5, 9, 653, 121)) !== array(1, 5, 653)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 3, 2, 8), array(3, 2)) !== array(2, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 3, 2, 8), array(3, 2, 4)) !== array(2, 3, 4)) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 3, 2, 8), array()) !== array()) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return the largest prime factor of n. Assume n > 1 and is not a prime.
// >>> largest_prime_factor(13195)
// 29
// >>> largest_prime_factor(2048)
// 2
function largest_prime_factor($n) {

function candidate(...$args) {
    return largest_prime_factor(...$args);
}

function test(): void {
    if (candidate(15) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(27) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(63) !== 7) { throw new Exception("Test failed!"); }
    if (candidate(330) !== 11) { throw new Exception("Test failed!"); }
    if (candidate(13195) !== 29) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Insert a number 'delimeter' between every two consecutive elements of input array `numbers'
// >>> intersperse(array(), 4)
// array()
// >>> intersperse(array(1, 2, 3), 4)
// array(1, 4, 2, 4, 3)
function intersperse($numbers, $delimeter) {

function candidate(...$args) {
    return intersperse(...$args);
}

function test(): void {
    if (candidate(array(), 7) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 6, 3, 2), 8) !== array(5, 8, 6, 8, 3, 8, 2)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 2, 2), 2) !== array(2, 2, 2, 2, 2)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// sum_to_n is a function that sums numbers from 1 to n.
// >>> sum_to_n(30)
// 465
// >>> sum_to_n(100)
// 5050
// >>> sum_to_n(5)
// 15
// >>> sum_to_n(10)
// 55
// >>> sum_to_n(1)
// 1
function sum_to_n($n) {

function candidate(...$args) {
    return sum_to_n(...$args);
}

function test(): void {
    if (candidate(1) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(6) !== 21) { throw new Exception("Test failed!"); }
    if (candidate(11) !== 66) { throw new Exception("Test failed!"); }
    if (candidate(30) !== 465) { throw new Exception("Test failed!"); }
    if (candidate(100) !== 5050) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// brackets is a string of "(" and ")".
// return true if every opening bracket has a corresponding closing bracket.
// >>> correct_bracketing("(")
// false
// >>> correct_bracketing("()")
// true
// >>> correct_bracketing("(()())")
// true
// >>> correct_bracketing(")(()")
// false
function correct_bracketing($brackets) {

function candidate(...$args) {
    return correct_bracketing(...$args);
}

function test(): void {
    if (candidate("()") !== true) { throw new Exception("Test failed!"); }
    if (candidate("(()())") !== true) { throw new Exception("Test failed!"); }
    if (candidate("()()(()())()") !== true) { throw new Exception("Test failed!"); }
    if (candidate("()()((()()())())(()()(()))") !== true) { throw new Exception("Test failed!"); }
    if (candidate("((()())))") !== false) { throw new Exception("Test failed!"); }
    if (candidate(")(()") !== false) { throw new Exception("Test failed!"); }
    if (candidate("(") !== false) { throw new Exception("Test failed!"); }
    if (candidate("((((") !== false) { throw new Exception("Test failed!"); }
    if (candidate(")") !== false) { throw new Exception("Test failed!"); }
    if (candidate("(()") !== false) { throw new Exception("Test failed!"); }
    if (candidate("()()(()())())(()") !== false) { throw new Exception("Test failed!"); }
    if (candidate("()()(()())()))()") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// xs represent coefficients of a polynomial.
// xs[0] + xs[1] * x + xs[2] * x^2 + ....
// Return derivative of this polynomial in the same form.
// >>> derivative(array(3, 1, 2, 4, 5))
// array(1, 4, 12, 20)
// >>> derivative(array(1, 2, 3))
// array(2, 6)
function derivative($xs) {

function candidate(...$args) {
    return derivative(...$args);
}

function test(): void {
    if (candidate(array(3, 1, 2, 4, 5)) !== array(1, 4, 12, 20)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3)) !== array(2, 6)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 1)) !== array(2, 2)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 1, 0, 4)) !== array(2, 2, 0, 16)) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== array()) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// The FibFib number sequence is a sequence similar to the Fibbonacci sequnece that's defined as follows:
// fibfib(0) == 0
// fibfib(1) == 0
// fibfib(2) == 1
// fibfib(n) == fibfib(n-1) + fibfib(n-2) + fibfib(n-3).
// Please write a function to efficiently compute the n-th element of the fibfib number sequence.
// >>> fibfib(1)
// 0
// >>> fibfib(5)
// 4
// >>> fibfib(8)
// 24
function fibfib($n) {

function candidate(...$args) {
    return fibfib(...$args);
}

function test(): void {
    if (candidate(2) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(1) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(5) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(8) !== 24) { throw new Exception("Test failed!"); }
    if (candidate(10) !== 81) { throw new Exception("Test failed!"); }
    if (candidate(12) !== 274) { throw new Exception("Test failed!"); }
    if (candidate(14) !== 927) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function vowels_count which takes a string representing
// a word as input and returns the number of vowels in the string.
// Vowels in this case are 'a', 'e', 'i', 'o', 'u'. Here, 'y' is also a
// vowel, but only when it is at the end of the given word.
// Example:
// >>> vowels_count("abcde")
// 2
// >>> vowels_count("ACEDY")
// 3
function vowels_count($s) {

function candidate(...$args) {
    return vowels_count(...$args);
}

function test(): void {
    if (candidate("abcde") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("Alone") !== 3) { throw new Exception("Test failed!"); }
    if (candidate("key") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("bye") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("keY") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("bYe") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("ACEDY") !== 3) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Circular shift the digits of the integer x, shift the digits right by shift
// and return the result as a string.
// If shift > number of digits, return digits reversed.
// >>> circular_shift(12, 1)
// "21"
// >>> circular_shift(12, 2)
// "12"
function circular_shift($x, $shift) {

function candidate(...$args) {
    return circular_shift(...$args);
}

function test(): void {
    if (candidate(100, 2) !== "001") { throw new Exception("Test failed!"); }
    if (candidate(12, 2) !== "12") { throw new Exception("Test failed!"); }
    if (candidate(97, 8) !== "79") { throw new Exception("Test failed!"); }
    if (candidate(12, 1) !== "21") { throw new Exception("Test failed!"); }
    if (candidate(11, 101) !== "11") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Task
// Write a function that takes a string as input and returns the sum of the upper characters only'
// ASCII codes.
// Examples:
// >>> digitSum("")
// 0
// >>> digitSum("abAB")
// 131
// >>> digitSum("abcCd")
// 67
// >>> digitSum("helloE")
// 69
// >>> digitSum("woArBld")
// 131
// >>> digitSum("aAaaaXa")
// 153
function digitSum($s) {

function candidate(...$args) {
    return digitSum(...$args);
}

function test(): void {
    if (candidate("") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("abAB") !== 131) { throw new Exception("Test failed!"); }
    if (candidate("abcCd") !== 67) { throw new Exception("Test failed!"); }
    if (candidate("helloE") !== 69) { throw new Exception("Test failed!"); }
    if (candidate("woArBld") !== 131) { throw new Exception("Test failed!"); }
    if (candidate("aAaaaXa") !== 153) { throw new Exception("Test failed!"); }
    if (candidate(" How are yOu?") !== 151) { throw new Exception("Test failed!"); }
    if (candidate("You arE Very Smart") !== 327) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// In this task, you will be given a string that represents a number of apples and oranges
// that are distributed in a basket of fruit this basket contains
// apples, oranges, and mango fruits. Given the string that represents the total number of
// the oranges and apples and an integer that represent the total number of the fruits
// in the basket return the number of the mango fruits in the basket.
// for examble:
// >>> fruit_distribution("5 apples and 6 oranges", 19)
// 8
// >>> fruit_distribution("0 apples and 1 oranges", 3)
// 2
// >>> fruit_distribution("2 apples and 3 oranges", 100)
// 95
// >>> fruit_distribution("100 apples and 1 oranges", 120)
// 19
function fruit_distribution($s, $n) {

function candidate(...$args) {
    return fruit_distribution(...$args);
}

function test(): void {
    if (candidate("5 apples and 6 oranges", 19) !== 8) { throw new Exception("Test failed!"); }
    if (candidate("5 apples and 6 oranges", 21) !== 10) { throw new Exception("Test failed!"); }
    if (candidate("0 apples and 1 oranges", 3) !== 2) { throw new Exception("Test failed!"); }
    if (candidate("1 apples and 0 oranges", 3) !== 2) { throw new Exception("Test failed!"); }
    if (candidate("2 apples and 3 oranges", 100) !== 95) { throw new Exception("Test failed!"); }
    if (candidate("2 apples and 3 oranges", 5) !== 0) { throw new Exception("Test failed!"); }
    if (candidate("1 apples and 100 oranges", 120) !== 19) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// "Given an array representing a branch of a tree that has non-negative integer nodes
// your task is to pluck one of the nodes and return it.
// The plucked node should be the node with the smallest even value.
// If multiple nodes with the same smallest even value are found return the node that has smallest index.
// The plucked node should be returned in an array, [ smalest_value, its index ],
// If there are no even values or the given array is empty, return [].
// Example 1:
// >>> pluck(array(4, 2, 3))
// array(2, 1)
// Explanation: 2 has the smallest even value, and 2 has the smallest index.
// Example 2:
// >>> pluck(array(1, 2, 3))
// array(2, 1)
// Explanation: 2 has the smallest even value, and 2 has the smallest index.
// Example 3:
// >>> pluck(array())
// array()
// Example 4:
// >>> pluck(array(5, 0, 3, 0, 4, 2))
// array(0, 1)
// Explanation: 0 is the smallest value, but  there are two zeros,
// so we will choose the first zero, which has the smallest index.
// Constraints:
// * 1 <= nodes.length <= 10000
// * 0 <= node.value
function pluck($arr) {

function candidate(...$args) {
    return pluck(...$args);
}

function test(): void {
    if (candidate(array(4, 2, 3)) !== array(2, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3)) !== array(2, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 0, 3, 0, 4, 2)) !== array(0, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 0, 5, 3)) !== array(0, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 4, 8, 4, 8)) !== array(4, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(7, 6, 7, 1)) !== array(6, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(7, 9, 7, 1)) !== array()) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given a non-empty array of positive integers. Return the greatest integer that is greater than
// zero, and has a frequency greater than or equal to the value of the integer itself.
// The frequency of an integer is the number of times it appears in the array.
// If no such a value exist, return -1.
// Examples:
// >>> search(array(4, 1, 2, 2, 3, 1))
// 2
// >>> search(array(1, 2, 2, 3, 3, 3, 4, 4, 4))
// 3
// >>> search(array(5, 5, 4, 4, 4))
// -1
function search($lst) {

function candidate(...$args) {
    return search(...$args);
}

function test(): void {
    if (candidate(array(5, 5, 5, 5, 1)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 1, 4, 1, 4, 4)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 3)) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(array(8, 8, 8, 8, 8, 8, 8, 8)) !== 8) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 3, 3, 2, 2)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 7, 8, 8, 4, 8, 7, 3, 9, 6, 5, 10, 4, 3, 6, 7, 1, 7, 4, 10, 8, 1)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 8, 2)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(6, 7, 1, 8, 8, 10, 5, 8, 5, 3, 10)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(8, 8, 3, 6, 5, 6, 4)) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(array(6, 9, 6, 7, 1, 4, 7, 1, 8, 8, 9, 8, 10, 10, 8, 4, 10, 4, 10, 1, 2, 9, 5, 7, 9)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 9, 10, 1, 3)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(6, 9, 7, 5, 8, 7, 5, 3, 7, 5, 10, 10, 3, 6, 10, 2, 8, 6, 5, 4, 9, 5, 3, 10)) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(8, 8, 10, 6, 4, 3, 5, 8, 2, 4, 2, 8, 4, 6, 10, 4, 2, 1, 10, 2, 1, 1, 5)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 10, 4, 8, 2, 10, 5, 1, 2, 9, 5, 5, 6, 3, 8, 6, 4, 10)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 6, 10, 1, 6, 9, 10, 8, 6, 8, 7, 3)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(9, 2, 4, 1, 5, 1, 5, 2, 5, 7, 7, 7, 3, 10, 1, 5, 4, 2, 8, 4, 1, 9, 10, 7, 10, 2, 8, 10, 9, 4)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 6, 4, 2, 8, 7, 5, 6, 4, 10, 4, 6, 3, 7, 8, 8, 3, 1, 4, 2, 2, 10, 7)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(9, 8, 6, 10, 2, 6, 10, 2, 7, 8, 10, 3, 8, 2, 6, 2, 3, 1)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 5, 3, 9, 5, 6, 3, 2, 8, 5, 6, 10, 10, 6, 8, 4, 10, 7, 7, 10, 8)) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(array(10)) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(array(9, 7, 7, 2, 4, 7, 2, 10, 9, 7, 5, 7, 2)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 4, 10, 2, 1, 1, 10, 3, 6, 1, 8)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(7, 9, 9, 9, 3, 4, 1, 5, 9, 1, 2, 1, 1, 10, 7, 5, 6, 7, 6, 7, 7, 6)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 10, 10, 9, 2)) !== -1) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Input to this function is a string represented multiple groups for nested parentheses separated by spaces.
// For each of the group, output the deepest level of nesting of parentheses.
// E.g. (()()) has maximum two levels of nesting while ((())) has three.
// >>> parse_nested_parens("(()()) ((())) () ((())()())")
// array(2, 3, 1, 3)
function parse_nested_parens($paren_string) {

function candidate(...$args) {
    return parse_nested_parens(...$args);
}

function test(): void {
    if (candidate("(()()) ((())) () ((())()())") !== array(2, 3, 1, 3)) { throw new Exception("Test failed!"); }
    if (candidate("() (()) ((())) (((())))") !== array(1, 2, 3, 4)) { throw new Exception("Test failed!"); }
    if (candidate("(()(())((())))") !== array(4)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given array of integers, return array in strange order.
// Strange sorting, is when you start with the minimum value,
// then maximum of the remaining integers, then minimum and so on.
// Examples:
// >>> strange_sort_list(array(1, 2, 3, 4))
// array(1, 4, 2, 3)
// >>> strange_sort_list(array(5, 5, 5, 5))
// array(5, 5, 5, 5)
// >>> strange_sort_list(array())
// array()
function strange_sort_list($lst) {

function candidate(...$args) {
    return strange_sort_list(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 3, 4)) !== array(1, 4, 2, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 6, 7, 8, 9)) !== array(5, 9, 6, 8, 7)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4, 5)) !== array(1, 5, 2, 4, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 6, 7, 8, 9, 1)) !== array(1, 9, 5, 8, 6, 7)) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 5, 5, 5)) !== array(5, 5, 5, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4, 5, 6, 7, 8)) !== array(1, 8, 2, 7, 3, 6, 4, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 2, 2, 2, 5, 5, -5, -5)) !== array(-5, 5, -5, 5, 0, 2, 2, 2)) { throw new Exception("Test failed!"); }
    if (candidate(array(111111)) !== array(111111)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given the lengths of the three sides of a triangle. Return the area of
// the triangle rounded to 2 decimal points if the three sides form a valid triangle.
// Otherwise return -1
// Three sides make a valid triangle when the sum of any two sides is greater
// than the third side.
// Example:
// >>> triangle_area(3, 4, 5)
// 6.0
// >>> triangle_area(1, 2, 10)
// -1
function triangle_area($a, $b, $c) {

function candidate(...$args) {
    return triangle_area(...$args);
}

function test(): void {
    if (candidate(3, 4, 5) !== 6.0) { throw new Exception("Test failed!"); }
    if (candidate(1, 2, 10) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(4, 8, 5) !== 8.18) { throw new Exception("Test failed!"); }
    if (candidate(2, 2, 2) !== 1.73) { throw new Exception("Test failed!"); }
    if (candidate(1, 2, 3) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(10, 5, 7) !== 16.25) { throw new Exception("Test failed!"); }
    if (candidate(2, 6, 3) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(1, 1, 1) !== 0.43) { throw new Exception("Test failed!"); }
    if (candidate(2, 2, 10) !== -1) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that returns true if the object q will fly, and false otherwise.
// The object q will fly if it's balanced (it is a palindromic array) and the sum of its elements is less than or equal the maximum possible weight w.
// Example:
// >>> will_it_fly(array(1, 2), 5)
// false
// # 1+2 is less than the maximum possible weight, but it's unbalanced.
// >>> will_it_fly(array(3, 2, 3), 1)
// false
// # it's balanced, but 3+2+3 is more than the maximum possible weight.
// >>> will_it_fly(array(3, 2, 3), 9)
// true
// # 3+2+3 is less than the maximum possible weight, and it's balanced.
// >>> will_it_fly(array(3), 5)
// true
// # 3 is less than the maximum possible weight, and it's balanced.
function will_it_fly($q, $w) {

function candidate(...$args) {
    return will_it_fly(...$args);
}

function test(): void {
    if (candidate(array(3, 2, 3), 9) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2), 5) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(3), 5) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 3), 1) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3), 6) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array(5), 5) !== true) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given an array arr of integers, find the minimum number of elements that
// need to be changed to make the array palindromic. A palindromic array is an array that
// is read the same backwards and forwards. In one change, you can change one element to any other element.
// For example:
// >>> smallest_change(array(1, 2, 3, 5, 4, 7, 9, 6))
// 4
// >>> smallest_change(array(1, 2, 3, 4, 3, 2, 2))
// 1
// >>> smallest_change(array(1, 2, 3, 2, 1))
// 0
function smallest_change($arr) {

function candidate(...$args) {
    return smallest_change(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 3, 5, 4, 7, 9, 6)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4, 3, 2, 2)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 4, 2)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 4, 4, 2)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 2, 1)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 1, 1, 3)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 1)) !== 1) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that accepts two arrays of strings and returns the array that has
// total number of chars in the all strings of the array less than the other array.
// if the two arrays have the same number of chars, return the first array.
// Examples
// >>> total_match(array(), array())
// array()
// >>> total_match(array("hi", "admin"), array("hI", "Hi"))
// array("hI", "Hi")
// >>> total_match(array("hi", "admin"), array("hi", "hi", "admin", "project"))
// array("hi", "admin")
// >>> total_match(array("hi", "admin"), array("hI", "hi", "hi"))
// array("hI", "hi", "hi")
// >>> total_match(array("4"), array("1", "2", "3", "4", "5"))
// array("4")
function total_match($lst1, $lst2) {

function candidate(...$args) {
    return total_match(...$args);
}

function test(): void {
    if (candidate(array(), array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("hi", "admin"), array("hi", "hi")) !== array("hi", "hi")) { throw new Exception("Test failed!"); }
    if (candidate(array("hi", "admin"), array("hi", "hi", "admin", "project")) !== array("hi", "admin")) { throw new Exception("Test failed!"); }
    if (candidate(array("4"), array("1", "2", "3", "4", "5")) !== array("4")) { throw new Exception("Test failed!"); }
    if (candidate(array("hi", "admin"), array("hI", "Hi")) !== array("hI", "Hi")) { throw new Exception("Test failed!"); }
    if (candidate(array("hi", "admin"), array("hI", "hi", "hi")) !== array("hI", "hi", "hi")) { throw new Exception("Test failed!"); }
    if (candidate(array("hi", "admin"), array("hI", "hi", "hii")) !== array("hi", "admin")) { throw new Exception("Test failed!"); }
    if (candidate(array(), array("this")) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("this"), array()) !== array()) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that returns true if the given number is the multiplication of 3 prime numbers
// and false otherwise.
// Knowing that (a) is less then 100.
// Example:
// >>> is_multiply_prime(30)
// true
// 30 = 2 * 3 * 5
function is_multiply_prime($a) {

function candidate(...$args) {
    return is_multiply_prime(...$args);
}

function test(): void {
    if (candidate(5) !== false) { throw new Exception("Test failed!"); }
    if (candidate(30) !== true) { throw new Exception("Test failed!"); }
    if (candidate(8) !== true) { throw new Exception("Test failed!"); }
    if (candidate(10) !== false) { throw new Exception("Test failed!"); }
    if (candidate(125) !== true) { throw new Exception("Test failed!"); }
    if (candidate(105) !== true) { throw new Exception("Test failed!"); }
    if (candidate(126) !== false) { throw new Exception("Test failed!"); }
    if (candidate(729) !== false) { throw new Exception("Test failed!"); }
    if (candidate(891) !== false) { throw new Exception("Test failed!"); }
    if (candidate(1001) !== true) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Your task is to write a function that returns true if a number x is a simple
// power of n and false in other cases.
// x is a simple power of n if n**int=x
// For example:
// >>> is_simple_power(1, 4)
// true
// >>> is_simple_power(2, 2)
// true
// >>> is_simple_power(8, 2)
// true
// >>> is_simple_power(3, 2)
// false
// >>> is_simple_power(3, 1)
// false
// >>> is_simple_power(5, 3)
// false
function is_simple_power($x, $n) {

function candidate(...$args) {
    return is_simple_power(...$args);
}

function test(): void {
    if (candidate(16, 2) !== true) { throw new Exception("Test failed!"); }
    if (candidate(143214, 16) !== false) { throw new Exception("Test failed!"); }
    if (candidate(4, 2) !== true) { throw new Exception("Test failed!"); }
    if (candidate(9, 3) !== true) { throw new Exception("Test failed!"); }
    if (candidate(16, 4) !== true) { throw new Exception("Test failed!"); }
    if (candidate(24, 2) !== false) { throw new Exception("Test failed!"); }
    if (candidate(128, 4) !== false) { throw new Exception("Test failed!"); }
    if (candidate(12, 6) !== false) { throw new Exception("Test failed!"); }
    if (candidate(1, 1) !== true) { throw new Exception("Test failed!"); }
    if (candidate(1, 12) !== true) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that takes an integer a and returns true
// if this ingeger is a cube of some integer number.
// Note: you may assume the input is always valid.
// Examples:
// >>> iscube(1)
// true
// >>> iscube(2)
// false
// >>> iscube(-1)
// true
// >>> iscube(64)
// true
// >>> iscube(0)
// true
// >>> iscube(180)
// false
function iscube($a) {

function candidate(...$args) {
    return iscube(...$args);
}

function test(): void {
    if (candidate(1) !== true) { throw new Exception("Test failed!"); }
    if (candidate(2) !== false) { throw new Exception("Test failed!"); }
    if (candidate(-1) !== true) { throw new Exception("Test failed!"); }
    if (candidate(64) !== true) { throw new Exception("Test failed!"); }
    if (candidate(180) !== false) { throw new Exception("Test failed!"); }
    if (candidate(1000) !== true) { throw new Exception("Test failed!"); }
    if (candidate(0) !== true) { throw new Exception("Test failed!"); }
    if (candidate(1729) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You have been tasked to write a function that receives
// a hexadecimal number as a string and counts the number of hexadecimal
// digits that are primes (prime number, or a prime, is a natural number
// greater than 1 that is not a product of two smaller natural numbers).
// Hexadecimal digits are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
// Prime numbers are 2, 3, 5, 7, 11, 13, 17,...
// So you have to determine a number of the following digits: 2, 3, 5, 7,
// B (=decimal 11), D (=decimal 13).
// Note: you may assume the input is always correct or empty string,
// and symbols A,B,C,D,E,F are always uppercase.
// Examples:
// >>> hex_key("AB")
// 1
// >>> hex_key("1077E")
// 2
// >>> hex_key("ABED1A33")
// 4
// >>> hex_key("123456789ABCDEF0")
// 6
// >>> hex_key("2020")
// 2
function hex_key($num) {

function candidate(...$args) {
    return hex_key(...$args);
}

function test(): void {
    if (candidate("AB") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("1077E") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("ABED1A33") !== 4) { throw new Exception("Test failed!"); }
    if (candidate("2020") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("123456789ABCDEF0") !== 6) { throw new Exception("Test failed!"); }
    if (candidate("112233445566778899AABBCCDDEEFF00") !== 12) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You will be given a number in decimal form and your task is to convert it to
// binary format. The function should return a string, with each character representing a binary
// number. Each character in the string will be '0' or '1'.
// There will be an extra couple of characters 'db' at the beginning and at the end of the string.
// The extra characters are there to help with the format.
// Examples:
// >>> decimal_to_binary(15)
// "db1111db"
// >>> decimal_to_binary(32)
// "db100000db"
function decimal_to_binary($decimal) {

function candidate(...$args) {
    return decimal_to_binary(...$args);
}

function test(): void {
    if (candidate(0) !== "db0db") { throw new Exception("Test failed!"); }
    if (candidate(32) !== "db100000db") { throw new Exception("Test failed!"); }
    if (candidate(103) !== "db1100111db") { throw new Exception("Test failed!"); }
    if (candidate(15) !== "db1111db") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Filter an input array of strings only for ones that contain given substring
// >>> filter_by_substring(array(), "a")
// array()
// >>> filter_by_substring(array("abc", "bacd", "cde", "array"), "a")
// array("abc", "bacd", "array")
function filter_by_substring($strings, $substring) {

function candidate(...$args) {
    return filter_by_substring(...$args);
}

function test(): void {
    if (candidate(array(), "john") !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("xxx", "asd", "xxy", "john doe", "xxxAAA", "xxx"), "xxx") !== array("xxx", "xxxAAA", "xxx")) { throw new Exception("Test failed!"); }
    if (candidate(array("xxx", "asd", "aaaxxy", "john doe", "xxxAAA", "xxx"), "xx") !== array("xxx", "aaaxxy", "xxxAAA", "xxx")) { throw new Exception("Test failed!"); }
    if (candidate(array("grunt", "trumpet", "prune", "gruesome"), "run") !== array("grunt", "prune")) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given a string s.
// Your task is to check if the string is happhp or not.
// A string is happhp if its length is at least 3 and every 3 consecutive letters are distinct
// For example:
// >>> is_happy("a")
// false
// >>> is_happy("aa")
// false
// >>> is_happy("abcd")
// true
// >>> is_happy("aabb")
// false
// >>> is_happy("adb")
// true
// >>> is_happy("xyy")
// false
function is_happy($s) {

function candidate(...$args) {
    return is_happy(...$args);
}

function test(): void {
    if (candidate("a") !== false) { throw new Exception("Test failed!"); }
    if (candidate("aa") !== false) { throw new Exception("Test failed!"); }
    if (candidate("abcd") !== true) { throw new Exception("Test failed!"); }
    if (candidate("aabb") !== false) { throw new Exception("Test failed!"); }
    if (candidate("adb") !== true) { throw new Exception("Test failed!"); }
    if (candidate("xyy") !== false) { throw new Exception("Test failed!"); }
    if (candidate("iopaxpoi") !== true) { throw new Exception("Test failed!"); }
    if (candidate("iopaxioi") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// It is the last week of the semester and the teacher has to give the grades
// to students. The teacher has been making her own algorithm for grading.
// The only problem is, she has lost the code she used for grading.
// She has given you an array of GPAs for some students and you have to write
// a function that can output an array of letter grades using the following table:
// GPA       |    Letter grade
// 4.0                A+
// > 3.7                A
// > 3.3                A-
// > 3.0                B+
// > 2.7                B
// > 2.3                B-
// > 2.0                C+
// > 1.7                C
// > 1.3                C-
// > 1.0                D+
// > 0.7                D
// > 0.0                D-
// 0.0                E
// Example:
// >>> grade_equation(array(4.0, 3, 1.7, 2, 3.5))
// array("A+", "B", "C-", "C", "A-")
function numerical_letter_grade($grades) {

function candidate(...$args) {
    return numerical_letter_grade(...$args);
}

function test(): void {
    if (candidate(array(4.0, 3, 1.7, 2, 3.5)) !== array("A+", "B", "C-", "C", "A-")) { throw new Exception("Test failed!"); }
    if (candidate(array(1.2)) !== array("D+")) { throw new Exception("Test failed!"); }
    if (candidate(array(0.5)) !== array("D-")) { throw new Exception("Test failed!"); }
    if (candidate(array(0.0)) !== array("E")) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 0.3, 1.5, 2.8, 3.3)) !== array("D", "D-", "C-", "B", "B+")) { throw new Exception("Test failed!"); }
    if (candidate(array(0.0, 0.7)) !== array("E", "D-")) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that takes a string and returns true if the string
// length is a prime number or false otherwise
// Examples
// >>> prime_length("Hello")
// true
// >>> prime_length("abcdcba")
// true
// >>> prime_length("kittens")
// true
// >>> prime_length("orange")
// false
function prime_length($string) {

function candidate(...$args) {
    return prime_length(...$args);
}

function test(): void {
    if (candidate("Hello") !== true) { throw new Exception("Test failed!"); }
    if (candidate("abcdcba") !== true) { throw new Exception("Test failed!"); }
    if (candidate("kittens") !== true) { throw new Exception("Test failed!"); }
    if (candidate("orange") !== false) { throw new Exception("Test failed!"); }
    if (candidate("wow") !== true) { throw new Exception("Test failed!"); }
    if (candidate("world") !== true) { throw new Exception("Test failed!"); }
    if (candidate("MadaM") !== true) { throw new Exception("Test failed!"); }
    if (candidate("Wow") !== true) { throw new Exception("Test failed!"); }
    if (candidate("") !== false) { throw new Exception("Test failed!"); }
    if (candidate("HI") !== true) { throw new Exception("Test failed!"); }
    if (candidate("go") !== true) { throw new Exception("Test failed!"); }
    if (candidate("gogo") !== false) { throw new Exception("Test failed!"); }
    if (candidate("aaaaaaaaaaaaaaa") !== false) { throw new Exception("Test failed!"); }
    if (candidate("Madam") !== true) { throw new Exception("Test failed!"); }
    if (candidate("M") !== false) { throw new Exception("Test failed!"); }
    if (candidate("0") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a positive integer n, return the count of the numbers of n-digit
// positive integers that start or end with 1.
function starts_one_ends($n) {

function candidate(...$args) {
    return starts_one_ends(...$args);
}

function test(): void {
    if (candidate(1) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(2) !== 18) { throw new Exception("Test failed!"); }
    if (candidate(3) !== 180) { throw new Exception("Test failed!"); }
    if (candidate(4) !== 1800) { throw new Exception("Test failed!"); }
    if (candidate(5) !== 18000) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a positive integer N, return the total sum of its digits in binary.
// Example
// >>> solve(1000)
// "1"
// >>> solve(150)
// "110"
// >>> solve(147)
// "1100"
// Variables:
// @N integer
// Constraints: 0 ≤ N ≤ 10000.
// Output:
// a string of binary number
function solve($N) {

function candidate(...$args) {
    return solve(...$args);
}

function test(): void {
    if (candidate(1000) !== "1") { throw new Exception("Test failed!"); }
    if (candidate(150) !== "110") { throw new Exception("Test failed!"); }
    if (candidate(147) !== "1100") { throw new Exception("Test failed!"); }
    if (candidate(333) !== "1001") { throw new Exception("Test failed!"); }
    if (candidate(963) !== "10010") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a non-empty array of integers lst. add the even elements that are at odd indices..
// Examples:
// >>> add(array(4, 2, 6, 7))
// 2
function add($lst) {

function candidate(...$args) {
    return add(...$args);
}

function test(): void {
    if (candidate(array(4, 88)) !== 88) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 5, 6, 7, 2, 122)) !== 122) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 0, 6, 7)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 4, 6, 8)) !== 12) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that takes a string and returns an ordered version of it.
// Ordered version of string, is a string where all words (separated by space)
// are replaced by a new word where all the characters arranged in
// ascending order based on ascii value.
// Note: You should keep the order of words and blank spaces in the sentence.
// For example:
// >>> anti_shuffle("Hi")
// "Hi"
// >>> anti_shuffle("hello")
// "ehllo"
// >>> anti_shuffle("Hello World!!!")
// "Hello !!!Wdlor"
function anti_shuffle($s) {

function candidate(...$args) {
    return anti_shuffle(...$args);
}

function test(): void {
    if (candidate("Hi") !== "Hi") { throw new Exception("Test failed!"); }
    if (candidate("hello") !== "ehllo") { throw new Exception("Test failed!"); }
    if (candidate("number") !== "bemnru") { throw new Exception("Test failed!"); }
    if (candidate("abcd") !== "abcd") { throw new Exception("Test failed!"); }
    if (candidate("Hello World!!!") !== "Hello !!!Wdlor") { throw new Exception("Test failed!"); }
    if (candidate("") !== "") { throw new Exception("Test failed!"); }
    if (candidate("Hi. My name is Mister Robot. How are you?") !== ".Hi My aemn is Meirst .Rboot How aer ?ouy") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given a 2 dimensional data, as a nested arrays,
// which is similar to matrix, however, unlike matrices,
// each row may contain a different number of columns.
// Given lst, and integer x, find integers x in the array,
// and return array of arrays, [(x1, y1), (x2, y2) ...] such that
// each array is a coordinate - (row, columns), starting with 0.
// Sort coordinates initially by rows in ascending order.
// Also, sort coordinates of the row by columns in descending order.
// Examples:
// >>> get_row(array(array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 1, 6), array(1, 2, 3, 4, 5, 1)), 1)
// array(array(0, 0), array(1, 4), array(1, 0), array(2, 5), array(2, 0))
// >>> get_row(array(), 1)
// array()
// >>> get_row(array(array(), array(1), array(1, 2, 3)), 3)
// array(array(2, 2))
function get_row($lst, $x) {

function candidate(...$args) {
    return get_row(...$args);
}

function test(): void {
    if (candidate(array(array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 1, 6), array(1, 2, 3, 4, 5, 1)), 1) !== array(array(0, 0), array(1, 4), array(1, 0), array(2, 5), array(2, 0))) { throw new Exception("Test failed!"); }
    if (candidate(array(array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6)), 2) !== array(array(0, 1), array(1, 1), array(2, 1), array(3, 1), array(4, 1), array(5, 1))) { throw new Exception("Test failed!"); }
    if (candidate(array(array(1, 2, 3, 4, 5, 6), array(1, 2, 3, 4, 5, 6), array(1, 1, 3, 4, 5, 6), array(1, 2, 1, 4, 5, 6), array(1, 2, 3, 1, 5, 6), array(1, 2, 3, 4, 1, 6), array(1, 2, 3, 4, 5, 1)), 1) !== array(array(0, 0), array(1, 0), array(2, 1), array(2, 0), array(3, 2), array(3, 0), array(4, 3), array(4, 0), array(5, 4), array(5, 0), array(6, 5), array(6, 0))) { throw new Exception("Test failed!"); }
    if (candidate(array(), 1) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(array(1)), 2) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(array(), array(1), array(1, 2, 3)), 3) !== array(array(2, 2))) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given an array of non-negative integers, return a cophp of the given array after sorting,
// you will sort the given array in ascending order if the sum( first index value, last index value) is odd,
// or sort it in descending order if the sum( first index value, last index value) is even.
// Note:
// * don't change the given array.
// Examples:
// >>> sort_array(array())
// array()
// >>> sort_array(array(5))
// array(5)
// >>> sort_array(array(2, 4, 3, 0, 1, 5))
// array(0, 1, 2, 3, 4, 5)
// >>> sort_array(array(2, 4, 3, 0, 1, 5, 6))
// array(6, 5, 4, 3, 2, 1, 0)
function sort_array($array) {

function candidate(...$args) {
    return sort_array(...$args);
}

function test(): void {
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(5)) !== array(5)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, 3, 0, 1, 5)) !== array(0, 1, 2, 3, 4, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, 3, 0, 1, 5, 6)) !== array(6, 5, 4, 3, 2, 1, 0)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 1)) !== array(1, 2)) { throw new Exception("Test failed!"); }
    if (candidate(array(15, 42, 87, 32, 11, 0)) !== array(0, 11, 15, 32, 42, 87)) { throw new Exception("Test failed!"); }
    if (candidate(array(21, 14, 23, 11)) !== array(23, 21, 14, 11)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function encrypt that takes a string as an argument and
// returns a string encrypted with the alphabet being rotated.
// The alphabet should be rotated in a manner such that the letters
// shift down by two multiplied to two places.
// For example:
// >>> encrypt("hi")
// "lm"
// >>> encrypt("asdfghjkl")
// "ewhjklnop"
// >>> encrypt("gf")
// "kj"
// >>> encrypt("et")
// "ix"
function encrypt($s) {

function candidate(...$args) {
    return encrypt(...$args);
}

function test(): void {
    if (candidate("hi") !== "lm") { throw new Exception("Test failed!"); }
    if (candidate("asdfghjkl") !== "ewhjklnop") { throw new Exception("Test failed!"); }
    if (candidate("gf") !== "kj") { throw new Exception("Test failed!"); }
    if (candidate("et") !== "ix") { throw new Exception("Test failed!"); }
    if (candidate("faewfawefaewg") !== "jeiajeaijeiak") { throw new Exception("Test failed!"); }
    if (candidate("hellomyfriend") !== "lippsqcjvmirh") { throw new Exception("Test failed!"); }
    if (candidate("dxzdlmnilfuhmilufhlihufnmlimnufhlimnufhfucufh") !== "hbdhpqrmpjylqmpyjlpmlyjrqpmqryjlpmqryjljygyjl") { throw new Exception("Test failed!"); }
    if (candidate("a") !== "e") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// For a given array of integers, return an array consisting of a sum and a product of all the integers in an array.
// Empty sum should be equal to 0 and empty product should be equal to 1.
// >>> sum_product(array())
// array(0, 1)
// >>> sum_product(array(1, 2, 3, 4))
// array(10, 24)
function sum_product($numbers) {

function candidate(...$args) {
    return sum_product(...$args);
}

function test(): void {
    if (candidate(array()) !== array(0, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1, 1)) !== array(3, 1)) { throw new Exception("Test failed!"); }
    if (candidate(array(100, 0)) !== array(100, 0)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 5, 7)) !== array(15, 105)) { throw new Exception("Test failed!"); }
    if (candidate(array(10)) !== array(10, 10)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given an array of integers.
// Write a function next_smallest() that returns the 2nd smallest element of the array.
// Return null if there is no such element.
// >>> next_smallest(array(1, 2, 3, 4, 5))
// 2
// >>> next_smallest(array(5, 1, 4, 3, 2))
// 2
// >>> next_smallest(array())
// null
// >>> next_smallest(array(1, 1))
// null
function next_smallest($lst) {

function candidate(...$args) {
    return next_smallest(...$args);
}

function test(): void {
    if (candidate(array(1, 2, 3, 4, 5)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(5, 1, 4, 3, 2)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== null) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1)) !== null) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1, 1, 1, 0)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1)) !== null) { throw new Exception("Test failed!"); }
    if (candidate(array(-35, 34, 12, -45)) !== -35) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You'll be given a string of words, and your task is to count the number
// of boredoms. A boredom is a sentence that starts with the word "I".
// Sentences are delimited by '.', '?' or '!'.
// For example:
// >>> is_bored("Hello world")
// 0
// >>> is_bored("The sky is blue. The sun is shining. I love this weather")
// 1
function is_bored($S) {

function candidate(...$args) {
    return is_bored(...$args);
}

function test(): void {
    if (candidate("Hello world") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("Is the sky blue?") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("I love It !") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("bIt") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("I feel good today. I will be productive. will kill It") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("You and I are going for a walk") !== 0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function that takes 3 numbers.
// Returns true if one of the numbers is equal to the sum of the other two, and all numbers are integers.
// Returns false in any other cases.
// Examples
// >>> any_int(5, 2, 7)
// true
// >>> any_int(3, 2, 2)
// false
// >>> any_int(3, -2, 1)
// true
// >>> any_int(3.6, -2.2, 2)
// false
function any_int($x, $y, $z) {

function candidate(...$args) {
    return any_int(...$args);
}

function test(): void {
    if (candidate(2, 3, 1) !== true) { throw new Exception("Test failed!"); }
    if (candidate(2.5, 2, 3) !== false) { throw new Exception("Test failed!"); }
    if (candidate(1.5, 5, 3.5) !== false) { throw new Exception("Test failed!"); }
    if (candidate(2, 6, 2) !== false) { throw new Exception("Test failed!"); }
    if (candidate(4, 2, 2) !== true) { throw new Exception("Test failed!"); }
    if (candidate(2.2, 2.2, 2.2) !== false) { throw new Exception("Test failed!"); }
    if (candidate(-4, 6, 2) !== true) { throw new Exception("Test failed!"); }
    if (candidate(2, 1, 1) !== true) { throw new Exception("Test failed!"); }
    if (candidate(3, 4, 7) !== true) { throw new Exception("Test failed!"); }
    if (candidate(3.0, 4, 7) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function that takes a message, and encodes in such a
// way that it swaps case of all letters, replaces all vowels in
// the message with the letter that appears 2 places ahead of that
// vowel in the english alphabet.
// Assume only letters.
// Examples:
// >>> encode("test")
// "TGST"
// >>> encode("This is a message")
// "tHKS KS C MGSSCGG"
function encode($message) {

function candidate(...$args) {
    return encode(...$args);
}

function test(): void {
    if (candidate("TEST") !== "tgst") { throw new Exception("Test failed!"); }
    if (candidate("Mudasir") !== "mWDCSKR") { throw new Exception("Test failed!"); }
    if (candidate("YES") !== "ygs") { throw new Exception("Test failed!"); }
    if (candidate("This is a message") !== "tHKS KS C MGSSCGG") { throw new Exception("Test failed!"); }
    if (candidate("I DoNt KnOw WhAt tO WrItE") !== "k dQnT kNqW wHcT Tq wRkTg") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given an array of integers.
// You need to find the largest prime value and return the sum of its digits.
// Examples:
// >>> skjkasdkd(array(0, 3, 2, 1, 3, 5, 7, 4, 5, 5, 5, 2, 181, 32, 4, 32, 3, 2, 32, 324, 4, 3))
// 10
// >>> skjkasdkd(array(1, 0, 1, 8, 2, 4597, 2, 1, 3, 40, 1, 2, 1, 2, 4, 2, 5, 1))
// 25
// >>> skjkasdkd(array(1, 3, 1, 32, 5107, 34, 83278, 109, 163, 23, 2323, 32, 30, 1, 9, 3))
// 13
// >>> skjkasdkd(array(0, 724, 32, 71, 99, 32, 6, 0, 5, 91, 83, 0, 5, 6))
// 11
// >>> skjkasdkd(array(0, 81, 12, 3, 1, 21))
// 3
// >>> skjkasdkd(array(0, 8, 1, 2, 1, 7))
// 7
function skjkasdkd($lst) {

function candidate(...$args) {
    return skjkasdkd(...$args);
}

function test(): void {
    if (candidate(array(0, 3, 2, 1, 3, 5, 7, 4, 5, 5, 5, 2, 181, 32, 4, 32, 3, 2, 32, 324, 4, 3)) !== 10) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 0, 1, 8, 2, 4597, 2, 1, 3, 40, 1, 2, 1, 2, 4, 2, 5, 1)) !== 25) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 3, 1, 32, 5107, 34, 83278, 109, 163, 23, 2323, 32, 30, 1, 9, 3)) !== 13) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 724, 32, 71, 99, 32, 6, 0, 5, 91, 83, 0, 5, 6)) !== 11) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 81, 12, 3, 1, 21)) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 8, 1, 2, 1, 7)) !== 7) { throw new Exception("Test failed!"); }
    if (candidate(array(8191)) !== 19) { throw new Exception("Test failed!"); }
    if (candidate(array(8191, 123456, 127, 7)) !== 19) { throw new Exception("Test failed!"); }
    if (candidate(array(127, 97, 8192)) !== 10) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given an array, return true if all keys are strings in lower
// case or all keys are strings in upper case, else return false.
// The function should return false is the given array is empty.
// Examples:
// >>> check_dict_case(array("a" => "apple", "b" => "banana"))
// true
// >>> check_dict_case(array("a" => "apple", "A" => "banana", "B" => "banana"))
// false
// >>> check_dict_case(array("a" => "apple", 8 => "banana", "a" => "apple"))
// false
// >>> check_dict_case(array("Name" => "John", "Age" => "36", "City" => "Houston"))
// false
// >>> check_dict_case(array("STATE" => "NC", "ZIP" => "12345"))
// true
function check_dict_case($dict) {

function candidate(...$args) {
    return check_dict_case(...$args);
}

function test(): void {
    if (candidate(array("p" => "pineapple", "b" => "banana")) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array("p" => "pineapple", "A" => "banana", "B" => "banana")) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array("p" => "pineapple", "5" => "banana", "a" => "apple")) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array("Name" => "John", "Age" => "36", "City" => "Houston")) !== false) { throw new Exception("Test failed!"); }
    if (candidate(array("STATE" => "NC", "ZIP" => "12345")) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array("fruit" => "Orange", "taste" => "Sweet")) !== true) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Implement a function that takes an non-negative integer and returns an array of the first n
// integers that are prime numbers and less than n.
// for example:
// >>> count_up_to(5)
// array(2, 3)
// >>> count_up_to(11)
// array(2, 3, 5, 7)
// >>> count_up_to(0)
// array()
// >>> count_up_to(20)
// array(2, 3, 5, 7, 11, 13, 17, 19)
// >>> count_up_to(1)
// array()
// >>> count_up_to(18)
// array(2, 3, 5, 7, 11, 13, 17)
function count_up_to($n) {

function candidate(...$args) {
    return count_up_to(...$args);
}

function test(): void {
    if (candidate(5) !== array(2, 3)) { throw new Exception("Test failed!"); }
    if (candidate(6) !== array(2, 3, 5)) { throw new Exception("Test failed!"); }
    if (candidate(7) !== array(2, 3, 5)) { throw new Exception("Test failed!"); }
    if (candidate(10) !== array(2, 3, 5, 7)) { throw new Exception("Test failed!"); }
    if (candidate(0) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(22) !== array(2, 3, 5, 7, 11, 13, 17, 19)) { throw new Exception("Test failed!"); }
    if (candidate(1) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(18) !== array(2, 3, 5, 7, 11, 13, 17)) { throw new Exception("Test failed!"); }
    if (candidate(47) !== array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43)) { throw new Exception("Test failed!"); }
    if (candidate(101) !== array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Complete the function that takes two integers and returns
// the product of their unit digits.
// Assume the input is always valid.
// Examples:
// >>> multiply(148, 412)
// 16
// >>> multiply(19, 28)
// 72
// >>> multiply(2020, 1851)
// 0
// >>> multiply(14, -15)
// 20
function multiply($a, $b) {

function candidate(...$args) {
    return multiply(...$args);
}

function test(): void {
    if (candidate(148, 412) !== 16) { throw new Exception("Test failed!"); }
    if (candidate(19, 28) !== 72) { throw new Exception("Test failed!"); }
    if (candidate(2020, 1851) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(14, -15) !== 20) { throw new Exception("Test failed!"); }
    if (candidate(76, 67) !== 42) { throw new Exception("Test failed!"); }
    if (candidate(17, 27) !== 49) { throw new Exception("Test failed!"); }
    if (candidate(0, 1) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(0, 0) !== 0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a string s, count the number of uppercase vowels in even indices.
// For example:
// >>> count_upper("aBCdEf")
// 1
// >>> count_upper("abcdefg")
// 0
// >>> count_upper("dBBE")
// 0
function count_upper($s) {

function candidate(...$args) {
    return count_upper(...$args);
}

function test(): void {
    if (candidate("aBCdEf") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("abcdefg") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("dBBE") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("B") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("U") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("EEEE") !== 2) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function that takes a value (string) representing a number
// and returns the closest integer to it. If the number is equidistant
// from two integers, round it away from zero.
// Examples
// >>> closest_integer("10")
// 10
// >>> closest_integer("15.3")
// 15
// Note:
// Rounding away from zero means that if the given number is equidistant
// from two integers, the one you should return is the one that is the
// farthest from zero. For example closest_integer("14.5") should
// return 15 and closest_integer("-14.5") should return -15.
function closest_integer($value) {

function candidate(...$args) {
    return closest_integer(...$args);
}

function test(): void {
    if (candidate("10") !== 10) { throw new Exception("Test failed!"); }
    if (candidate("14.5") !== 15) { throw new Exception("Test failed!"); }
    if (candidate("-15.5") !== -16) { throw new Exception("Test failed!"); }
    if (candidate("15.3") !== 15) { throw new Exception("Test failed!"); }
    if (candidate("0") !== 0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// From a given array of integers, generate an array of rolling maximum element found until given moment
// in the sequence.
// >>> rolling_max(array(1, 2, 3, 2, 3, 4, 2))
// array(1, 2, 3, 3, 3, 4, 4)
function rolling_max($numbers) {

function candidate(...$args) {
    return rolling_max(...$args);
}

function test(): void {
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 4)) !== array(1, 2, 3, 4)) { throw new Exception("Test failed!"); }
    if (candidate(array(4, 3, 2, 1)) !== array(4, 4, 4, 4)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 2, 3, 100, 3)) !== array(3, 3, 3, 100, 100)) { throw new Exception("Test failed!"); }
}

test();