Sobre la serie
En primer lugar, puede tratar esto como cualquier otro desafío de golf de código y responderlo sin preocuparse por la serie. Sin embargo, hay una tabla de clasificación en todos los desafíos. Puede encontrar la tabla de clasificación junto con más información sobre la serie en la primera publicación .
Aunque tengo un montón de ideas para la serie, los desafíos futuros aún no están establecidos en piedra. Si tiene alguna sugerencia, hágamelo saber en la publicación de sandbox relevante .
Hoyo 4: La paradoja de Bertrand
La paradoja de Bertrand es un problema interesante, que muestra cómo los diferentes métodos para elegir acordes aleatorios en un círculo pueden producir diferentes distribuciones de acordes, sus puntos medios y sus longitudes.
En este desafío, se supone que debe generar acordes aleatorios del círculo de la unidad, utilizando el método "correcto", es decir, uno que produce una distribución de acordes que es invariable bajo la escala y la traducción. En el artículo vinculado de Wikipedia, "Método 2" es un método de este tipo.
Aquí están las reglas exactas:
- Debe tomar un entero positivo
N
que especifique cuántos acordes se deben devolver. La salida debe ser una lista deN
acordes, cada uno especificado como dos puntos en el círculo unitario, dado por su ángulo polar en radianes. - Su código debe poder devolver al menos 2 20 valores diferentes para cada uno de los dos ángulos . Si su RNG disponible tiene un rango más pequeño, primero debe construir un RNG con un rango lo suficientemente grande encima del incorporado o debe implementar su propio RNG adecuado . Esta página puede ser útil para eso.
- La distribución de los acordes debe ser indistinguible de la producida por el "Método 2" en el artículo vinculado de Wikipedia. Si implementa un algoritmo diferente para elegir acordes, incluya una prueba de corrección. Cualquiera que sea el algoritmo que elija implementar, en teoría debe ser capaz de generar cualquier acorde válido en el círculo unitario (salvo las limitaciones del PRNG subyacente o los tipos de datos de precisión limitada).
- Su implementación debe usar y devolver números de punto flotante (al menos 32 bits de ancho) o números de punto fijo (al menos 24 bits de ancho) y todas las operaciones aritméticas deben ser precisas en un máximo de 16 ulp .
Puede escribir un programa completo o una función y recibir información a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y producir salida a través de STDOUT (o alternativa más cercana), valor de retorno de función o parámetro de función (out).
La salida puede estar en cualquier lista conveniente o formato de cadena, siempre que los números individuales sean claramente distinguibles y su número total sea siempre par.
Este es el código de golf, por lo que gana el envío más corto (en bytes). Y, por supuesto, la presentación más corta por usuario también entrará en la tabla de clasificación general de la serie.
Visualización
Puede usar el siguiente fragmento para representar las líneas generadas e inspeccionar su distribución. Simplemente pegue una lista de pares de ángulos en el área de texto. El fragmento debe poder manejar casi cualquier formato de lista, siempre que los números sean simples números decimales (sin notación científica). Le recomiendo que use al menos 1000 líneas para tener una buena idea de la distribución. También proporcioné algunos datos de ejemplo para los diferentes métodos presentados en el artículo a continuación.
Datos de ejemplo generados con el método 1.
Datos de ejemplo generados con el método 2.
Datos de ejemplo generados con el método 3.
Tabla de clasificación
La primera publicación de la serie genera una tabla de clasificación.
Para asegurarse de que sus respuestas aparezcan, comience cada respuesta con un título, utilizando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntuación, se puede mantener viejas cuentas en el título, golpeándolos a través. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(El idioma no se muestra actualmente, pero el fragmento requiere y analiza, y puedo agregar una tabla de clasificación por idioma en el futuro).