Dada uma lista de strings, classifique a lista como números sem saber qual base é usada. Os valores dos dígitos também são desconhecidos (é possível que '1'
> '2'
).
Como os valores dos dígitos são desconhecidos, use a Lei de Benford (ou Lei dos Primeiros Dígitos) para determinar o valor relativo dos dígitos. Para distribuições que seguem a Lei de Benford, os dígitos com valores mais baixos aparecem como um dígito inicial com mais frequência do que os dígitos com valores mais altos.
Regras
- Isso é código-golfe
- A lista de strings pode vir de uma fonte de sua escolha (stdin, variável, arquivo, usuário, etc.)
- As cadeias são limitadas a caracteres ASCII.
- Os caracteres que não aparecem como um caractere à esquerda têm os valores mais altos. (suponha que não haja zeros e classifique estritamente pela frequência inicial).
- Os caracteres que aparecem como dígitos iniciais no mesmo número de vezes que os outros caracteres têm o mesmo peso.
Exemplo
não triados
['c','ca','ac','cc','a','ccc','cx','cz','cy']
Classificado
['c','a','cc','ca','cz','cy','cx','ac','ccc']
Nota: No exemplo, 'cz'
, 'cy'
e 'cx'
pode aparecer como a 5ª, 6ª e 7ª elementos em qualquer ordem, desde os dígitos 'x'
, 'y'
e 'z'
têm o mesmo peso.