Умная сортировка имен файлов
Вы, вероятно, сталкивались с задачей сортировки файлов в каталоге по их именам. Как вы могли заметить, в старых системах имена файлов сортируются в лексикографическом порядке на основе ASCII. Сортировка алфавитно-цифровых символов ASCII выглядит следующим образом:
0 < 1 < … < 9 < A < B < … < Z < a < b < … < z
Таким образом, следующие имена файлов будут расположены в таком порядке:
A, A0, A01, A02, A1, A10, A2, AA, AB, Aa, Ab, B, B0, a, a0
Однако, желаемая нами сортировка выглядит следующим образом:
a, A, a0, A0, A01, A1, A02, A2, A10, Aa, AA, Ab, AB, B, B0
Желаемая сортировка может быть формально определена с помощью следующих правил сравнения двух имен файлов:
1. Если два имени файлов идентичны, они считаются равными. В противном случае они не равны.
2. Любой максимальный блок последовательных цифр в имени файла должен рассматриваться как одно число. Таким образом, имя файла представляется как последовательность букв и чисел.
3. Два неравных имени файлов сравниваются в два этапа. Этап 2 используется только в том случае, если порядок двух имен файлов не может быть определен на этапе 1.
4. Этап 1 (мягкое сравнение): Имена файлов сравниваются лексикографически по следующим правилам:
a. Числа предшествуют буквам (a1 < aa).
b. Числа с меньшими значениями предшествуют числам с большими значениями (a2 < a10).
c. Числа с одинаковым значением не различаются на этом этапе.
d. Буквы сравниваются без учета регистра (только на этом этапе).
5. Этап 2 (точное/строгое сравнение): Имена файлов сравниваются лексикографически по следующим правилам:
a. Числа с одинаковым значением (но с разной последовательностью цифр) сравниваются лексикографически (01 < 1 < 02 < 2 < 10).
b. Нижний регистр каждой буквы предшествует верхнему регистру (a < A < b < B).
Теперь вам нужно написать метод "compare" для нашего желаемого алгоритма сортировки.
Входные данные
Каждый тестовый случай состоит из двух строк. Первая строка и вторая строка появляются на первой и второй строках соответственно. Обе строки содержат не более 255 алфавитно-цифровых символов. Ввод заканчивается на "###", который не должен обрабатываться.
Выходные данные
Для каждого тестового случая выведите '<', '=' или '>' (без кавычек) в одной строке, как описано ниже.
'<': если первая строка предшествует второй (в нашей желаемой сортировке)
'=': если две строки точно одинаковы
'>': если первая строка следует за второй (в нашей желаемой сортировке)