我们都知道不同的花式排序算法,但是这些算法都没有以易于发音的方式为我们提供数字。为了解决这个问题,我建议使用VoiceSort™,这是对数字列表进行排序的最自然的方法。
发音
发出数字的正式规则(在此挑战中)是数字被一个一个地发音,并且结果字符串按字典顺序排序。例如,这意味着该数字845
是发音的"eight four five"
,应进行相应的排序。
负数
负数是通过在单词前面加上字母来发音的"minus"
。因此,-23
发音为"minus two three"
。请注意,这会导致负数最终出现在输出的中间,正好在以4
(4)和9
(9)开头的数字之间。
作为指导,ForeignSort™的正式词序为:
- 八
- 五
- 四
- 减去
- 九
- 一
- 七
- 六
- 三
- 二
- 零
那是,
8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0
输入项
范围为的整数列表,最多包含100个元素。不允许输入为字符串列表。如果您的语言不支持输入为列表,则可以将输入作为单独的整数输入。
输入将不包含任何无效数字或任何以0开头的数字(数字本身除外)。输入通常不会排序,可以按任何顺序给出。
输出量
相同的整数,以VoiceSort™顺序排列。请注意,仅应将数字转换为其发音以进行排序,输出不应包含任何字符串。
例子
对于示例,中间步骤(用括号括起来)仅用作指导,而不是输出的一部分。
[1, 2, 3] -> (['one', 'two', 'three']) -> [1, 3, 2]
[-1, 0, 1, 2] -> (['minus one', 'zero', 'one', 'two']) -> [-1, 1, 2, 0]
[-100, 45, 96] -> (['minus one zero zero', 'four five', 'nine six']) -> [45, -100, 96]
[11, 12, 13, 134, 135] -> (['one one', 'one two', 'one three', 'one three four', 'one three five']) -> [11, 13, 135, 134, 12]
还有一个脚本可以验证您的结果。