Создайте самую короткую функцию для преобразования строки римских цифр в целое число.
Правила для каждого письма можно найти на странице Википедии . Буквы выше 1000 будут иметь круглые скобки для обозначения их более высокого значения.
Требования:
- Необходимо преобразовать римские цифры от 1 до 500 000
- Должен завершиться менее чем за минуту
- Не использует встроенные функции, которые могут обеспечить преимущество (например, функция, которая преобразует римские цифры в целые числа)
- Это функция
Функция не должна поддерживать дроби. Любой неверный ввод должен возвращать число 0.
Кратчайшая функция выигрывает. В случае ничьей побеждает тот, у кого больше голосов.
Тестовые случаи
вход
III
Выход
3
вход
IIII
Выход
0
вход
XVI
Выход
16
вход
(C)(D)(L)MMI
Выход
452001
code-golf
math
function
roman-numerals
Кевин Браун
источник
источник
(C)(D)(L)MMI
было бы 452 001. Как вы получили свою ценность? Кроме того, нужно ли поддерживать «неправильные» формы (например,IC
вместоXCIX
)?Ответы:
C ++:
914855 символовЭто может быть сжато дальше.
Немного приятнее форматирование: 1582 символа
источник
Javascript, 317 символов
Explaination:
Без обнаружения ошибок это всего 180 символов
Это работает так же, но здесь лучше форматирование:
источник