Zainspirowany niefortunnym sortowaniem liczb-cyfr-bez-użycia-macierzy , ale pomyślałem, że to lepszy kod do gry w golfa niż pytanie SO.
Biorąc pod uwagę dodatnią liczbę całkowitą, posortuj cyfry w tej liczbie całkowitej.
Najniższy wynik wygrywa!
- Zacznij od 0 punktów.
- Dodaj jeden punkt na znak.
- Dodaj 20 punktów za każdą używaną tablicę.
- Dodaj 10 punktów za każdy ciąg wieloznakowy w kodzie. (Z wyjątkiem początkowego wejścia, o ile jest ono konwertowane na liczbę całkowitą bez żadnych innych operacji na nim wykonanych).
- Dodaj 32 punkty, jeśli maksymalna liczba cyfr obsługiwanych przez Twój program jest ograniczona przez Twój program (w przeciwieństwie do maszyny).
- Odejmij 10 punktów, jeśli Twój kod może zmienić kierunek sortowania, podając inny argument (cokolwiek chcesz, ale na przykład 0 dla sortowania malejącego i 1 dla rosnąco).
Każdy język jest inny, ale chodzi o to, by unikać wszelkiego rodzaju hackerów z cyframi wielokrotnymi.
Przykład:
Wejście : 52146729
Wyjście : 97654221 lub 12245679
Uwagi:
- Użyj wbudowanych funkcji sortowania dostępnych w języku programowania, ale jeśli ta funkcja sortowania obejmuje łańcuchy lub tablice, weź karę!
- Możesz napisać rozwiązanie jako funkcję, która pobiera liczbę całkowitą bezpośrednio, lub jako program, który pobiera argument z argv, pliku lub strumienia i konwertuje go na liczbę całkowitą. Tak długo, jak natychmiast zamienisz go na liczbę całkowitą i odrzucisz oryginalne wejście char * bez wykonywania dalszych operacji na nim, nie będzie obowiązywać kara.
- Kary mają zastosowanie nie tylko do literałów łańcuchowych w tekście programu, ale także do dowolnej części funkcji programu, która prawdopodobnie wprowadza lub wyprowadza ciąg znaków lub jest iterowalna. Na przykład JavaScript
String.prototype.splitma co najmniej jeden ciąg jako input (this) i tablicę jako wynik, więc +30 za użycie tego. - Starałem się, aby te reguły kierowały zasadą projektowania algorytmów, a nie początkowymi / końcowymi operacjami wejścia / wyjścia (stąd uwaga 2). Nie sądzę, że kara powinna obowiązywać,
int(input())nawet jeśliinputpodpis mówi, że zwraca ciąg znaków, o ile to wyrażenie jest początkowym punktem wejścia programu. Podobnie, jeśli końcowym wyjściem programu jestprint(x)ixmusi być ciąg, kara nie dotyczy operacji odlewania ciągu z ostatniego rowu. To powiedziawszy, ja nigdy nie powiedziałem, że to musi być program, albo skąd I / O musiało pochodzić lub iść. Funkcja, która przyjmujeinti zwraca anint, służyłaby i nie cierpiałaby z powodu tych dwuznaczności.

" "liczy się jako ciąg wieloznakowy ? Pojedyncza postać nie byłaby uważana za „multi” ...