Me sorprendió no encontrar esto ya preguntado, aunque hay una gran pregunta sobre los pagos de dardos: Darts y Codegolf
Su desafío es calcular qué puntajes no son posibles con 'n' dardos por debajo del puntaje máximo para 'n' dardos. Por ejemplo, para n = 3, el puntaje máximo posible es 180, por lo que devolvería [163,166,169,172,173,175,176,178,179]
Para un resumen de la regla básica:
Los puntajes posibles para un solo dardo son:
- 0 (señorita)
- 1-20, 25, 50
- doble o triple de 1-20
Reglas:
- se aplican reglas de golf de código estándar
- debe tomar un solo parámetro 'n' de la manera que su idioma lo permita y devolver una lista / conjunto de todos los puntajes únicos por debajo del puntaje máximo que no se puede calificar con n dardos. También puede imprimir estos valores en la consola.
- el orden de los resultados no es importante
- el código más corto en bytes gana
Respuestas:
Python 3 ,
80795957 bytes-1 byte gracias a Arnauld
-20 bytes gracias a ArBo
-2 bytes gracias a siete negativos
Pruébalo en línea!
fuente
Perl 6 , 42 bytes
Pruébalo en línea!
Solución de fuerza bruta que resuelve todos los posibles valores de dardos.
fuente
JavaScript (ES6),
5554 bytesGuardado 1 byte gracias a @Shaggy
Basado en el patrón utilizado por Rod .
Pruébalo en línea!
fuente
s=60*n
->n*=60
para guardar un byte.Perl 6 , 39 bytes (37 caracteres)
Definitivamente está usando un mazo masivo pero funciona. (No solo lo fuerza por fuerza bruta, lo fuerza brutalmente por fuerza bruta)
Pruébalo en línea!
Aquí hay una explicación:
El
X* ^4
multiplicador cruzado genera muchos valores duplicados (habrá más de 20 ceros involucrados y eso es antes de hacer la suma cruzada), pero eso no causa ningún problema ya que usamos la diferencia establecida∖
que funciona con los valores únicos.Esto falla actualmente
$n == 1
(lo que debería devolver un conjunto vacío), pero hay un problema archivado y probablemente funcionará en futuras versiones. La versión de JoKing es un poco más larga, pero funciona$n == 1
en Rakudo actual.fuente
Jalea , 19 bytes
Pruébalo en línea!
fuente
MATL ,
2523 bytes¡Gracias a @Giuseppe , que corrigió un error y jugó 2 bytes!
Pruébalo en línea!
Explicación
Enfoque de fuerza bruta.
fuente
n=2
, así que la arreglé y jugué un byte para arrancar! Pruébalo en línea!J ,
4845 bytesPruébalo en línea!
-3 bytes gracias a FrownyFrog
Intenté una solución de fuerza bruta, pero no pude superar esta traducción de la idea de Rod.
fuente
626b66jh
b
was the "delimiter" there and was reading it as part of the number....R , 64 bytes
Pruébalo en línea!
Ports la increíble respuesta encontrada por Rod .
R ,
857368 bytesPruébalo en línea!
La fuerza bruta genera todos los puntajes posibles con los
n
dardos, luego toma la diferencia de conjunto adecuada.Crédito para la solución de octava OrangeCherries' por recordarme
combn
.5 bytes más gracias a la sugerencia de Robin Ryder de usar
%o%
.fuente
FUN
argumento decombn
! Puede obtener 68 bytes con en%o%
lugar dex*3,x*2
.Octava ,
91 bytes73 bytes71 BytesOtro método de fuerza bruta.
Bajar a
73 Bytesgracias a GiuseppeBajar a 71 Bytes reemplazando nchoosek por combnk
Pruébalo en línea!
fuente
Pyth , 22 bytes
Pruébalo en línea!
Se agota el tiempo de espera en TIO para entradas mayores de 3.
fuente
U4
aS3
la actuación se mejora un poco porque ambos productos cartesianos no tienen que hacer frente a todos esos inútiles 0s adicionales. La entrada 3 sale en ~ 13 segundos en lugar de ~ 30 en ese caso (aunque la entrada 4 todavía agota el tiempo, y este es el código de golf, por lo que no importa mucho; p).-S*60QsM^*MP*S3aU21 25
, pero ese espacio entre21
y25
es un poco molesto. Con un rango inclusivo basado en 0yT
podría usarse en lugar de21
algo así:-S*60QsM^*MP*S3a}ZyT25
( pero luegoZ
, por supuesto, con el}
reemplazado por el rango inclusivo basado en 0). ¿Quizás vea algo en el golf en este enfoque alternativo de agregar el25
a la lista y eliminar el75
producto cartesiano después del primer?Stax , 24 bytes
Ejecutar y depurarlo
Es bastante lento para n = 3, y empeora a partir de ahí.
fuente
Python 2 , 125 bytes
Pruébalo en línea!
Python 3 ,
126125122 bytesPruébalo en línea!
-3 bytes, gracias a Rod
fuente
05AB1E ,
212018 bytes-3 bytes gracias a @Grimy .
El tiempo de espera se agota rápidamente cuanto mayor sea la entrada debido al producto cartesiano incorporado
ã
.Pruébalo en línea o verifique algunos casos de prueba más .
Explicación:
fuente
60 * input
, no 180.Jalea , 28 bytes
Pruébalo en línea!
fuente
MathGolf , 26 bytes
Pruébalo en línea!
-2 bytes gracias a Kevin Cruijssen
Explicación
fuente
3╒*mÅ~*N_∞α+
aN▐3╒*mÅ~*╡
. (PD: ¿Por qué mencionas " para la entrada 3 " en el encabezado de tu explicación?)Wolfram Language (Mathematica) , 69 bytes
Pruébalo en línea!
Basado en la respuesta de lirtosiast .
Array
El tercer argumento especifica el desplazamiento (por defecto 1), y su cuarto argumento especifica la cabeza a usar en lugar deList
.##&
es equivalente aSequence
, por lo queArray[1##&,{4,21},0,##&]
devuelve un (aplanado) queSequence
contiene miembros del producto externo de0..3
y0..20
.fuente
Carbón , 36 bytes
Pruébalo en línea!El enlace es a la versión detallada del código. Utiliza el algoritmo de @ Rod; la fuerza bruta habría tomado 60 bytes. Funciona truncando la cadena a 9 caracteres si la entrada es mayor que 1, luego toma los ordinales de los caracteres y agrega el múltiplo apropiado de 60.
fuente
C # (compilador interactivo de Visual C #) , 305 bytes
Bueno, no parece haber una manera fácil de calcular todas las combinaciones posibles en C #, por lo que este desastre de código es todo lo que se me ocurrió.
Además, tarda unos 30 segundos en completarse ...
Me encantaría ver una mejor solución.
Pruébalo en línea!
fuente
Kotlin , 118 bytes
Pruébalo en línea!
fuente
Perl 5
-n
,969391 bytesPruébalo en línea!
Fue optimizado para la longitud del código en lugar del tiempo de ejecución, por lo que es un poco lento. Genera muchas entradas redundantes para su hash de búsqueda. Ejecutar la
@b
matriz a través deuniq
él lo acelera enormemente, pero cuesta 5 bytes más, por lo que no lo hice.fuente
Wolfram Language (Mathematica) , 81 bytes
Pruébalo en línea!
Mathematica tiene algunos componentes internos relacionados, incluida
FrobeniusSolve
la forma restringidaIntegerPartitions
, pero ninguno de ellos es más corto que la fuerza bruta.fuente
{163,166,169,172,173,175,176,178,179}