66DRCCCLXVII
В комнате на стене висит портрет... тьфу ты, это мемовирус, из детства, не обращайте внимания. А вот ехал я с дачи в этот раз на электричке и увидел 2 запоминающихся настенных надписи - "Ясно!" на стене какого-то завода в районе Речкуновки и "66DRCCCLXVII" на бетонном ограждении автострады у разъезда Иня. Но если с первой надписью всё ясно, то что есть вторая? Да крупно так, в пол-роста, видно, что старался человек. Почему-то меня сразу заклинило на римских цифрах, хотя прекрасно помню, что римских чисел 66DR я не помню, а CCCLXVII даёт 367, но что мне это даёт?
Наверное, 66DRCCCLXVII - тоже мемовирус. Потому что по приезде домой я всё-таки проверил таинственные знаки в конвертере римских и арабских чисел, точней, сначала проверил, а потом минут за 15 и свой конвертер написал. Пусть простенький, зато всегда будет доступен мне в исходниках.
В общем, в Гуглояндексах ничего не было про таинственное 66DRCCCLXVII, а теперь будет. Про конвертацию арабских чисел в римские тоже много на разных языках и в исходниках, а вот из римской записи в арабскую что-то не попадается, так что вот обе функции на PHP в одном пакете:
function arabic_to_roman ($value) { if ($value<0) $value=-$value; if (!$value) return "0"; $thousands=(int)($value/1000); $value-=$thousands*1000; $result=str_repeat("M",$thousands); $table=array ( 900=>"CM",500=>"D",400=>"CD",100=>"C", 90=>"XC",50=>"L",40=>"XL",10=>"X", 9=>"IX",5=>"V",4=>"IV",1=>"I"); while($value) { foreach($table as $part=>$fragment) if($part<=$value) break; $amount=(int)($value/$part); $value-=$part*$amount; $result.=str_repeat($fragment,$amount); } return $result; } function roman_to_arabic ($value) { $table=array ( 'I'=>1,'V'=>5,'X'=>10,'L'=>50,'C'=>100,'D'=>500,'M'=>1000 ); $length=strlen($value); $active=$result=0; for ($i=$length-1; $i>-1; $i--) { $next=$table[$value[$i]]; if ($next<$active) $result-=$next; else $result+=$next; $active=$next; } return $result; }
Онлайн-сервис преобразования римских и арабских чисел
Как всегда, онлайн-версия может чем-то отличаться. Так как с 4000 у римлян начинаются цифры с подчёркиванием сверху, допустимый диапазон арабских чисел - от 1 до 3999 включительно.
Чёрт побери, но что же всё-таки такое 66DRCCCLXVII?
05.07.2011, 19:09 [9806 просмотров]