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
// You are given an array of numbers.
// You need to return the sum of squared numbers in the given array,
// round each element in the array to the upper int(Ceiling) first.
// Examples:
// >>> lst(array(1.0, 2.0, 3.0))
// 14
// >>> lst(array(1.0, 4.0, 9.0))
// 98
// >>> lst(array(1.0, 3.0, 5.0, 7.0))
// 84
// >>> lst(array(1.4, 4.2, 0.0))
// 29
// >>> lst(array(-2.4, 1.0, 1.0))
// 6
function sum_squares($lst) {

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

function test(): void {
    if (candidate(array(1.0, 2.0, 3.0)) !== 14) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 2.0, 3.0)) !== 14) { throw new Exception("Test failed!"); }
    if (candidate(array(1.0, 3.0, 5.0, 7.0)) !== 84) { throw new Exception("Test failed!"); }
    if (candidate(array(1.4, 4.2, 0.0)) !== 29) { throw new Exception("Test failed!"); }
    if (candidate(array(-2.4, 1.0, 1.0)) !== 6) { throw new Exception("Test failed!"); }
    if (candidate(array(100.0, 1.0, 15.0, 2.0)) !== 10230) { throw new Exception("Test failed!"); }
    if (candidate(array(10000.0, 10000.0)) !== 200000000) { throw new Exception("Test failed!"); }
    if (candidate(array(-1.4, 4.6, 6.3)) !== 75) { throw new Exception("Test failed!"); }
    if (candidate(array(-1.4, 17.9, 18.9, 19.9)) !== 1086) { throw new Exception("Test failed!"); }
    if (candidate(array(0.0)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(-1.0)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(-1.0, 1.0, 0.0)) !== 2) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function which takes a string representing a file's name, and returns
// 'Yes' if the the file's name is valid, and returns 'No' otherwise.
// A file's name is considered to be valid if and only if all the following conditions
// are met:
// - There should not be more than three digits ('0'-'9') in the file's name.
// - The file's name contains exactly one dot '.'
// - The substring before the dot should not be empty, and it starts with a letter from
// the latin alphapet ('a'-'z' and 'A'-'Z').
// - The substring after the dot should be one of these: ['txt', 'exe', 'dll']
// Examples:
// >>> file_name_check("example.txt")
// "Yes"
// >>> file_name_check("1example.dll")
// "No"
function file_name_check($file_name) {

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

function test(): void {
    if (candidate("example.txt") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("1example.dll") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("s1sdf3.asd") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("K.dll") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("MY16FILE3.exe") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("His12FILE94.exe") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("_Y.txt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("?aREYA.exe") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("/this_is_valid.dll") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("this_is_valid.wow") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("this_is_valid.txt") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("this_is_valid.txtexe") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("#this2_i4s_5valid.ten") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("@this1_is6_valid.exe") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("this_is_12valid.6exe4.txt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("all.exe.txt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("I563_No.exe") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("Is3youfault.txt") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("no_one#knows.dll") !== "Yes") { throw new Exception("Test failed!"); }
    if (candidate("1I563_Yes3.exe") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("I563_Yes3.txtt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("final..txt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("final132") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("_f4indsartal132.") !== "No") { throw new Exception("Test failed!"); }
    if (candidate(".txt") !== "No") { throw new Exception("Test failed!"); }
    if (candidate("s.") !== "No") { 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
// You are given two intervals,
// where each interval is a pair of integers. For example, interval = (start, end) = (1, 2).
// The given intervals are closed which means that the interval (start, end)
// includes both start and end.
// For each given interval, it is assumed that its start is less or equal its end.
// Your task is to determine whether the length of intersection of these two
// intervals is a prime number.
// Example, the intersection of the intervals (1, 3), (2, 4) is (2, 3)
// which its length is 1, which not a prime number.
// If the length of the intersection is a prime number, return "YES",
// otherwise, return "NO".
// If the two intervals don't intersect, return "NO".
// [input/output] samples:
// >>> intersection(array(1, 2), array(2, 3))
// "NO"
// >>> intersection(array(-1, 1), array(0, 4))
// "NO"
// >>> intersection(array(-3, -1), array(-5, 5))
// "YES"
function intersection($interval1, $interval2) {

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

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

test();


Prompt:
<?php
// Input to this function is a string containing multiple groups of nested parentheses. Your goal is to
// separate those group into separate strings and return the array of those.
// Separate groups are balanced (each open brace is properly closed) and not nested within each other
// Ignore any spaces in the input string.
// >>> separate_paren_groups("( ) (( )) (( )( ))")
// array("()", "(())", "(()())")
function separate_paren_groups($paren_string) {


Prompt:
<?php
// I think we all remember that feeling when the result of some long-awaited
// event is finally known. The feelings and thoughts you have at that moment are
// definitely worth noting down and comparing.
// Your task is to determine if a person correctly guessed the results of a number of matches.
// You are given two arrays of scores and guesses of equal length, where each index shows a match.
// Return an array of the same length denoting how far off each guess was. If they have guessed correctly,
// the value is 0, and if not, the value is the absolute difference between the guess and the score.
// example:
// >>> compare(array(1, 2, 3, 4, 5, 1), array(1, 2, 3, 4, 2, -2))
// array(0, 0, 0, 0, 3, 3)
// >>> compare(array(0, 5, 0, 0, 0, 4), array(4, 1, 1, 0, 0, -2))
// array(4, 4, 1, 0, 0, 6)
function compare($game, $guess) {

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

function test(): void {
    if (candidate(array(1, 2, 3, 4, 5, 1), array(1, 2, 3, 4, 2, -2)) !== array(0, 0, 0, 0, 3, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 0, 0, 0, 0, 0), array(0, 0, 0, 0, 0, 0)) !== array(0, 0, 0, 0, 0, 0)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3), array(-1, -2, -3)) !== array(2, 4, 6)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 2, 3, 5), array(-1, 2, 3, 4)) !== array(2, 0, 0, 1)) { 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
// Create a function that returns true if the last character
// of a given string is an alphabetical character and is not
// a part of a word, and false otherwise.
// Note: "word" is a group of characters separated by space.
// Examples:
// >>> check_if_last_char_is_a_letter("apple pie")
// false
// >>> check_if_last_char_is_a_letter("apple pi e")
// true
// >>> check_if_last_char_is_a_letter("apple pi e ")
// false
// >>> check_if_last_char_is_a_letter("")
// false
function check_if_last_char_is_a_letter($txt) {

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

function test(): void {
    if (candidate("apple") !== false) { throw new Exception("Test failed!"); }
    if (candidate("apple pi e") !== true) { throw new Exception("Test failed!"); }
    if (candidate("eeeee") !== false) { throw new Exception("Test failed!"); }
    if (candidate("A") !== true) { throw new Exception("Test failed!"); }
    if (candidate("Pumpkin pie ") !== false) { throw new Exception("Test failed!"); }
    if (candidate("Pumpkin pie 1") !== false) { throw new Exception("Test failed!"); }
    if (candidate("") !== false) { throw new Exception("Test failed!"); }
    if (candidate("eeeee e ") !== false) { throw new Exception("Test failed!"); }
    if (candidate("apple pie") !== false) { throw new Exception("Test failed!"); }
    if (candidate("apple pi e ") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You have to write a function which validates a given date string and
// returns true if the date is valid otherwise false.
// The date is valid if all of the following rules are satisfied:
// 1. The date string is not empty.
// 2. The number of days is not less than 1 or higher than 31 days for months 1,3,5,7,8,10,12. And the number of days is not less than 1 or higher than 30 days for months 4,6,9,11. And, the number of days is not less than 1 or higher than 29 for the month 2.
// 3. The months should not be less than 1 or higher than 12.
// 4. The date should be in the format: mm-dd-yyyy
// >>> valid_date("03-11-2000")
// true
// >>> valid_date("15-01-2012")
// false
// >>> valid_date("04-0-2040")
// false
// >>> valid_date("06-04-2020")
// true
// >>> valid_date("06/04/2020")
// false
function valid_date($date) {

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

function test(): void {
    if (candidate("03-11-2000") !== true) { throw new Exception("Test failed!"); }
    if (candidate("15-01-2012") !== false) { throw new Exception("Test failed!"); }
    if (candidate("04-0-2040") !== false) { throw new Exception("Test failed!"); }
    if (candidate("06-04-2020") !== true) { throw new Exception("Test failed!"); }
    if (candidate("01-01-2007") !== true) { throw new Exception("Test failed!"); }
    if (candidate("03-32-2011") !== false) { throw new Exception("Test failed!"); }
    if (candidate("") !== false) { throw new Exception("Test failed!"); }
    if (candidate("04-31-3000") !== false) { throw new Exception("Test failed!"); }
    if (candidate("06-06-2005") !== true) { throw new Exception("Test failed!"); }
    if (candidate("21-31-2000") !== false) { throw new Exception("Test failed!"); }
    if (candidate("04-12-2003") !== true) { throw new Exception("Test failed!"); }
    if (candidate("04122003") !== false) { throw new Exception("Test failed!"); }
    if (candidate("20030412") !== false) { throw new Exception("Test failed!"); }
    if (candidate("2003-04") !== false) { throw new Exception("Test failed!"); }
    if (candidate("2003-04-12") !== false) { throw new Exception("Test failed!"); }
    if (candidate("04-2003") !== false) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Write a function count_nums which takes an array of integers and returns
// the number of elements which has a sum of digits > 0.
// If a number is negative, then its first signed digit will be negative:
// e.g. -123 has signed digits -1, 2, and 3.
// >>> count_nums(array())
// 0
// >>> count_nums(array(-1, 11, -11))
// 1
// >>> count_nums(array(1, 1, 2))
// 3
function count_nums($arr) {

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

function test(): void {
    if (candidate(array()) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -2, 0)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1, 2, -2, 3, 4, 5)) !== 6) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 6, 9, -6, 0, 1, 5)) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 100, 98, -7, 1, -1)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(12, 23, 34, -45, -56, 0)) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 1)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== 1) { 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
// 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
// You are given a word. Your task is to find the closest vowel that stands between
// two consonants from the right side of the word (case sensitive).
// Vowels in the beginning and ending doesn't count. Return empty string if you didn't
// find any vowel met the above condition.
// You may assume that the given string contains English letter only.
// Example:
// >>> get_closest_vowel("yogurt")
// "u"
// >>> get_closest_vowel("FULL")
// "U"
// >>> get_closest_vowel("quick")
// ""
// >>> get_closest_vowel("ab")
// ""
function get_closest_vowel($word) {

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

function test(): void {
    if (candidate("yogurt") !== "u") { throw new Exception("Test failed!"); }
    if (candidate("full") !== "u") { throw new Exception("Test failed!"); }
    if (candidate("easy") !== "") { throw new Exception("Test failed!"); }
    if (candidate("eAsy") !== "") { throw new Exception("Test failed!"); }
    if (candidate("ali") !== "") { throw new Exception("Test failed!"); }
    if (candidate("bad") !== "a") { throw new Exception("Test failed!"); }
    if (candidate("most") !== "o") { throw new Exception("Test failed!"); }
    if (candidate("ab") !== "") { throw new Exception("Test failed!"); }
    if (candidate("ba") !== "") { throw new Exception("Test failed!"); }
    if (candidate("quick") !== "") { throw new Exception("Test failed!"); }
    if (candidate("anime") !== "i") { throw new Exception("Test failed!"); }
    if (candidate("Asia") !== "") { throw new Exception("Test failed!"); }
    if (candidate("Above") !== "o") { 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
// Your task is to implement a function that will simplify the expression
// x * n. The function returns true if x * n evaluates to a whole number and false
// otherwise. Both x and n, are string representation of a fraction, and have the following format,
// <numerator>/<denominator> where both numerator and denominator are positive whole numbers.
// You can assume that x, and n are valid fractions, and do not have zero as denominator.
// >>> simplify("1/5", "5/1")
// true
// >>> simplify("1/6", "2/1")
// false
// >>> simplify("7/10", "10/2")
// false
function simplify($x, $n) {

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

function test(): void {
    if (candidate("1/5", "5/1") !== true) { throw new Exception("Test failed!"); }
    if (candidate("1/6", "2/1") !== false) { throw new Exception("Test failed!"); }
    if (candidate("5/1", "3/1") !== true) { throw new Exception("Test failed!"); }
    if (candidate("7/10", "10/2") !== false) { throw new Exception("Test failed!"); }
    if (candidate("2/10", "50/10") !== true) { throw new Exception("Test failed!"); }
    if (candidate("7/2", "4/2") !== true) { throw new Exception("Test failed!"); }
    if (candidate("11/6", "6/1") !== true) { throw new Exception("Test failed!"); }
    if (candidate("2/3", "5/2") !== false) { throw new Exception("Test failed!"); }
    if (candidate("5/2", "3/5") !== false) { throw new Exception("Test failed!"); }
    if (candidate("2/4", "8/4") !== true) { throw new Exception("Test failed!"); }
    if (candidate("2/4", "4/2") !== true) { throw new Exception("Test failed!"); }
    if (candidate("1/5", "5/1") !== true) { throw new Exception("Test failed!"); }
    if (candidate("1/5", "1/5") !== 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 are given a string representing a sentence,
// the sentence contains some words separated by a space,
// and you have to return a string that contains the words from the original sentence,
// whose lengths are prime numbers,
// the order of the words in the new string should be the same as the original one.
// Example 1:
// >>> words_in_sentence("This is a test")
// "is"
// Example 2:
// >>> words_in_sentence("lets go for swimming")
// "go for"
// Constraints:
// * 1 <= len(sentence) <= 100
// * sentence contains only letters
function words_in_sentence($sentence) {

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

function test(): void {
    if (candidate("This is a test") !== "is") { throw new Exception("Test failed!"); }
    if (candidate("lets go for swimming") !== "go for") { throw new Exception("Test failed!"); }
    if (candidate("there is no place available here") !== "there is no place") { throw new Exception("Test failed!"); }
    if (candidate("Hi I am Hussein") !== "Hi am Hussein") { throw new Exception("Test failed!"); }
    if (candidate("go for it") !== "go for it") { throw new Exception("Test failed!"); }
    if (candidate("here") !== "") { throw new Exception("Test failed!"); }
    if (candidate("here is") !== "is") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a string representing a space separated lowercase letters, return an array
// of the letter with the most repetition and containing the corresponding count.
// If several letters have the same occurrence, return all of them.
// Example:
// >>> histogram("a b c")
// array("a" => 1, "b" => 1, "c" => 1)
// >>> histogram("a b b a")
// array("a" => 2, "b" => 2)
// >>> histogram("a b c a b")
// array("a" => 2, "b" => 2)
// >>> histogram("b b b b a")
// array("b" => 4)
// >>> histogram("")
// array()
function histogram($test) {

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

function test(): void {
    if (candidate("a b b a") !== array("a" => 2, "b" => 2)) { throw new Exception("Test failed!"); }
    if (candidate("a b c a b") !== array("a" => 2, "b" => 2)) { throw new Exception("Test failed!"); }
    if (candidate("a b c d g") !== array("a" => 1, "b" => 1, "c" => 1, "d" => 1, "g" => 1)) { throw new Exception("Test failed!"); }
    if (candidate("r t g") !== array("r" => 1, "t" => 1, "g" => 1)) { throw new Exception("Test failed!"); }
    if (candidate("b b b b a") !== array("b" => 4)) { throw new Exception("Test failed!"); }
    if (candidate("r t g") !== array("r" => 1, "t" => 1, "g" => 1)) { throw new Exception("Test failed!"); }
    if (candidate("") !== array()) { throw new Exception("Test failed!"); }
    if (candidate("a") !== array("a" => 1)) { 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 a positive integer n, return a sorted array that has the odd numbers in collatz sequence.
// The Collatz conjecture is a conjecture in mathematics that concerns a sequence defined
// as follows: start with any positive integer n. Then each term is obtained from the
// previous term as follows: if the previous term is even, the next term is one half of
// the previous term. If the previous term is odd, the next term is 3 times the previous
// term plus 1. The conjecture is that no matter what value of n, the sequence will always reach 1.
// Note:
// 1. Collatz(1) is [1].
// 2. returned array sorted in increasing order.
// For example:
// get_odd_collatz(5) returns [1, 5] # The collatz sequence for 5 is [5, 16, 8, 4, 2, 1], so the odd numbers are only 1, and 5.
// >>> get_odd_collatz(5)
// array(1, 5)
function get_odd_collatz($n) {

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

function test(): void {
    if (candidate(14) !== array(1, 5, 7, 11, 13, 17)) { throw new Exception("Test failed!"); }
    if (candidate(5) !== array(1, 5)) { throw new Exception("Test failed!"); }
    if (candidate(12) !== array(1, 3, 5)) { throw new Exception("Test failed!"); }
    if (candidate(1) !== array(1)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function which returns the largest index of an element which
// is not greater than or equal to the element immediately preceding it. If
// no such element exists then return -1. The given array will not contain
// duplicate values.
// Examples:
// >>> can_arrange(array(1, 2, 4, 3, 5))
// 3
// >>> can_arrange(array(1, 2, 3))
// -1
function can_arrange($arr) {

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

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

test();


Prompt:
<?php
// Input is a space-delimited string of numberals from 'zero' to 'nine'.
// Valid choices are 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight' and 'nine'.
// Return the string with numbers sorted from smallest to largest
// >>> sort_numbers("three one five")
// "one three five"
function sort_numbers($numbers) {

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

function test(): void {
    if (candidate("") !== "") { throw new Exception("Test failed!"); }
    if (candidate("three") !== "three") { throw new Exception("Test failed!"); }
    if (candidate("three five nine") !== "three five nine") { throw new Exception("Test failed!"); }
    if (candidate("five zero four seven nine eight") !== "zero four five seven eight nine") { throw new Exception("Test failed!"); }
    if (candidate("six five four three two one zero") !== "zero one two three four five six") { 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
// "
// This function will take an array of integers. For all entries in the array, the function shall square the integer entry if its index is a
// multiple of 3 and will cube the integer entry if its index is a multiple of 4 and not a multiple of 3. The function will not
// change the entries in the array whose indexes are not a multiple of 3 or 4. The function shall then return the sum of all entries.
// Examples:
// >>> lst
// array(1, 2, 3)
// >>> lst
// array()
// >>> lst
// array(-1, -5, 2, -1, -5)
function sum_squares($lst) {

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

function test(): void {
    if (candidate(array(1, 2, 3)) !== 6) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 4, 9)) !== 14) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 1, 1, 1, 1, 1, 1, 1, 1)) !== 9) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -1, -1, -1, -1, -1, -1, -1, -1)) !== -3) { throw new Exception("Test failed!"); }
    if (candidate(array(0)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -5, 2, -1, -5)) !== -126) { throw new Exception("Test failed!"); }
    if (candidate(array(-56, -99, 1, 0, -2)) !== 3030) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, 0, 0, 0, 0, 0, 0, 0, -1)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(-16, -9, -2, 36, 36, 26, -20, 25, -40, 20, -4, 12, -26, 35, 37)) !== -14196) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -3, 17, -1, -15, 13, -1, 14, -14, -12, -5, 14, -14, 6, 13, 11, 16, 16, 4, 10)) !== -1448) { 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
// 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
// This function takes two positive numbers x and y and returns the
// biggest even integer number that is in the range [x, y] inclusive. If
// there's no such number, then the function should return -1.
// For example:
// >>> choose_num(12, 15)
// 14
// >>> choose_num(13, 12)
// -1
function choose_num($x, $y) {

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

function test(): void {
    if (candidate(12, 15) !== 14) { throw new Exception("Test failed!"); }
    if (candidate(13, 12) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(33, 12354) !== 12354) { throw new Exception("Test failed!"); }
    if (candidate(5234, 5233) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(6, 29) !== 28) { throw new Exception("Test failed!"); }
    if (candidate(27, 10) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(7, 7) !== -1) { throw new Exception("Test failed!"); }
    if (candidate(546, 546) !== 546) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Create a function that returns an array (a, b), where 'a' is
// the largest of negative integers, and 'b' is the smallest
// of positive integers in an array.
// If there is no negative or positive integers, return them as null.
// Examples:
// >>> largest_smallest_integers(array(2, 4, 1, 3, 5, 7))
// array(null, 1)
// >>> largest_smallest_integers(array())
// array(null, null)
// >>> largest_smallest_integers(array(0))
// array(null, null)
function largest_smallest_integers($lst) {

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

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

test();


Prompt:
<?php
// Given a string, find out how many distinct characters (regardless of case) does it consist of
// >>> count_distinct_characters("xyzXYZ")
// 3
// >>> count_distinct_characters("Jerry")
// 4
function count_distinct_characters($string) {

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

function test(): void {
    if (candidate("") !== 0) { throw new Exception("Test failed!"); }
    if (candidate("abcde") !== 5) { throw new Exception("Test failed!"); }
    if (candidate("abcdecadeCADE") !== 5) { throw new Exception("Test failed!"); }
    if (candidate("aaaaAAAAaaaa") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("Jerry jERRY JeRRRY") !== 5) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a positive integer n, you have to make a pile of n levels of stones.
// The first level has n stones.
// The number of stones in the next level is:
// - the next odd number if n is odd.
// - the next even number if n is even.
// Return the number of stones in each level in an array, where element at index
// i represents the number of stones in the level (i+1).
// Examples:
// >>> make_a_pile(3)
// array(3, 5, 7)
function make_a_pile($n) {

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

function test(): void {
    if (candidate(3) !== array(3, 5, 7)) { throw new Exception("Test failed!"); }
    if (candidate(4) !== array(4, 6, 8, 10)) { throw new Exception("Test failed!"); }
    if (candidate(5) !== array(5, 7, 9, 11, 13)) { throw new Exception("Test failed!"); }
    if (candidate(6) !== array(6, 8, 10, 12, 14, 16)) { throw new Exception("Test failed!"); }
    if (candidate(8) !== array(8, 10, 12, 14, 16, 18, 20, 22)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// You are given an array arr of integers and you need to return
// sum of magnitudes of integers multiplied by product of all signs
// of each number in the array, represented by 1, -1 or 0.
// Note: return null for empty arr.
// Example:
// >>> prod_signs(array(1, 2, 2, -4))
// 9
// >>> prod_signs(array(0, 1))
// 0
// >>> prod_signs(array())
// null
function prod_signs($arr) {

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

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

test();


Prompt:
<?php
// Given an array of integers nums, find the minimum sum of any non-empty sub-array
// of nums.
// Example
// >>> minSubArraySum(array(2, 3, 4, 1, 2, 4))
// 1
// >>> minSubArraySum(array(-1, -2, -3))
// -6
function minSubArraySum($nums) {

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

function test(): void {
    if (candidate(array(2, 3, 4, 1, 2, 4)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -2, -3)) !== -6) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -2, -3, 2, -10)) !== -14) { throw new Exception("Test failed!"); }
    if (candidate(array(-9999999999999999)) !== -9999999999999999) { throw new Exception("Test failed!"); }
    if (candidate(array(0, 10, 20, 1000000)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(-1, -2, -3, 10, -5)) !== -6) { throw new Exception("Test failed!"); }
    if (candidate(array(100, -1, -2, -3, 10, -5)) !== -6) { throw new Exception("Test failed!"); }
    if (candidate(array(10, 11, 13, 8, 3, 4)) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(array(100, -33, 32, -1, 0, -2)) !== -33) { throw new Exception("Test failed!"); }
    if (candidate(array(-10)) !== -10) { throw new Exception("Test failed!"); }
    if (candidate(array(7)) !== 7) { throw new Exception("Test failed!"); }
    if (candidate(array(1, -1)) !== -1) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return a string containing space-delimited numbers starting from 0 upto n inclusive.
// >>> string_sequence(0)
// "0"
// >>> string_sequence(5)
// "0 1 2 3 4 5"
function string_sequence($n) {

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

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

test();


Prompt:
<?php
// You are given 2 words. You need to return true if the second word or any of its rotations is a substring in the first word
// >>> cycpattern_check("abcd", "abd")
// false
// >>> cycpattern_check("hello", "ell")
// true
// >>> cycpattern_check("whassup", "psus")
// false
// >>> cycpattern_check("abab", "baa")
// true
// >>> cycpattern_check("efef", "eeff")
// false
// >>> cycpattern_check("himenss", "simen")
// true
function cycpattern_check($a, $b) {

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

function test(): void {
    if (candidate("xyzw", "xyw") !== false) { throw new Exception("Test failed!"); }
    if (candidate("yello", "ell") !== true) { throw new Exception("Test failed!"); }
    if (candidate("whattup", "ptut") !== false) { throw new Exception("Test failed!"); }
    if (candidate("efef", "fee") !== true) { throw new Exception("Test failed!"); }
    if (candidate("abab", "aabb") !== false) { throw new Exception("Test failed!"); }
    if (candidate("winemtt", "tinem") !== true) { 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
// Out of array of strings, return the longest one. Return the first one in case of multiple
// strings of the same length. Return null in case the input array is empty.
// >>> longest(array())
// null
// >>> longest(array("a", "b", "c"))
// "a"
// >>> longest(array("a", "bb", "ccc"))
// "ccc"
function longest($strings) {

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

function test(): void {
    if (candidate(array()) !== null) { throw new Exception("Test failed!"); }
    if (candidate(array("x", "y", "z")) !== "x") { throw new Exception("Test failed!"); }
    if (candidate(array("x", "yyy", "zzzz", "www", "kkkk", "abc")) !== "zzzz") { 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
// 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
// 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
// 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
// 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 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
// 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
// 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
// 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
// Given a positive integer, obtain its roman numeral equivalent as a string,
// and return it in lowercase.
// Restrictions: 1 <= num <= 1000
// Examples:
// >>> int_to_mini_roman(19)
// "xix"
// >>> int_to_mini_roman(152)
// "clii"
// >>> int_to_mini_roman(426)
// "cdxxvi"
function int_to_mini_roman($number) {

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

function test(): void {
    if (candidate(19) !== "xix") { throw new Exception("Test failed!"); }
    if (candidate(152) !== "clii") { throw new Exception("Test failed!"); }
    if (candidate(251) !== "ccli") { throw new Exception("Test failed!"); }
    if (candidate(426) !== "cdxxvi") { throw new Exception("Test failed!"); }
    if (candidate(500) !== "d") { throw new Exception("Test failed!"); }
    if (candidate(1) !== "i") { throw new Exception("Test failed!"); }
    if (candidate(4) !== "iv") { throw new Exception("Test failed!"); }
    if (candidate(43) !== "xliii") { throw new Exception("Test failed!"); }
    if (candidate(90) !== "xc") { throw new Exception("Test failed!"); }
    if (candidate(94) !== "xciv") { throw new Exception("Test failed!"); }
    if (candidate(532) !== "dxxxii") { throw new Exception("Test failed!"); }
    if (candidate(900) !== "cm") { throw new Exception("Test failed!"); }
    if (candidate(994) !== "cmxciv") { throw new Exception("Test failed!"); }
    if (candidate(1000) !== "m") { 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
// Task
// We are given two strings s and c, you have to deleted all the characters in s that are equal to any character in c
// then check if the result string is palindrome.
// A string is called palindrome if it reads the same backward as forward.
// You should return an array containing the result string and true/false for the check.
// Example
// >>> reverse_delete("abcde", "ae")
// array("bcd", false)
// >>> reverse_delete("abcdef", "b")
// array("acdef", false)
// >>> reverse_delete("abcdedcba", "ab")
// array("cdedc", true)
function reverse_delete($s, $c) {

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

function test(): void {
    if (candidate("abcde", "ae") !== array("bcd", false)) { throw new Exception("Test failed!"); }
    if (candidate("abcdef", "b") !== array("acdef", false)) { throw new Exception("Test failed!"); }
    if (candidate("abcdedcba", "ab") !== array("cdedc", true)) { throw new Exception("Test failed!"); }
    if (candidate("dwik", "w") !== array("dik", false)) { throw new Exception("Test failed!"); }
    if (candidate("a", "a") !== array("", true)) { throw new Exception("Test failed!"); }
    if (candidate("abcdedcba", "") !== array("abcdedcba", true)) { throw new Exception("Test failed!"); }
    if (candidate("abcdedcba", "v") !== array("abcdedcba", true)) { throw new Exception("Test failed!"); }
    if (candidate("vabba", "v") !== array("abba", true)) { throw new Exception("Test failed!"); }
    if (candidate("mamma", "mia") !== array("", true)) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Return a greatest common divisor of two integers a and b
// >>> greatest_common_divisor(3, 5)
// 1
// >>> greatest_common_divisor(25, 15)
// 5
function greatest_common_divisor($a, $b) {

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

function test(): void {
    if (candidate(3, 7) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(10, 15) !== 5) { throw new Exception("Test failed!"); }
    if (candidate(49, 14) !== 7) { throw new Exception("Test failed!"); }
    if (candidate(144, 60) !== 12) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a string of words, return an array of words split on whitespace, if no whitespaces exists in the text you
// should split on commas ',' if no commas exists you should return the number of lower-case letters with odd order in the
// alphabet, ord('a') = 0, ord('b') = 1, ... ord('z') = 25
// Examples
// >>> split_words("Hello world!")
// array("Hello", "world!")
// >>> split_words("Hello,world!")
// array("Hello", "world!")
// >>> split_words("abcdef")
// 3
function split_words($txt) {

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

function test(): void {
    if (candidate("Hello world!") !== array("Hello", "world!")) { throw new Exception("Test failed!"); }
    if (candidate("Hello,world!") !== array("Hello", "world!")) { throw new Exception("Test failed!"); }
    if (candidate("Hello world,!") !== array("Hello", "world,!")) { throw new Exception("Test failed!"); }
    if (candidate("Hello,Hello,world !") !== array("Hello,Hello,world", "!")) { throw new Exception("Test failed!"); }
    if (candidate("abcdef") !== 3) { throw new Exception("Test failed!"); }
    if (candidate("aaabb") !== 2) { throw new Exception("Test failed!"); }
    if (candidate("aaaBb") !== 1) { throw new Exception("Test failed!"); }
    if (candidate("") !== 0) { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// In this Kata, you have to sort an array of non-negative integers according to
// number of ones in their binary representation in ascending order.
// For similar number of ones, sort based on decimal value.
// It must be implemented like this:
// >>> sort_array(array(1, 5, 2, 3, 4))
// array(1, 2, 3, 4, 5)
// >>> sort_array(array(-2, -3, -4, -5, -6))
// array(-6, -5, -4, -3, -2)
// >>> sort_array(array(1, 0, 2, 3, 4))
// array(0, 1, 2, 3, 4)
function sort_array($arr) {

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

function test(): void {
    if (candidate(array(1, 5, 2, 3, 4)) !== array(1, 2, 4, 3, 5)) { throw new Exception("Test failed!"); }
    if (candidate(array(-2, -3, -4, -5, -6)) !== array(-4, -2, -6, -5, -3)) { throw new Exception("Test failed!"); }
    if (candidate(array(1, 0, 2, 3, 4)) !== array(0, 1, 2, 4, 3)) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 5, 77, 4, 5, 3, 5, 7, 2, 3, 4)) !== array(2, 2, 4, 4, 3, 3, 5, 5, 5, 7, 77)) { throw new Exception("Test failed!"); }
    if (candidate(array(3, 6, 44, 12, 32, 5)) !== array(32, 3, 5, 6, 12, 44)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, 8, 16, 32)) !== array(2, 4, 8, 16, 32)) { throw new Exception("Test failed!"); }
    if (candidate(array(2, 4, 8, 16, 32)) !== array(2, 4, 8, 16, 32)) { 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
// Write a function that accepts an array of strings as a parameter,
// deletes the strings that have odd lengths from it,
// and returns the resulted array with a sorted order,
// The array is always an array of strings and never an array of numbers,
// and it may contain duplicates.
// The order of the array should be ascending by length of each word, and you
// should return the array sorted by that rule.
// If two words have the same length, sort the array alphabetically.
// The function should return an array of strings in sorted order.
// You may assume that all words will have the same length.
// For example:
// >>> list_sort(array("aa", "a", "aaa"))
// array("aa")
// >>> list_sort(array("ab", "a", "aaa", "cd"))
// array("ab", "cd")
function sorted_list_sum($lst) {

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

function test(): void {
    if (candidate(array("aa", "a", "aaa")) !== array("aa")) { throw new Exception("Test failed!"); }
    if (candidate(array("school", "AI", "asdf", "b")) !== array("AI", "asdf", "school")) { throw new Exception("Test failed!"); }
    if (candidate(array("d", "b", "c", "a")) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("d", "dcba", "abcd", "a")) !== array("abcd", "dcba")) { throw new Exception("Test failed!"); }
    if (candidate(array("AI", "ai", "au")) !== array("AI", "ai", "au")) { throw new Exception("Test failed!"); }
    if (candidate(array("a", "b", "b", "c", "c", "a")) !== array()) { throw new Exception("Test failed!"); }
    if (candidate(array("aaaa", "bbbb", "dd", "cc")) !== array("cc", "dd", "aaaa", "bbbb")) { 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
// 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
// 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
// Write a function that accepts an array of strings.
// The array contains different words. Return the word with maximum number
// of unique characters. If multiple strings have maximum number of unique
// characters, return the one which comes first in lexicographical order.
// >>> find_max(array("name", "of", "string"))
// "string"
// >>> find_max(array("name", "enam", "game"))
// "enam"
// >>> find_max(array("aaaaaaa", "bb", "cc"))
// "aaaaaaa"
function find_max($words) {

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

function test(): void {
    if (candidate(array("name", "of", "string")) !== "string") { throw new Exception("Test failed!"); }
    if (candidate(array("name", "enam", "game")) !== "enam") { throw new Exception("Test failed!"); }
    if (candidate(array("aaaaaaa", "bb", "cc")) !== "aaaaaaa") { throw new Exception("Test failed!"); }
    if (candidate(array("abc", "cba")) !== "abc") { throw new Exception("Test failed!"); }
    if (candidate(array("play", "this", "game", "of", "footbott")) !== "footbott") { throw new Exception("Test failed!"); }
    if (candidate(array("we", "are", "gonna", "rock")) !== "gonna") { throw new Exception("Test failed!"); }
    if (candidate(array("we", "are", "a", "mad", "nation")) !== "nation") { throw new Exception("Test failed!"); }
    if (candidate(array("this", "is", "a", "prrk")) !== "this") { throw new Exception("Test failed!"); }
    if (candidate(array("b")) !== "b") { throw new Exception("Test failed!"); }
    if (candidate(array("play", "play", "play")) !== "play") { throw new Exception("Test failed!"); }
}

test();


Prompt:
<?php
// Given a string 'text', return its md5 hash equivalent string.
// If 'text' is an empty string, return null.
// >>> string_to_md5("Hello world")
// "3e25960a79dbc69b674cd4ec67a72c62"
function string_to_md5($text) {

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

function test(): void {
    if (candidate("Hello world") !== "3e25960a79dbc69b674cd4ec67a72c62") { throw new Exception("Test failed!"); }
    if (candidate("") !== null) { throw new Exception("Test failed!"); }
    if (candidate("A B C") !== "0ef78513b0cb8cef12743f5aeb35f888") { throw new Exception("Test failed!"); }
    if (candidate("password") !== "5f4dcc3b5aa765d61d8327deb882cf99") { 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 the lengths of the three sides of a triangle. Return true if the three
// sides form a right-angled triangle, false otherwise.
// A right-angled triangle is a triangle in which one angle is right angle or
// 90 degree.
// Example:
// >>> right_angle_triangle(3, 4, 5)
// true
// >>> right_angle_triangle(1, 2, 3)
// false
function right_angle_triangle($a, $b, $c) {

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

function test(): void {
    if (candidate(3, 4, 5) !== true) { throw new Exception("Test failed!"); }
    if (candidate(1, 2, 3) !== false) { throw new Exception("Test failed!"); }
    if (candidate(10, 6, 8) !== true) { throw new Exception("Test failed!"); }
    if (candidate(2, 2, 2) !== false) { throw new Exception("Test failed!"); }
    if (candidate(7, 24, 25) !== true) { throw new Exception("Test failed!"); }
    if (candidate(10, 5, 7) !== false) { throw new Exception("Test failed!"); }
    if (candidate(5, 12, 13) !== true) { throw new Exception("Test failed!"); }
    if (candidate(15, 8, 17) !== true) { throw new Exception("Test failed!"); }
    if (candidate(48, 55, 73) !== true) { throw new Exception("Test failed!"); }
    if (candidate(1, 1, 1) !== false) { throw new Exception("Test failed!"); }
    if (candidate(2, 2, 10) !== 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
// 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
// Write a function that takes an array of numbers as input and returns
// the number of elements in the array that are greater than 10 and both
// first and last digits of a number are odd (1, 3, 5, 7, 9).
// For example:
// >>> specialFilter(array(15, -73, 14, -15))
// 1
// >>> specialFilter(array(33, -2, -3, 45, 21, 109))
// 2
function specialFilter($nums) {

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

function test(): void {
    if (candidate(array(5, -2, 1, -5)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array(15, -73, 14, -15)) !== 1) { throw new Exception("Test failed!"); }
    if (candidate(array(33, -2, -3, 45, 21, 109)) !== 2) { throw new Exception("Test failed!"); }
    if (candidate(array(43, -12, 93, 125, 121, 109)) !== 4) { throw new Exception("Test failed!"); }
    if (candidate(array(71, -2, -33, 75, 21, 19)) !== 3) { throw new Exception("Test failed!"); }
    if (candidate(array(1)) !== 0) { throw new Exception("Test failed!"); }
    if (candidate(array()) !== 0) { 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
// 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
// Given two positive integers a and b, return the even digits between a
// and b, in ascending order.
// For example:
// >>> generate_integers(2, 8)
// array(2, 4, 6, 8)
// >>> generate_integers(8, 2)
// array(2, 4, 6, 8)
// >>> generate_integers(10, 14)
// array()
function generate_integers($a, $b) {

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

function test(): void {
    if (candidate(2, 10) !== array(2, 4, 6, 8)) { throw new Exception("Test failed!"); }
    if (candidate(10, 2) !== array(2, 4, 6, 8)) { throw new Exception("Test failed!"); }
    if (candidate(132, 2) !== array(2, 4, 6, 8)) { throw new Exception("Test failed!"); }
    if (candidate(17, 89) !== array()) { 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();


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
// 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
// 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
// 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
// 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
// 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();