Biorąc pod uwagę listę ciągów, posortuj listę jako liczby, nie wiedząc, która baza jest używana. Wartości cyfr również nie są znane (możliwe, że '1'
> '2'
).
Ponieważ wartości cyfr są nieznane, użyj prawa Benforda (lub prawa pierwszej cyfry), aby określić względną wartość cyfr. W przypadku dystrybucji zgodnych z prawem Benforda cyfry o niższej wartości pojawiają się jako cyfra wiodąca częściej niż cyfry o wyższej wartości.
Zasady
- To jest golf golfowy
- Lista ciągów może pochodzić z wybranego przez ciebie źródła (standard, zmienna, plik, użytkownik itp.)
- Ciągi znaków są ograniczone do znaków ASCII.
- Postacie, które nie pojawiają się jako bohater wiodący, mają najwyższe wartości. (zakładając, że nie ma zer i sortuj ściśle według częstotliwości wiodącej).
- Znaki, które pojawiają się jako cyfry wiodące tyle samo razy, co inne znaki, są ważone jednakowo.
Przykład
Nieposortowany
['c','ca','ac','cc','a','ccc','cx','cz','cy']
Posortowane
['c','a','cc','ca','cz','cy','cx','ac','ccc']
Uwaga: W tym przykładzie 'cz'
, 'cy'
a 'cx'
może pojawić się jako 5., 6. i 7. elementów w dowolnej kolejności od cyfr 'x'
, 'y'
i 'z'
są równo ważone.
Odpowiedzi:
Python, 59
108112Dane wejściowe są dostarczane jako lista
a
, a to wyrażenie tworzy posortowaną listę (+2 znaki do przypisania do zmiennej). To sortuje listę w odwrotnej kolejności według zanegowanej długości, a następnie według częstotliwości.źródło
zip
zNone
. Chociaż nie działa w Pythonie 3, którego by użyłitertools.zip_longest
.None
nie można porównać do liczb całkowitych w Pythonie 3, więc i tak się nie powiedzie.fillvalue
musiałaby być ustawiona na coś mniejszego niż najmniejsza wartość.Ruby, 65
Sortuje leksykograficznie według wielkości łańcucha, a następnie częstotliwości każdego znaku jako nie cyfry wiodącej.
źródło
Java (261)
Metody pobierają tablicę ciągów i sortują tablicę na miejscu. W implementacji nie ma nic wymyślnego, ale korzysta on z wyrażeń lambda dodanych do Java 8.
źródło
JavaScript (E6) 147
Limit
Wartości częstotliwości do 1000000000: do sortowania wartości częstotliwości są łączone w duży, wyściełany ciąg
Nie golfił
X-~
Przyrost sidenotyczny o 1, nawet jeśli pierwotny numer X jest niezdefiniowany lub NaNStosowanie
Wynik:
["c", "a", "cc", "ca", "cx", "cz", "cy", "ac", "ccc"]
źródło