Преобразовать целые числа в римские цифры с помощью синтаксически ориентируемой схемы перевода?

Эта система не использует системные свойства.

        Authenticator.setDefault(new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user, pass.toCharArray());
            }
        });
8
задан Trojan 31 December 2013 в 07:09
поделиться

2 ответа

Я рассмотрел бы парсинг справа налево.

Во-первых, я отобразил бы столбец единиц:

0 -> ''
1 -> 'I'
2 -> 'II'
3 -> 'III'
4 -> 'IV'
...
9 -> 'IX'

Затем если бы был второй столбец (например, второй справа = столбец десятков), то я использовал бы это для отображения на

0 -> ''
1 -> 'X'
2 -> 'XX'
...
9 -> 'XC'

Это должно было бы предварительно ожидаться к начальному выводу.

Повторитесь для следующих столбцов (сотни, тысячи), пока у Вас не закончатся буквы.

Перепроверка число не '0' или отрицательна.

2
ответ дан 5 December 2019 в 22:21
поделиться

Иначе должен сохранить в двухмерной антенной решетке римские цифры для 1, 5, 10, 50, 100, 500, 1000 и так далее. Пример (в массиве PHP):

$roman = array(
  [0] = array( 1=>"I", 5=>"V", 10=>"X" ),
  [1] = array( 1=>"X", 5=>"L", 10=>"C" ),
  [2] = array( 1=>"C", 5=>"D", 10=>"M" ),
  [3] = array( 1=>"M", 5=>"^V", 10=>"^X" ),
);

Затем возьмите каждую цифру справа налево и примените следующий перевод. Установите переменный $level = 0 и увеличьте его значение 1 после того, как каждая цифра обработала:

1 => $roman[$level][1]
2 => $roman[$level][1].$roman[$level][1]
3 => $roman[$level][1].$roman[$level][1].$roman[$level][1]
4 => $roman[$level][1].$roman[$level][5]
5 => $roman[$level][5]
6 => $roman[$level][5].$roman[$level][1]
7 => $roman[$level][5].$roman[$level][1].$roman[$level][1]
8 => $roman[$level][5].$roman[$level][1].$roman[$level][1].$roman[$level][1]
9 => $roman[$level][1].$roman[$level][10]

(в PHP a'.' concats две строки)

Пример: 1945

5 => $roman[0][5] = "V"
4 => $roman[1][1].$roman[1][5] = "XL"
9 => $roman[2][1].$roman[2][10] = "CM"
1 => $roman[3][1] = "M"

Таким образом, переведенное число является "MCMXLV"

Извините это не могло бы полностью ответить на Ваш вопрос, но я надеюсь, что он помогает всегда..

2
ответ дан 5 December 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: