Перевести

Исходник

Музейный экспонат. Делал очень давно, не помню почему именно так.
<?php
global $gar// Глобальный массив для сохранения позиций букв
$alphabet 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'// Строка кодирования
//$alphabet = 'АБВГДЕЁЖЗ';
$maxgetlen '309'// после 308 "девяток" скрипт падает из-за ограничения в количестве рекурсий (250)
$echo '';
function 
getCode($n){
    global 
$alphabet;
    return 
$alphabet[($n-1)];
}
function 
getTimer($start){
    
$fin microtime(true);

    return (
$fin $start);
}
function 
getFinCode($X){
    global 
$alphabet;
    
$col strlen($alphabet);
    
$L floor($X $col); // первые буквы
    
$G $L $col// координата последнего значения предыдущего разряда (ZZ, например)
    
$K $X $G// последняя буква $alph (26, например)
    
if(!$K){
        
$K $col// если последняя буква = 0, значит это конец разряда (ZZZ, например), и эта буква - последняя в alphabet
        
--$L// предыдущие буквы, соответственно, тоже нужно сдвинуть назад
    
}
    
$res[] = $K;
    if(
$L $col){
        
// если "первая буква" выходит за рамки длины строки, значит это не одна буква
        
$res[] = getFinCode($L);
    }
    else{
        
// а в этом случае одна
        
$res[] = $L;
    }
    return 
$res;
}
function 
parseFinCode($X){
    global 
$gar;
    
$r getFinCode($X); // получаем многомерный массив с цифрами позиций букв
    
$gar ''// обнуляем глобальную строку
    
array_walk_recursive($r'getArrayItem'); // вытаскиваем цифры массива, формируем из них строку
    
return '('.$X.') '.strrev($gar); // переворачиваем, так как в массиве цифры лежали с конца
    
return '('.$X.') '.strrev($gar); // переворачиваем, так как в массиве цифры лежали с конца
}
function 
getArrayItem($item$key)
{
    global 
$gar;
    
$gar .= getCode($item); // превращаем цифру в соответствующую букву alphabet
}
function 
getNumber($code){
    global 
$alphabet;
    
$ac strlen($alphabet);
    
$c strlen($code);
    for(
$i=0$i<$c$i++){
        
$l mb_strtoupper($code[$i]);
        
$pos strpos($alphabet$l);
        if(
$pos !== false){
            
$arr[] = ($pos+1);
        }
        else{
            exit(
'Таких символов нет в кодировке');
        }
    }
    
$pop array_pop($arr);
    
var_dump($pop);
    return 
getRowSum($ac$c$pop);
}
function 
getRowSum($ac$c$coeff){
    
$r $coeff;
    
$ci $c;
    for(
$i=0$i<$c$i++) {
        for (
$ii 0$ii $ci$ii++) {
            --
$ci;
            
$r += pow($ac$i);
        }
        
$r += pow($ac$i);
    }
    return 
$r;
    
/*
     * $coeff + ($ac^0) + ($ac^1) + .. + ($ac^$c);
     * но походу для 3значных кодов
     * ($ac^0) + ($ac^1) + .. + ($ac^3) + !! (($ac^0) + ($ac^1) + .. + ($ac^2)) + $coeff;
     */
}
if(
$_REQUEST){
    
$start = -microtime(true);
    
$get = (string)$_GET['x'];
    
$getlen strlen($get);
    if(
$getlen<$maxgetlen) {
        if (
$get 1) {
            
$get 1;
        }
        if (
$get 0) {
            
$echo .= parseFinCode($get) . PHP_EOL '<br>';
        }

        
$echo .= PHP_EOL.'<br><span class="small-text color-gray">'.getTimer($start) . '</span>';
    }
    else{
        
$echo .= 'Даже великие сервера не смогут прочитать это число';
    }
}