Fiquei surpreso ao não encontrar isso já solicitado, embora haja uma grande pergunta sobre os dardos: Dardos encontra Codegolf
Seu desafio é calcular quais pontuações não são possíveis com dardos 'n' abaixo da pontuação máxima para dardos 'n'. Por exemplo, para n = 3, a pontuação máxima possível é 180, então você retornaria [163,166,169,172,173,175,176,178,179]
Para um resumo da regra do bare bones:
As pontuações possíveis para um único dardo são:
- 0 (falta)
- 1-20, 25, 50
- duplo ou triplo de 1-20
Regras:
- aplicam-se regras de golfe de código padrão
- você deve usar um único parâmetro 'n' da maneira que seu idioma permitir e retornar uma lista / matriz de todas as pontuações únicas abaixo da pontuação máxima que não pode ser pontuada com n dardos. Você também pode imprimir esses valores no console.
- ordem dos resultados não é importante
- o menor código em bytes ganha
Respostas:
Python 3 ,
80795957 bytes-1 byte graças a Arnauld
-20 bytes graças a ArBo
-2 bytes graças a sete negativos
Experimente online!
fonte
Perl 6 , 42 bytes
Experimente online!
Solução de força bruta que elabora todos os valores possíveis de dardos.
fonte
JavaScript (ES6),
5554 bytesGuardado 1 byte graças a @Shaggy
Baseado no padrão usado por Rod .
Experimente online!
fonte
s=60*n
->n*=60
para salvar um byte.Perl 6 , 39 bytes (37 caracteres)
Definitivamente, isso está usando uma marreta enorme, mas funciona. (Ele não apenas força bruta, mas brutalmente força)
Experimente online!
Aqui está uma explicação:
O
X* ^4
multiplicador cruzado gera muitos valores duplicados (haverá mais de 20 zeros envolvidos e isso é antes de fazer a adição cruzada), mas isso não causa problemas, pois usamos a diferença de conjunto∖
que funciona com os valores exclusivos.Isso atualmente falha
$n == 1
(o que deve retornar um conjunto vazio), mas há um problema arquivado e provavelmente funcionará em versões futuras. A versão de JoKing é um pouquinho mais longa, mas funciona para$n == 1
no atual Rakudo.fonte
Geléia , 19 bytes
Experimente online!
fonte
MATL ,
2523 bytesGraças a @ Giuseppe , que corrigiu um erro e colocou 2 bytes de golfe !
Experimente online!
Explicação
Abordagem de força bruta.
fonte
n=2
, então eu a corrigi e joguei um byte para inicializar! Experimente online!J ,
4845 bytesExperimente online!
-3 bytes graças ao FrownyFrog
Tentou uma solução de força bruta, mas não conseguiu vencer essa tradução da idéia de Rod.
fonte
626b66jh
b
era o "delimitador" lá e estava lendo como parte do número ....R , 64 bytes
Experimente online!
Portos a resposta surpreendente encontrada por Rod .
R ,
857368 bytesExperimente online!
A força bruta gera todas as pontuações possíveis com
n
dardos e leva a diferença de set apropriada.Crédito para solução Octave da OrangeCherries por me lembrar
combn
.Mais 5 bytes graças à sugestão de uso de Robin Ryder
%o%
.fonte
FUN
argumento decombn
! Você pode obter 68 bytes em%o%
vez dex*3,x*2
.Oitava ,
91 bytes73 bytes71 BytesOutro método de força bruta.
Até
73 bytesgraças a GiuseppeAté 71 bytes, substituindo nchoosek por combnk
Experimente online!
fonte
Pitão , 22 bytes
Experimente online!
Tempo limite excedido no TIO para entradas maiores que 3.
fonte
U4
paraS3
o desempenho é um pouco melhor, porque os dois produtos cartesianos não precisam lidar com todos os 0s adicionais inúteis. A entrada 3 produz em ~ 13 segundos em vez de ~ 30 nesse caso (embora a entrada 4 ainda atinja o tempo limite, e este seja um código de golfe, então não importa muito; p).-S*60QsM^*MP*S3aU21 25
, mas que o espaço entre21
e25
é um pouco chato .. Com uma gama inclusiva, baseada-0yT
pode ser usado em vez de21
, mais ou menos assim:-S*60QsM^*MP*S3a}ZyT25
( mas, sem oZ
curso, com o}
substituído pelo intervalo inclusivo baseado em 0). Talvez você veja algo para jogar golfe nessa abordagem alternativa de adicionar25
a lista e remover o75
após o primeiro produto cartesiano?Stax , 24 bytes
Execute e depure
É bem lento para n = 3 e piora a partir daí.
fonte
Python 2 , 125 bytes
Experimente online!
Python 3 ,
126125122 bytesExperimente online!
-3 bytes, graças a Rod
fonte
05AB1E ,
212018 bytes-3 bytes graças a @Grimy .
O tempo limite excede rapidamente, quanto mais alta a entrada, devido ao produto cartesiano incorporado
ã
.Experimente online ou verifique mais alguns casos de teste .
Explicação:
fonte
60 * input
, não 180.Gelatina , 28 bytes
Experimente online!
fonte
MathGolf , 26 bytes
Experimente online!
-2 bytes graças a Kevin Cruijssen
Explicação
fonte
3╒*mÅ~*N_∞α+
paraN▐3╒*mÅ~*╡
. (PS: Por que você menciona " para a entrada 3 " no cabeçalho de explicação?)Wolfram Language (Mathematica) , 69 bytes
Experimente online!
Baseado na resposta do lirtosiast .
Array
O terceiro argumento especifica o deslocamento (padrão 1) e seu quarto argumento especifica o cabeçalho a ser usado em vez deList
.##&
é equivalente aSequence
, entãoArray[1##&,{4,21},0,##&]
retorna um (achatado)Sequence
contendo membros do produto externo de0..3
e0..20
.fonte
Carvão , 36 bytes
Experimente online! Link é a versão detalhada do código. Usa o algoritmo de @ Rod; força bruta precisaria de 60 bytes. Funciona truncando a string para 9 caracteres se a entrada for maior que 1, pegando os ordinais dos caracteres e adicionando o múltiplo apropriado de 60.
fonte
C # (compilador interativo do Visual C #) , 305 bytes
Bem, não parece haver uma maneira fácil de calcular todas as combinações possíveis em C #, então esse desastre de código é tudo o que eu poderia criar.
Além disso, leva cerca de 30s para concluir ...
Gostaria de ver uma solução melhor.
Experimente online!
fonte
Kotlin , 118 bytes
Experimente online!
fonte
Perl 5
-n
,969391 bytesExperimente online!
Foi otimizado para o tamanho do código, em vez do tempo de execução, por isso é meio lento. Ele gera muitas entradas redundantes para seu hash de pesquisa. A execução do
@b
arrayuniq
acelera bastante, mas custa mais 5 bytes, por isso não o fiz.fonte
Wolfram Language (Mathematica) , 81 bytes
Experimente online!
O Mathematica possui alguns recursos internos relacionados, incluindo
FrobeniusSolve
e a forma restrita deIntegerPartitions
, mas nenhum deles é mais curto que a força bruta.fonte
{163,166,169,172,173,175,176,178,179}