どう書く?orgに投稿。
お題はあみだくじです。
このような形で使用する。
strtr()、初めて使用した。
if内の入れ替え処理、よくあるバッファを用いたものより、直感的にわかりやすくなっている(かも)。
お題はあみだくじです。
次のような書式で与えられた「あみだくじ」があります。以下、投稿したコード。選択した言語はPHP。ファイルパスを渡すと結果付きで返却する。
(あみだくじはコード中に埋め込んでも、標準入力や外部ファイルから読み込んでも、書きやすい方法でかまいません)
A B C D E | | |-| | |-| | |-| | |-| |-| |-| |-| | |-| | | |このあみだくじをたどって
A B C D E | | |-| | |-| | |-| | |-| |-| |-| |-| | |-| | | | B D C A Eのように結果を表示させるプログラムを作ってください。
<?phpecho sprintf('<pre>%s</pre>', Amida('./amida.txt'));
function Amida($file_path)
{
if (!file_exists($file_path)) {
return NULL;
}
$lines = file($file_path);
$org = array_shift($lines);
$p = $org;
foreach ($lines as $line) {
for ($i = 1; $i < strlen(trim($line)); $i+=2) {
if ($line[$i] == '-') {
$sub = array($p[$i+1]=>$p[$i-1], $p[$i-1]=>$p[$i+1]);
$p = strtr($p, $sub);
}
}
}
return $org.implode('', $lines).$p;
}
?>
このような形で使用する。
strtr()、初めて使用した。
if内の入れ替え処理、よくあるバッファを用いたものより、直感的にわかりやすくなっている(かも)。
コメントする