Family Day update
This commit is contained in:
parent
aac6731f2c
commit
9ad63ea473
2442 changed files with 39761 additions and 8255 deletions
44
Task/Move-to-front-algorithm/PHP/move-to-front-algorithm.php
Normal file
44
Task/Move-to-front-algorithm/PHP/move-to-front-algorithm.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
function symbolTable() {
|
||||
$symbol = array();
|
||||
for ($c = ord('a') ; $c <= ord('z') ; $c++) {
|
||||
$symbol[$c - ord('a')] = chr($c);
|
||||
}
|
||||
return $symbol;
|
||||
}
|
||||
|
||||
function mtfEncode($original, $symbol) {
|
||||
$encoded = array();
|
||||
for ($i = 0 ; $i < strlen($original) ; $i++) {
|
||||
$char = $original[$i];
|
||||
$position = array_search($char, $symbol);
|
||||
$encoded[] = $position;
|
||||
$mtf = $symbol[$position];
|
||||
unset($symbol[$position]);
|
||||
array_unshift($symbol, $mtf);
|
||||
}
|
||||
return $encoded;
|
||||
}
|
||||
|
||||
function mtfDecode($encoded, $symbol) {
|
||||
$decoded = '';
|
||||
foreach ($encoded AS $position) {
|
||||
$char = $symbol[$position];
|
||||
$decoded .= $char;
|
||||
unset($symbol[$position]);
|
||||
array_unshift($symbol, $char);
|
||||
}
|
||||
return $decoded;
|
||||
}
|
||||
|
||||
foreach (array('broood', 'bananaaa', 'hiphophiphop') AS $original) {
|
||||
$encoded = mtfEncode($original, symbolTable());
|
||||
$decoded = mtfDecode($encoded, symbolTable());
|
||||
echo
|
||||
$original,
|
||||
' -> [', implode(',', $encoded), ']',
|
||||
' -> ', $decoded,
|
||||
' : ', ($original === $decoded ? 'OK' : 'Error'),
|
||||
PHP_EOL;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue