В углублениях символов Unicode существует блок Unicode, состоящий из (в настоящее время) 63 символов с именем «Числовые формы», который состоит из символов, которые имеют числовые значения, такие как римская цифра Ⅻ, вульгарные дроби, такие как ⅑ или ↉, или странные, такие как ↊ (10) или ↈ (100000).
Ваша задача - написать программу или функцию, которая при задании списка назначенных символов Unicode в этом блоке сортирует список по числовым значениям каждого символа.
(Сортируемый) список символов и значений можно найти на странице Википедии .
Чтобы быть самодостаточным, вот список кодовых точек и их значений:
Hex Char Value
0x00BC: ¼ = 1/4 or 0.25
0x00BD: ½ = 1/2 or 0.5
0x00BE: ¾ = 3/4 or 0.75
0x2150: ⅐ = 1/7 or 0.142857
0x2151: ⅑ = 1/9 or 0.111111
0x2152: ⅒ = 1/10 or 0.1
0x2153: ⅓ = 1/3 or 0.333333
0x2154: ⅔ = 2/3 or 0.666667
0x2155: ⅕ = 1/5 or 0.2
0x2156: ⅖ = 2/5 or 0.4
0x2157: ⅗ = 3/5 or 0.6
0x2158: ⅘ = 4/5 or 0.8
0x2159: ⅙ = 1/6 or 0.166667
0x215A: ⅚ = 5/6 or 0.833333
0x215B: ⅛ = 1/8 or 0.125
0x215C: ⅜ = 3/8 or 0.375
0x215D: ⅝ = 5/8 or 0.625
0x215E: ⅞ = 7/8 or 0.875
0x215F: ⅟ = 1
0x2160: Ⅰ = 1
0x2161: Ⅱ = 2
0x2162: Ⅲ = 3
0x2163: Ⅳ = 4
0x2164: Ⅴ = 5
0x2165: Ⅵ = 6
0x2166: Ⅶ = 7
0x2167: Ⅷ = 8
0x2168: Ⅸ = 9
0x2169: Ⅹ = 10
0x216A: Ⅺ = 11
0x216B: Ⅻ = 12
0x216C: Ⅼ = 50
0x216D: Ⅽ = 100
0x216E: Ⅾ = 500
0x216F: Ⅿ = 1000
0x2170: ⅰ = 1
0x2171: ⅱ = 2
0x2172: ⅲ = 3
0x2173: ⅳ = 4
0x2174: ⅴ = 5
0x2175: ⅵ = 6
0x2176: ⅶ = 7
0x2177: ⅷ = 8
0x2178: ⅸ = 9
0x2179: ⅹ = 10
0x217A: ⅺ = 11
0x217B: ⅻ = 12
0x217C: ⅼ = 50
0x217D: ⅽ = 100
0x217E: ⅾ = 500
0x217F: ⅿ = 1000
0x2180: ↀ = 1000
0x2181: ↁ = 5000
0x2182: ↂ = 10000
0x2183: Ↄ = 100
0x2184: ↄ = 100
0x2185: ↅ = 6
0x2186: ↆ = 50
0x2187: ↇ = 50000
0x2188: ↈ = 100000
0x2189: ↉ = 0
0x218A: ↊ = 10
0x218B: ↋ = 11
Тестовые случаи:
['½','ↆ','ↂ','⅒','Ⅽ','⅑','ⅷ'] -> ['⅒','⅑','½','ⅷ','ↆ','Ⅽ','ↂ']
['¼','↋','↉','ↅ','⅐','⅟','Ⅻ','ⅺ'] -> ['↉','⅐','¼','⅟','ↅ','↋','ⅺ','Ⅻ']
['¼','½','¾','⅐','⅑','⅒','⅓','⅔','⅕','⅖','⅗','⅘','⅙','⅚','⅛','⅜','⅝','⅞','⅟'] -> ['⅒','⅑','⅛','⅐','⅙','⅕','¼','⅓','⅜','⅖','½','⅗','⅝','⅔','¾','⅘','⅚','⅞','⅟']
'⅞ⅾ↊ↄⅨⅮⅺↁⅸⅰⅩⅱⅶ¾ⅧↅↃ↋ↆ⅔ⅼⅲ⅘⅒ⅽⅦ⅕ⅤⅭⅳↂⅪⅬⅯↇⅠⅷ⅛Ⅵ½ⅵ¼ⅻ⅐Ⅱ⅜⅗⅝⅚Ⅳ⅓ⅴ↉ⅿⅫⅹↀↈ⅙⅑Ⅲ⅖⅟' -> '↉⅒⅑⅛⅐⅙⅕¼⅓⅜⅖½⅗⅝⅔¾⅘⅚⅞⅟ⅠⅰⅡⅱⅢⅲⅣⅳⅤⅴⅥⅵↅⅦⅶⅧⅷⅨⅸⅩⅹ↊Ⅺⅺ↋ⅫⅻⅬⅼↆⅭⅽↄↃⅮⅾⅯⅿↀↁↂↇↈ'
['Ↄ','ↄ','↊','↋'] -> ['↊','↋','ↄ','Ↄ']
Обратите внимание, что четыре символа (используемые в последнем случае) не являются числами в юникоде, хотя они по-прежнему имеют числовое значение, поэтому обязательно проверяйте его перед публикацией встроенного.
Правила:
- Если в будущем этому блоку будет назначено больше символов, вам не нужно будет обновлять свой код для их поддержки.
- Порядок символов с одинаковыми значениями не имеет значения.
- IO гибкий .
- Вывод должен быть в виде символов, а не числовых значений
- Стандартные лазейки запрещены.
- Я не запрещаю встроенные модули, которые могут получить числовое значение символа, но я рекомендую также добавить не встроенный ответ, если это возможно.
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах для каждого языка! Удачи!