Dado um número n
e um limite superior, l
lista os números que podem ser criados multiplicando dois ou mais números que consistem em apenas setes de comprimento n
ou menos que são menores que l
. O A161145 está próximo desse desafio, no entanto, você NÃO incluirá os 7, 77, 777, 7777, 77777, etc.
Exemplos
n=anything, l<49
resultaria em:
[]
n=1, l=49
resultaria em:
7*7=49
f(1,49)=[49]
n=1, l=343
resultaria em:
7*7 =49
7*7*7 =343
f(1,343)=[49,343]
n=2,l=6000
resultaria em:
7*7 =49
7*7*7 =343
7*7*7*7=2401
7*77 =539
7*7*77 =3773
77*77 =5929
f(2,6000)=[49,343,539,2401,3773,5929]
n=3, l=604000
resultaria em:
[49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, 266511, 290521, 418803, 456533, 603729]
Etc ...
Regras
- Você não precisa emitir etapas intermediárias, isso foi feito para maior clareza.
- A saída pode ser como uma matriz ou separada por qualquer caractere (mesmo novas linhas).
- A saída deve estar em ordem numérica, do menor para o maior.
- Para tornar o título relevante, o mais alto
n
que deve ser tratado én=77
(se você não conseguir lidar com esse nível, observe o porquê - restrições de idioma são aceitáveis, preguiça não). Essa limitação é para impedir aqueles que desejam criar o superconjunto inteiro na memória. - Se o TIO não puder executar o
n=77
seu código, explique quais especificações foram necessárias para atingirn=77
. - Para um produto ser válido, ele deve consistir em pelo menos 2 números.
- Essa contagem de bytes mais baixa do código-golfe será considerada vitoriosa.
- Você pode escolher a lista para conter itens menores
l
ou iguais a / iguais al
. - BÔNUS : Se o seu código tiver exatamente 77 bytes, parabéns meu; inútil, eu sei.
n
ou menos que são menos do quel
"n=77
el=7**7**7
, por exemplo?Respostas:
05AB1E , 19 bytes
Experimente online!
Explicação
Muito ineficiente. O link TIO executa
ceil(l^(1/7))
iterações em vez dasl
iterações usadas na versão golfed para testar com facilidade casos de teste grandes.fonte
$L7ׂ˜
- tentou obter 5 bytes, não conseguiu..p
ou.s
muito, mas mesmo aqueles que parecem mais tempo. Eu acertei acidentalmente 'refresh' na página TIO com meu exemplo de implementação, em vez de executar, excluí-o da existência. Eu acho que tinha 26 anos.Geléia ,
21201918 bytesObserve que a saída não corresponde aos OPs. Eu deixei um comentário.
Experimente online!
Como funciona
fonte
Python 2 ,
116113109 bytesObserve que o TIO não possui memória suficiente para o último caso de teste.
Experimente online!
fonte
JavaScript (ES6),
103101 bytesRecebe entrada na sintaxe de currying
(n)(l)
.Casos de teste
O último caso de teste pode levar alguns segundos para ser concluído.
Mostrar snippet de código
fonte
PHP, 142 bytes
-5 bytes removendo
$r=[];
e substituindosort($r);
por@sort($r);
Versão Online
Expandido
Uma função recursiva faz todas as permutações, incluindo o limite
PHP, 145 bytes
Expandido
um loop até incluir o limite, verifique todos os valores divisíveis por 49
Versão Online
alguns bytes a mais e uma matriz associativa pode ser criada, digite o número e, como valor, uma matriz dos setes usados
Versão Online
fonte
while($c=$t*$v[+$i++])$l<$c?f($c)&$r[$c]=$c;
salva 3 bytes; mas deveria ser$l<=$c
.$r?sort($r)&print_r($r):0;
em vez de$r=[];
salva um.$z.=7;
é 5 bytes menor que$z=$z*10+7;
.@
é mais 4 bytes menor que$r?...:0;
. (Obrigado @Christoph)$l<=$c
? Parece que ontem não era o meu dia para os$z.=7
2 bytes adicionais que encontrei. Estou pensando primeiro nas suas outras duas sugestões. Você perdeu o:
loop enquantothat are less than l
, em seus exemplos elesare less than or equal
. Dependendo do esclarecimento,$c>$l||...
/$c>$l?:...
ou$c<$l&&...
são os mais curtos.Ruby,
8986 bytesUma solução recursiva.
-3 bytes, lembrando que qualquer coisa que seja 0 é 0.
Experimente online!
fonte
Pitão , 22 bytes
Experimente online!
Especificações
l[newline]n
array containing the sorted result
fonte
PHP,
128 125 130 129 127123 bytesfuncionará até 22
7
s, mas arredondará valores maiores (7 ** 23 é ponto flutuante em uma máquina de 64 bits).3 bytes salvos por Jörg, 3 por mim,
5 41 adicionados para evitar aviso de resultados vazios.recebe entrada de argumentos de linha de comando; execute
-nr
ou experimente online .demolir
fonte
for([,$c,$z]=$argv,$n=1+$c;$c<$z;
em vez defor($n=1+$c=$argv[1];$c<$z=$argv[2];
@
vez de$r&&
para suprimir o aviso?$p<$z&&$r[$p]=$p
$p>$z?:$r[$p]=$p
do exemplon=1, l=343
, é claro quel
deve ser incluído. Portanto, não há economia ao usar$p>$z||$r[$p]=$p
ou$p>$z?:$r[$p]=$p
.@
; será editado quando o OP responder.$p>$z||
ou$p<$z&&
. Eu vou ficar com a descrição.Braquilog , 28 bytes
Há muito espaço para melhorias no próprio idioma, aqui; algumas coisas que escrevi parecem óbvias com algumas mudanças no design da linguagem. Esta é a maneira mais curta que encontrei na versão atual. Posso muito bem fazer algumas sugestões para o Brachylog que tornariam este programa mais eficiente, mais curto e mais legível.
Muito, muito devagar; O TIO atinge o tempo limite, mesmo na resposta não trivial mais simples possível; portanto, não faz muito sentido fornecer um link TIO. Eu verifiquei este programa executando-o localmente.
Esta é uma função (não um programa completo), cuja saída é um gerador (ao contrário de uma lista). Adicione
.w⊥
ao final da função se você quiser ver todas as saídas, em vez de apenas a primeira. (Observe que isso realmente não importa na prática, porque como o programa é muito lento para o TIO de qualquer maneira, você deve executá-lo localmente e o interpretador Brachylog local é executado em um REPL que pode descrever um gerador muito bem.)Explicação
fonte
Utilitários Bash + GNU, 108
Experimente online . O TIO leva cerca de um minuto para o último caso de teste. Meus resultados correspondem @ Dennis.
fonte
Pitão -
57514942 bytesTente
fonte
7
e77
para sua entrada atual.m
vez deF
ouV
etc. (programação funcional x controle de execução); usando emhQ
vez de@Q0
; usando emeQ
vez de@Q1
; usando emi*hQ]7T
vez do loop for longo para gerar777...7
.