Nasıl tekrarlanarak her harften sonra kesme işareti var "Murrays" bir varyantını oluşturabilir? Nihai sonucu olmalıdır:
"m'rrays,mu'rrays,mur'rays,murr'ays,murra'ys,murray's"
Benim önerim:
<?php
function generate($str, $add, $separator = ',')
{
$split = str_split($str);
$total = count($split) - 1;
$new = '';
for ($i = 0; $i < $total; $i++)
{
$aux = $split;
$aux[$i+1] = "'" . $aux[$i+1];
$new .= implode('', $aux).$separator;
}
return $new;
}
echo generate('murrays', "'");
?>
Sen adı üzerinden yineleme yapmak istiyorsanız, ve kesme işareti ile 'yeniden baskı? Aşağıdaki deneyin:
<?php
$string = "murrays";
$array = str_split($string);
$length = count($array);
$output = "";
for ($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
$output .= $array[$j];
if ($j == $i)
$output.= "'";
}
if ($i < ($length - 1))
$output .= ",";
}
print $output;
?>
Fonksiyonel programlama neden burada olduğunu iyi ki var
Bu kod ocaml ve F # çalışır, kolayca C # üzerinde çalışan yapabilirsiniz
let generate str =
let rec gen_aux s index =
match index with
| String.length s -> [s]
| _ -> let part1 = String.substr s 0 index in
let part2 = String.substr s index (String.length s) in
(part1 ^ "'" ^ part2)::gen_aux s (index + 1)
in gen_aux str 1;;
generate "murrays";;
Bu kod listenin sonuna kadar orijinal kelimeyi döndürür, bu geçici çözüm olabilir :)