Introdução:
Em holandês, as palavras liderança e sofrimento, sendo 'leiden' e 'lijden', respectivamente, são pronunciadas da mesma maneira. Um é escrito com um "ei curto" e outro com um "ij longo" , como diríamos os holandeses, mas ambos 'ei' e 'ij' são pronunciados [ɛi].
Desafio:
Dada uma lista de números, determine quais (se houver) estão liderando e quais (se houver) estão sofrendo.
Um número inicial é:
- Um número positivo
- Tem pelo menos quatro dígitos
- Está nos 50% mais altos da lista em termos de valor
- Ainda está nos 50% mais altos da lista em termos de valor, se o terceiro dígito for substituído pelo segundo e a posição do segundo dígito for preenchida com um 0 (ou seja,
1234
se tornaria1024
)
Um número de sofrimento é:
- Um número negativo
- Tem pelo menos quatro dígitos
- Está nos 50% mais baixos da lista em termos de valor
- Ainda está nos 50% mais baixos da lista em termos de valor, se o terceiro dígito for substituído pelo segundo e a posição do segundo dígito for preenchida com um 0 (ou seja,
-4321
se tornaria-4031
)
Exemplo:
Entrada: [5827, 281993, 3918, 3854, -32781, -2739, 37819, 0, 37298, -389]
Saída: à esquerda [5827, 281993, 37819, 37298]
:; sofrimento:[-32781, -2739]
Explicação:
Se ordenarmos e dividirmos os números em duas metades, seria:
[[-32781, -2739, -389, 0, 3798], [3854, 3918, 5827, 37819, 281993]]
Existem apenas dois números negativos, com pelo menos quatro dígitos: [-32781, -2739]
. Alterar os dígitos como descrito acima não mudaria de posição, portanto, ambos estão sofrendo números.
Para a maior halve, todos os números têm pelo menos quatro dígitos: [3854, 3918, 5827, 37819, 281993]
. Alterar os dígitos, conforme descrito acima, alteraria algumas de suas posições. O resultado 3854
seria 3084
, colocando-o abaixo 3798
dos 50% mais baixos, portanto, 3854
este não é um número principal nesta lista. O mesmo se aplica ao 3918
que se tornaria 3098
, colocando-o também abaixo 3798
. Os outros três números estão à frente, como o 5827
que se tornaria 5087
, o qual ainda está acima 3798
e ainda está no mesmo índice da lista classificada. assim[5827, 37819, 281993]
são os números principais.
Regras do desafio:
- A E / S é flexível. A lista de entrada pode ser uma lista de números inteiros, listas de dígitos 2D, lista de cadeias, etc. A saída pode ser uma lista de listas de inteiros, duas listas separadas, duas cadeias, ambas impressas em STDOUT, etc.
- Ao determinar se um número está levando / sofrendo, apenas examinamos sua nova posição desse número se apenas seus dígitos forem alterados de acordo, não depois de aplicarmos as modificações em todos os números.
- Nós produzimos os números originais, não os modificados.
- Os números nas listas de saída iniciais e em sofrimento podem estar em qualquer ordem.
- Se o tamanho da lista de entrada for ímpar, o número no centro não pertence a nenhuma das duas partes.
- É garantido que os números permaneçam únicos após sua modificação. Portanto, uma lista como
[0, 1, 1045, 1485]
não é uma lista de entrada válida, pois1485
seria igual a1045
após a modificação.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Input: [5827, 281993, 3918, 3854, -32781, -2739, 37819, 0, 37298, -389]
Output: leading: [5827, 281993, 37819, 37298]; suffering: [-32781, -2739]
Input: [-100, 472, 413, -1782]
Output: leading: []; suffering: [-1782]
Input: [-1234, -1235, -1236, 1234, 1235, 1236]
Output: leading: [1234, 1235, 1236]; suffering: [-1234, -1235, -1236]
Input: [-1919, -1819, -1719, -1619, -1500, -1444, 40, 4444, 18]
Output: leading: [4444]; suffering: []
Input: [-1004, -1111, -1000]
Output: leading: []; suffering: [-1111]
Input: [-1004, -1111, -1010, 1000]
Output: leading: [1000]; suffering: [-1111]
Input: [1000, -1000]
Output: leading: [1000]; suffering: [-1000]
Input: [1000, -5000, 4000]
Output: leading: [4000]; suffering: [-5000]
fonte
Respostas:
05AB1E ,
2724232221 bytesExperimente online!
fonte
©
e em®Åm
vez do seuÅmUy
eX
para salvar um byte, mas agora você o removeuUX
também fazendo oÅm ... ‹y
depois do mapa, por isso é uma otimização semelhante. Na verdade, eu gosto mais da sua, pois, nesse caso, ela não usa variáveis desnecessárias. :)0šāǝ
! : D Nunca teria pensado nisso!D¦0š2Lǝ
, que é a mesma contagem de bytes queD1è0šāǝ
.Python 2 ,
119118111107 bytesExperimente online!
Saídas como
suffering, leading
.fonte
Gelatina , 30 bytes
Experimente online!
Dada a duração da resposta 05AB1E do Grimy , tenho certeza de que isso pode ser melhor, mas aqui está.
fonte
JavaScript (Node.js) , 162 bytes
Experimente online!
Função anônima que recebe uma matriz de números como entrada e gera uma matriz de 2 elementos como saída. O primeiro elemento na matriz de saída é uma matriz de números iniciais, o segundo elemento na matriz de saída é uma matriz dos seguintes números.
fonte