TL; DR
- Registro (izquierda-derecha) / longitud para cada par de elementos consecutivos. Si son 0 o negativos, no lo grabe.
- Una vez hecho esto, tome estas medidas. No actualice los cocientes:
- Incremento a la derecha y decremento a la izquierda para (0, .3)
- Eliminar de la matriz en> =. 3
- Imprima ambos elementos para> .5
- Imprime la matriz restante. Tener un separador para ejecutar y restante.
Ahora, en el desafío ...
Este es el algoritmo de ordenación que tiene un peor caso de GLORIOSO tiempo lineal , y donde cualquiera que se atreve a oponerse a su infinita sabiduría será rápidamente EJECUTADO por su atroz crimen de alta traición .
The FEARLESS LEADER le ha encomendado la MISIÓN HONORABLE de escribir un programa o función que tome una serie de enteros y los clasifique utilizando el siguiente algoritmo de clasificación:
- Iterar a través de la matriz, que alumbra cada elemento con el GLORIOSO presencia de su líder audaz .
- Haga que su POLICÍA SECRETA verifique cada par de 2 elementos consecutivos para asegurarse de que sean CORRECTAMENTE LEALES A SU NACIÓN . Si no están ordenados correctamente, registre la diferencia entre los números, dividida por la longitud de la matriz. Este es su cociente disidente.
- Al final de su GLORIOSO TOUR , revise la lista y LLEGUE EL DIVINO CASTIGO DEL LÍDER IMPERMEABLE en todos los DISIDENTES TREASONOS de la siguiente manera:
- Para un cociente disidente de menos de .3, simplemente necesitan un
lavado de cerebrocomo recordatorio de la GLORIA INFINITA DEL LÍDER SIN MIEDO . Disminuya el elemento izquierdo e incremente el elemento derecho. No cambie ningún cociente disidente. - Para un cociente disidente de .3-.5 (inclusive), son TRAIDORES y deben enviarse a CAMPAMENTOS DE PRISIÓN . Eliminarlos de la matriz.
- Para un cociente disidente mayor que .5, son ESCORRIDAS REBELDE ODIOSAS . Deben EJECUTARSE PÚBLICAMENTE como un ejemplo para cualquier otro HERETIS TREASONO con el que se hayan aliado. Elimínelos de la matriz y envíelos a la fuente nacional de noticias, The STDOUT Times.
- Para un cociente disidente de menos de .3, simplemente necesitan un
- Su matriz ahora está COMPLETAMENTE Y SIEMPRE ordenada. Envíalo a The STDOUT Times para que puedan cantar tu GLORIOSA VICTORIA .
Como VISIÓN OBLIGATORIA para aquellos que son demasiado TONOS como para comprender la GLORIA INFINITA de este algoritmo, se usará para ordenar la siguiente matriz:
[1,8,6,0,4,9,3,5,7,2]
- 1 y 8 están ordenados correctamente.
- 8 y 6 no están ordenados correctamente, por lo que el cociente disidente de .2 se registra para ambos.
- 6 y 0 son otro par de disidentes. Este cociente disidente es .6.
- 0 y 4 están ordenados correctamente.
- 4 y 9 están ordenados correctamente.
- 9 y 3 tienen un cociente disidente de .6.
- 3 y 5 están ordenados correctamente.
- 5 y 7 están ordenados correctamente.
- 7 y 2 tienen un cociente disidente de .5.
Entonces, tomas las siguientes acciones en nombre del LÍDER SIN MIEDO :
- Disminuya de 8 a 7 e incremente de 6 a 7.
- Eliminar 0 y el nuevo 7, y EJECUTARLOS .
- Sigue con 9 y 3.
- Lleva los 7 y los 2 originales a los campos de reeducación y retíralos.
Este debería ser su comunicado de prensa, hecho en STDOUT o lo que sea conveniente:
Executions: 7, 0, 9, 3
[1, 7, 4, 5]
Como puede ver, la matriz resultante está COMPLETAMENTE Y SIEMPRE CLASIFICADA . Intentar sugerir que no está ordenado constituye ALTA TREASON .
Ahora, como una GLORIOSA DEMOSTRACIÓN de los RECURSOS INTERMITENTES proporcionados por el LÍDER SIN MIEDO , él le ha proporcionado su SABIDURÍA INFINITA para generar casos de prueba:
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)
Pruébelo en línea : presione el botón Ejecutar para usarlo; de lo contrario, obtendrá lo que obtuvo la última persona.
En aras de stare desecis, FEADLESS LEADER también ha proporcionado un ejemplo de caso límite:
Input Output
3,2,1,4,4,1,2,3,4,5 2,2,2,4,2,3,4,5
(No hay ejecuciones en este ejemplo).
Finalmente, debe tratar los bytes en su programa como partidarios clave y minimizarlos. El programa más corto en bytes ganará el FAVOR ETERNO DEL LÍDER SIN MIEDO .
Crédito donde es debido
El concepto para esto se inspiró en Lazy Drop Sort , y el estilo de escritura utilizado fue tomado en gran parte de las Dictaduras psicóticas. Visítelos si disfrutó el aspecto de parodia de esto.
El crédito adicional es para todos los que votaron sobre esto en el Sandbox desde el principio. El +8 que alcanzó fue mi motivación para reescribirlo para evitar duplicaciones.
Respuestas:
Ruby ,
146135bytesPruébalo en línea!
fuente