Wszyscy znamy różne fantazyjne algorytmy sortowania, ale żaden z nich nie podaje liczb w sposób łatwy do wymówienia. Aby temu zaradzić, proponuję użycie WymowaSort ™, najbardziej naturalnego sposobu sortowania list liczb.
Wymowa
Oficjalne zasady wymawiania liczb (w tym wyzwaniu) są takie, że cyfry wymawiane są jeden po drugim, a powstały ciąg jest sortowany w kolejności leksykograficznej. Jako przykład oznacza to, że liczba 845
jest wymawiana "eight four five"
i powinna być odpowiednio posortowana.
Liczby ujemne
Liczby ujemne wymawia się, dodając słowo "minus"
. Dlatego -23
wymawia się jako "minus two three"
. Zauważ, że powoduje to, że liczby ujemne kończą się na środku wyniku, dokładnie między liczbami zaczynającymi się od 4
(czterech) i 9
(dziewięciu).
Tytułem przewodnika, oficjalna kolejność słów dla WymowaSort ™ to:
- osiem
- pięć
- cztery
- minus
- dziewięć
- jeden
- siedem
- sześć
- trzy
- dwa
- zero
To jest,
8, 5, 4, -, 9, 1, 7, 6, 3, 2, 0
Wkład
Lista liczb całkowitych z zakresu , zawierająca maksymalnie 100 elementów. Wprowadzanie jako lista ciągów jest niedozwolone. Jeśli twój język nie obsługuje wprowadzania jako listy, dozwolone jest podawanie danych jako oddzielnych liczb całkowitych.
Dane wejściowe nie będą zawierać żadnych nieprawidłowych liczb ani żadnej liczby rozpoczynającej się od 0 (z wyjątkiem samej liczby 0). Dane wejściowe na ogół nie będą sortowane, można je podać w dowolnej kolejności.
Wydajność
Te same liczby całkowite, w kolejności WymowaSort ™. Zauważ, że liczby powinny być konwertowane tylko na ich wymowy, aby uzyskać sortowanie, dane wyjściowe nie powinny zawierać żadnych ciągów.
Przykłady
W przykładach środkowy krok (owinięty w nawiasy) służy jedynie jako wskazówka i nie jest częścią wyniku.
[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]
Istnieje również skrypt do weryfikacji wyników .