TL; DR
- Registro (esquerda-direita) / comprimento para cada par de elementos consecutivos. Se forem 0 ou negativos, não registre.
- Feito isso, execute essas ações. Não atualize quocientes:
- Incrementar à direita e decrementar à esquerda para (0, .3)
- Remova da matriz em> =. 3
- Imprimir ambos os elementos para> .5
- Imprima a matriz restante. Tenha algum separador para executado e restante.
Agora, para o desafio ...
Este é o algoritmo de classificação que tem o pior caso de GLORIOSO TEMPO LINEAR , e onde qualquer um que ousar se opor à SABEDORIA INFINITA será prontamente EXECUTADO por seu CRIME HONESTO DE ALTA TREINAÇÃO .
O LEADER FEARLESS encarregou você da MISSÃO HONORÁVEL de escrever um programa ou função que recebe uma matriz de números inteiros e a classifica usando o seguinte algoritmo de classificação:
- Itere através de sua matriz, iluminando cada elemento com a presença GLORIOSA de seu LÍDER SEM MEDO .
- Faça com que sua POLÍCIA SECRETA verifique cada par de 2 elementos consecutivos para garantir que eles sejam apropriadamente leais à sua nação . Se eles não estiverem ordenados corretamente, registre a diferença entre os números, divididos pelo comprimento da matriz. Este é o quociente da dissidência deles.
- No final do seu TOUR GLORIOSO , percorrer a lista e DO DIVINO RAIN sem medo do líder PUNIÇÃO em toda a traição dissidentes da seguinte forma:
- Para um quociente dissidente inferior a 0,3, eles apenas precisam
fazerumalavagem cerebral nalembrança da GLÓRIA INFINITA DO LÍDER SEM MEDO . Decremente o elemento esquerdo e aumente o elemento direito. Não altere nenhum quociente de dissidência. - Para um quociente de dissidência de 0,3 a 0,5 (inclusive), eles são TRAITORES e devem ser enviados para o PRISON CAMPS . Remova-os da matriz.
- Para um quociente de dissidência maior que 0,5, eles são ODIOUS REBEL SCUM . Eles devem ser EXECUTADOS PUBLICAMENTE como um exemplo para qualquer outro heregário que eles possam ter aliado. Remova-os da matriz e envie-os para a fonte de notícias nacional, The STDOUT Times.
- Para um quociente dissidente inferior a 0,3, eles apenas precisam
- Sua matriz agora está classificada COMPLETAMENTE E PARA SEMPRE . Envie para o The STDOUT Times para que eles possam cantar sua VITÓRIA GLORIOSA .
Como VISÃO OBRIGATÓRIA para aqueles que são muito tolos para entender a GLÓRIA INFINITA deste algoritmo, ela será usada para classificar a seguinte matriz:
[1,8,6,0,4,9,3,5,7,2]
- 1 e 8 estão ordenados corretamente.
- 8 e 6 não estão ordenados corretamente, então o quociente de dissensão de .2 é registrado para os dois.
- 6 e 0 são outro par de dissidentes. Este quociente de dissidência é 0,6.
- 0 e 4 estão ordenados corretamente.
- 4 e 9 estão ordenados corretamente.
- 9 e 3 têm um quociente de dissidência de .6.
- 3 e 5 estão ordenados corretamente.
- 5 e 7 estão ordenados corretamente.
- 7 e 2 têm um quociente de dissidência de 0,5.
Portanto, você executa as seguintes ações em nome do LEADER FEARLESS :
- Diminua 8 a 7 e aumente 6 a 7.
- Remova 0 e o novo 7 e EXECUTE-OS .
- Siga com 9 e 3.
- Leve os 7 e os 2 originais para os campos de reeducação e remova-os.
Este deve ser o seu comunicado de imprensa, feito no STDOUT ou o que for conveniente:
Executions: 7, 0, 9, 3
[1, 7, 4, 5]
Como você pode ver, a matriz resultante é COMPLETAMENTE E SORTIDA PARA SEMPRE . Tentar sugerir que não está classificado constitui HIGH TREASON .
Agora, como um DEMONSTRAÇÃO GLORIOSO dos RECURSOS INTERMINÁVEIS dadas pelo líder destemido , ele forneceu sua infinita sabedoria na geração de casos de teste:
import random
len=random.randint(2,20)
arr=list(range(len))
random.shuffle(arr)
print(arr)
dissent=[(arr[i]-arr[i+1])/len for i in range(len-1)]
dissent.append(0) # Barrier between front and back of the array.
executions=[]
for i in range(len-1):
if dissent[i] > 0:
if dissent[i] < 0.3:
arr[i] -= 1
arr[i+1] += 1
elif dissent[i] > 0.5:
if dissent[i-1] <= 0.5:
executions.append(arr[i])
executions.append(arr[i+1])
print([arr[i] for i in range(len) if dissent[i] < 0.3 and dissent[i-1] < 0.3])
print(executions)
Experimente on-line - pressione o botão de execução para usar, caso contrário, você está obtendo o que a última pessoa recebeu.
No interesse do stare desecis, o FEARLESS LEADER também forneceu um exemplo de caso:
Input Output
3,2,1,4,4,1,2,3,4,5 2,2,2,4,2,3,4,5
(Não há execuções neste exemplo.)
Por fim, você deve tratar os bytes em seu programa como principais apoiadores e minimizá-los. O programa mais curto em bytes ganhará o FAVOR ETERNO DO LÍDER SEM MEDO .
Crédito onde é devido
O conceito para isso foi inspirado em Lazy Drop Sort , e o estilo de escrita usado foi amplamente retirado das ditaduras psicóticas - visite-as se você gostou do aspecto paródico disso.
Crédito adicional vai para todos que votaram nisso no Sandbox desde o início. O +8 alcançado foi minha motivação para reescrevê-lo para evitar duplicação.
Respostas:
Ruby ,
146135 bytesExperimente online!
fonte