Su entrada es una lista / secuencia / vector / matriz de 5-255 enteros positivos, no necesariamente únicos. Puede suponer el formato de entrada más adecuado y que cada número entero (así como la cantidad de números enteros) se elige de manera uniforme al azar del rango 5-255.
El objetivo es generar la misma lista, en el mismo formato (o equivalente), pero ordenada en orden creciente (no decreciente). Un ejercicio temprano común para aprender un idioma. Envíos para incluir:
Una respuesta que funciona correctamente y logra el objetivo; y
Una segunda respuesta que contiene un error molesto. Entre el 1% y el 10% del tiempo, la salida debe ser una lista en el formato correcto y que contenga los elementos correctos, pero en el orden incorrecto (cualquier orden, excepto los ordenados correctamente). El resto del tiempo, el programa debe funcionar correctamente y alcanzar el objetivo.
Las dos respuestas deben tener Levenshtein distancia uno; es decir, podemos obtener uno del otro eliminando un byte, o agregando un byte, o cambiando un byte.
Anotar como de costumbre en code-golf (basado en la menor de sus dos respuestas), con las lagunas habituales prohibidas.
10% de bonificación (disminución de puntaje) si el molesto error es independiente de la entrada, es decir, usar la misma entrada nuevamente no reproduce el error (excepto entre 1% y 10% del tiempo).
fuente
[5,5,5]
es imposible producir el orden incorrectoRespuestas:
Python 3 , 36 bytes
Versión libre de errores, 37 bytes
Pruébalo en línea!
Versión molesta, 36 bytes
Pruébalo en línea!
Esto depende de la entrada y, por lo tanto, no califica para el bono.
Tiene una probabilidad de alrededor del 2% de fallar. Falla cuando la longitud de entrada es inferior a 10.
En combinación con la respuesta de LyricLy, esto obtiene 34 bytes:
fuente
or1
se interpretará como un nombre de variable y generará un error de sintaxis.05AB1E , 5 * 0.9 = 4.5 bytes
Solución de trabajo
Pruébalo en línea!
Explicación
Solución que contiene el error
Da la solución incorrecta el 10% del tiempo (independiente de la entrada)
Pruébalo en línea!
Explicación
Igual que la solución de trabajo, excepto que invierte la lista si el número elegido es verdadero.
fuente
100F
y un pie de página},
que nos ayudan a visualizar el resultado de la función llamada en la entrada varias veces. Esto nos muestra que la solución de trabajo siempre devuelve resultados correctos, mientras que la solución de error tiene una salida defectuosa.Gelatina , 7 * (100% - 10%) = 6.3 bytes
Pruébalo en línea!
Versión con errores:
Pruébalo en línea!
En ambos enlaces, hay un arnés de prueba que ejecutará el código 100 veces, cada vez con la lista que proporcione como argumento, y luego devolverá los resultados.
La probabilidad de cada longitud de entrada es:
Entonces, para la longitud 1 hay una probabilidad de 0%, para la longitud 2 5%, para la longitud 3 8.83̅%, para la longitud 4 9.583̅%, etc. hasta la longitud ∞ que tiene una probabilidad del 10%.
fuente
0.1 - 0.1/(length!)
.Ṣ⁵X’¤¡
yṢ⁵X¤¡
debería funcionar también: la versión con errores devuelve la lista sin clasificar <10% del tiempo, y dado que la entrada se elige de manera uniforme al azar, debería funcionar, guardar 2 bytes.¹
para guardar 1 byte (el número de conteo de regla de byte = el más corto); También hay una overline combinando extraño después de la segunda6
en6.6̅%
.¹
" porque entonces no se ordenaría el 10% del tiempo.Python 3, puntaje
5857 - 10% = 51.3Salvó un byte gracias a los ovs.
Versión libre de errores, 57 bytes
Pruébalo en línea!
Versión con errores, 57 bytes
Pruébalo en línea!
Decidí probar una solución que usa la bonificación. No supera la otra respuesta de Python, pero me divertí pensando en ello.
fuente
C, 71 * 0.9 = 63.9 bytes
Libre de errores:
Pruébalo en línea!
Calesa:
Pruébalo en línea!
fuente
Groovy , 31 bytes
Solución con errores:
Solución de trabajo:
El operador de subíndice Groovy (el
getAt
método) devuelve nulo para las listas si el índice es mayor que el tamaño. Entonces, si hay un noveno elemento, se mantendrá igual que la lista ordenada, pero si no (1.99203187% de probabilidad) se revertirá. Sin embargo, siempre habrá un primer elemento porque el tamaño de la lista siempre es mayor o igual a 5. Por lo tanto, el 0 ena[0]
podría intercambiarse con 1, 2, 3 o 4.fuente
Wolfram Language (Mathematica) , 29 bytes
Esto es 26.1 bytes con el bono, pero no estoy completamente seguro de ganar el bono; en una entrada ya ordenada, ambas versiones siempre producen una salida ordenada.
Versión libre de errores (29 bytes)
Pruébalo en línea!
Versión molesta (30 bytes)
Pruébalo en línea!
fuente
PHP, 70 bytes
Versión libre de errores, 70 bytes
Pruébalo en línea!
Versión con errores, 70 bytes
Pruébalo en línea!
La versión con errores se ordena en orden inverso el 10% del tiempo (según un generador de números aleatorios).
fuente
-r
(-2 bytes). unirse por subrayado; eso debería ser equivalente (-2 bytes). usar enasort
lugar desort
(-1 byte).unset($argv[0]);(rand(1,9)?sort:rsort)($argv);echo join(_,$argv);
(también 65 bytes)Python 2 , 26 bytes
Calesa:
Pruébalo en línea!
Salidas modificando la lista de entrada . Ordena la lista solo si su longitud es de al menos 10. La versión sin errores reemplaza la
9
con a0
para ordenar siempre.Trabajando:
Pruébalo en línea!
Podemos modificar la función para devolver la lista a un costo de 4 bytes, para un total de 30 bytes:
Pruébalo en línea!
25 bytes con algunos tramos de las reglas:
Pruébalo en línea!
Emite una función literal que ordena o es la identidad, que se utiliza
id(0)
como fuente aleatoria. Cambie>
a>=
para arreglar, o0
a~0
.fuente
Cáscara , 6 bytes
Versión con errores:
Pruébalo en línea!
Versión correcta:
Pruébalo en línea!
Explicación
Estos programas son completamente deterministas. De hecho, Husk actualmente no tiene ningún soporte para números aleatorios.
Afirmo que la salida del programa con errores no está ordenada con una probabilidad entre 1% y 2%. Denote por N = 251 el número de valores posibles de los elementos. La probabilidad de que una lista aleatoria de longitud L no contenga múltiplos de 9 es ((NK) / N) ^ L , donde K es el número de valores divisibles por 9 (en nuestro caso K = 28 ). La probabilidad total es el promedio de esto para 5 ≤ L ≤ 255 , que es aproximadamente 1.98%. Algunas de estas listas son falsos positivos, ya que ya están ordenadas. La probabilidad de que se clasifique una lista aleatoria de longitud L es como máximo ((N + N * (N-1) / 2) / N ^ 2) ^ ⌊L / 2⌋ : si dividimos la lista en trozos de longitud 2, cada uno de losLos ⌊L / 2⌋Los trozos deben ser ordenados. La probabilidad total de que se ordene una lista está limitada por el promedio de lo anterior para 5 ≤ L ≤ 255 , que es aproximadamente 0.30%. Por lo tanto, la probabilidad de que la función devuelva una lista no ordenada está entre 1.67% y 1.98%.
fuente
↓9
lugar deV¦9
, y acortarlo solo9
para la versión correcta? Esto haría que siempre fallara en entradas cortas y siempre funcionara correctamente en entradas más largas, pero dado que la longitud de entrada sigue una distribución aleatoria, todavía debería ser una respuesta válidaGolpetazo , 26 bytes
Versión correcta
Pruébalo en línea! o verificar las probabilidades .
Versión con errores
Pruébalo en línea! o verificar las probabilidades .
Toma datos como números separados por nueva línea. Utiliza la variable integrada
RANDOM
, que siempre devuelve un número (pseudo) aleatorio en el rango de 0 a 32767 . Usando%20
resultados en una tasa de falla de aproximadamente 5% (gracias @Titus por aclarar problemas con%10
).Esta aleatoriedad significa que la tasa de falla es independiente de la entrada, pero esto requiere que la matriz de entrada incluya al menos un número con más de un dígito, porque la salida de falla se ordena lexicográficamente.
Versión alternativa, 27 bytes.
La versión con errores reemplaza la
+
con a%
. Pruébelo en línea o inténtelo con errores .fuente
%10
tiene una mayor probabilidad de volver0
a7
que8
o9
, por lo que la posibilidad de fallo está por encima de 10%;)%20
como lo hace su respuesta.Pyth , puntaje 8 * 0.9 = 7.2
Primer fragmento (correcto):
Pruébalo aquí!
Segundo fragmento (uno molesto):
Pruébalo aquí!
¡ Ahorró dos bytes (y 1,8 puntos) gracias a isaacg !
fuente
.S
devolver la entrada sin cambios significa que en esos casos (raros), nuestras posibilidades de obtener la respuesta incorrecta caen del 10% al 0%, por lo que, en promedio, todavía está en el rango correcto. Por supuesto, 10 copias también están bien..S
que también podría devolver la entrada en sí (lo que no sería un problema), pero quise decir.S
que también podría devolver la lista ordenada .O.uSNT.S
JavaScript (ES6), 24 bytes
Versión libre de errores (al menos para enteros en el rango 0-2147483647, por lo que cualquier cosa en el rango dado):
Versión con errores:
Depende de a) el algoritmo de clasificación del motor yb) la lista de entrada que contiene dos valores en el orden incorrecto que difieren en 1. (Si la probabilidad de que eso sea demasiado baja, entonces
1
puede aumentar, pero para cuando llegue a8
que simplemente no va a solucionar nada en el rango5-255
).fuente
PHP, 62 bytes
inspirado en la solución de Jo (y acabo de notar: es un puerto de Justin Mariner ):
trabajando (tipo ascendente):
buggy (aprox. 5% de probabilidad de descender):
Corre con
-nr
fuente
Pushy , 9 bytes - 10% = 8.1
Solución Bugged:
Pruébalo en línea!
Solución de trabajo:
Pruébalo en línea!
El código con errores hace lo siguiente:
El código fijo simplemente cambia
0
a1
. Comorandom(1, 10)
nunca será0
, la instrucción if nunca se ejecutará.fuente
MATL ,
7 * 0.9 = 6.36 * 0.9 = 5.4 bytesVersión con errores:
Pruébalo en línea!
Explicación:
Versión libre de errores:
Pruébalo en línea!
Explicación:
fuente
Jq 1.5 , 42 bytes
Calesa
Trabajando (eliminar el =)
Suponiendo que las longitudes de línea son uniformes en el rango [5,255] aproximadamente el 7% activará el error
Pruébalo en línea!
fuente
J, 22.5 bytes (25 bytes - 10%)
con error:
sin error:
Pruébalo en línea!
fuente
R , 30 * .9 = 27 bytes
(calesa)
Pruébalo en línea!
(no con errores)
La versión con errores se clasifica en el
decreasing=T
10% del tiempo, tomando muestras de una distribución uniforme (0,1). La versión sin errores es siempredecreasing=F
fuente
Röda , 42 bytes - 10% = 37.8
Libre de errores:
Calesa:
Pruébalo en línea!
Esto usa la
currentTime
función para crear números aleatorios. Parece que su distribución varía un poco entre máquinas. La relación20//19
se puede ajustar para obtener resultados diferentes sin penalización por byte (a menos que sea menor que99//98
).fuente
Octava , 36 * 0.9 = 32.4 bytes
Versión con errores:
Pruébalo en línea!
Versión libre de errores:
Pruébalo en línea!
Esto ordena el vector, luego desplaza todos los números uno a la derecha si un número aleatorio es menor que 0.1.
fuente
Java 8,
4534.2 (5038 - 10%) bytesVersión normal:
Explicación:
Pruébalo aquí
Versión con errores (
5139 bytes):LD de 1:
1
agregado.Explicación:
Pruébalo aquí
fuente
JavaScript, 25 * 0.9 = 22.5
entrada x
fuente