VIIIX = V+I+I+(X-I) = 16
IIIIIVIVIIII = I+I+I+I+(V-I)+(V-I)+I+I+I+I = 16
IIIIIVIVIIIILXMCCCLMII = 2306 = MMCCCVI
CIIIIIVIVIIIILXMCCCLMII = 2406 = MMCDVI
Вид для печати
Хотя на самом деле запись когда перед большей цифрой идут больше чем одна меньшая цифра, то это не просто некорректно, это абсолютно не верно.
acad, если верить тебе то решение будет таким
Проблема только в том что спецификации чтоб реализовать функции arab2roman и roman2arab будет найти не просто (если вы конечно не историк, но задача то для программистов а не для историков....)Цитата:
echo arab2roman(roman2arab($num));
Можно конечно предположить что программист должен иметь высшее образование, тогда программист должен быть по совместительству и историком, но тогда он должен быть и медиком, и даже педиком (задачи разные бывают, а программист то один)
Короче задача сформулирована неточно...
На мой взгляд задача вообще не существует, ибо запись "IIIII" просто не верна (если для "IIII" вопрос спорный, ибо это было "валидно" до 19-го века то запись "IM" неверна в корне)
Vladson, задача неточная это факт, но для реализации roman2arab нужно всего лишь сделать вычитание/сложение как я сказал, а вот с arab2roman все намного сложнее. надо перевести по правилам, потом перевести не по правилам (подумав какие конструкции можно сократить в неправильный вид) и посмотреть что короче.
http://projecteuler.net/index.php?se...problems&id=89 эта задача сформулирована корректно, могут быть повторы больше 3, но не может быть больше одной меньшей цифры перед большей (IIX - неверно). и тогда задача решаеться обычным str_replace.
<?php
echo $a+$b;
?>
А без знака + слабо?:0106:
$c=-(-$a-$b);
Правда за такое могут и в дурку отправить
задача сформулирована максимально не точно.
$input = str_replace(array("IIIII","VV","XXXXX","LL","CCCCC","DD"), array("V","X","L","C","D","M"), $input);
Arrogant.Elf, не поможет :) MCMXCIX = MIM, ваш скрипт этого не сделает.
acad, я просто говорю о том, что задание плохо сформулировано.
Написал на скорую руку перевод из римских в арабские:
http://arrogant.ru/task1.php?input=MCMXCIX (например)
код выкладывать стыдно, получился грязный =)