<?php
function checkCase($string)
{
$symMap = [
"." => ">",
"," => "<"
];
foreach($symMap as $k => $v)
$symMap[$v] = $k;
$element = str_split($string);
foreach($element as &$item)
{
if(in_array($item, $symMap))
$item = [$item, $symMap[$item]];
else
$item = [strtolower($item), strtoupper($item)];
}
$flags = array_fill(0, count($element), 0);
$result = [];
while(true)
{
$solution = "";
foreach(range(0, count($element) - 1) as $i)
{
$solution .= $element[$i][$flags[$i]];
}
$isEnding = function() use(&$flags, $element) {
foreach(range(0, count($flags) - 1) as $i)
{
if($flags[$i] < count($element[$i]) - 1)
{
$flags[$i]++;
if($i > 0)
foreach(range(0, $i - 1) as $j)
$flags[$j] = 0;
return false;
}
}
return true;
};
if(!$isEnding())
$result[] = $solution;
else
break;
}
return $result;
}
var_dump(checkCase("A.B"));
var_dump(checkCase("ABCD"));
preferences:
41.99 ms | 402 KiB | 5 Q