Introdução
Produza todos os números em uma base específica que apareceriam em uma versão adaptada do jogo dos sete.
Desafio
Sua tarefa é produzir todos os números em uma determinada base em um determinado intervalo, ignorando os que correspondem a determinadas condições.
Você receberá quatro entradas: base
elim
start
e end
. Os papéis das quatro variáveis são os seguintes:
base
especifica qual base estamos usando para as outras três variáveis e também para saída. Uma maneira de expressá-lo é usar um único caractere que seja '8', '9' ou uma letra maiúscula de 'A' a 'Z', usando 'A' para o sistema decimal e 'G' para o sistema hexadecimal. As bases que devem ser apoiadas são de 8 a 35 (inclusive). Esta é apenas a minha maneira sugerida de expressar obase
e vou usá-lo na seção Exemplo de entrada e saída , mas também é bom usar o seu próprio modo de expressá-lo. Por exemplo, você pode optar por formatarbase
como sua representação decimal usual.start
eend
são duas cadeias que especificam o intervalo de números a serem emitidos, expresso no dadobase
. Sebase
éG
estart
é10
eend
é1F
, você precisa produzir10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
, mas também precisa eliminá-los com base no queelim
é, a ser explicado em breve.elim
é um caractere único e deve ser um dígito válido no dadobase
. Todos os números que contêm o dígitoelim
ou múltiplos deelim
devem ser eliminados da lista para gerar a saída final.
No caso acima, se elim
for 7
, 17
precisará ser eliminado porque contém o dígito 7
. 15
e 1C
também precisam ser eliminados porque são múltiplos de 7
. Portanto, a saída final seria10 11 12 13 14 16 18 19 1A 1B 1D 1E 1F
Casos de teste
Input -> Output
G,7,10,1F -> 10 11 12 13 14 16 18 19 1A 1B 1D 1E 1F
A,3,1,100 -> 1 2 4 5 7 8 10 11 14 16 17 19 20 22 25 26 28 29 40 41 44 46 47 49 50 52 55 56 58 59 61 62 64 65 67 68 70 71 74 76 77 79 80 82 85 86 88 89 91 92 94 95 97 98 100
G,A,96,C0 -> 97 98 99 9B 9C 9D 9E 9F B0 B1 B2 B3 B5 B6 B7 B8 B9 BB BC BD BF C0
O terceiro caso de teste é adicionado após a postagem original. Todas as respostas postadas antes da edição foram testadas e passaram no terceiro teste.
Especificações
A entrada sempre será válida, portanto, não se preocupe com o tratamento de exceções.
Isso é código-golfe , o menor número de bytes vence.
Você pode receber e fornecer saída através de qualquer formulário padrão e pode escolher o formato.
Como sempre, as brechas padrão se aplicam aqui.
Isso é baseado na versão real do jogo dos setes .
Eu preciso
base
ter pelo menos 8 anos devido ao gosto pessoal. Só não quero ver o número de dígitos na sequência crescer muito rápido.
Placar
Snippet retirado desta pergunta . Execute o trecho para obter o placar.
fonte
base,elim,start,end
, 'A' para sistema decimal , 'G' para sistema hexadecimal ), tente formatar seus casos de teste de uma maneira fácil de use e considere usar o Sandbox para receber feedback antes de postar no site principal. No geral, este é um bom primeiro desafio!start
,end
eelim
mais branda."G,7,10,1F"
entrada, uma abordagem totalmente flexível permitiria, por exemplo,[16,7,16,31]
como entrada e[[1,0],[1,1],[1,2],[1,3],[1,4],[1,6],[1,8],[1,9],[1,10],[1,11],[1,13],[1,14],[1,15]]
saída. (Observe que a primeira resposta assumiu que parte disso já havia sido permitida, já que é bastante padrão - mas depende totalmente de você).Respostas:
Emojicode ,
141116 bytesgraças a @NieDzejkob por 25 bytes!
Experimente online!
fonte
Geléia ,
1211 bytes-1 graças a Erik the Outgolfer (uso de "order"
ọ
no lugar de divisível com argumentos trocadosḍ@
)Um programa completo que recebe três entradas como argumentos de linha de comando, todas empregando notação decimal - uma lista
[start, end]
e dois númerosbase
eelim
- que imprime a representação Jelly de uma lista de listas, onde cada uma representa os dígitos de um númerobase
e cada dígito é um número decimal (por exemplo, 1043 na base 20 seria[2,12,3]
, ou seja, 2 × 20 2 + 12 × 20 1 + 3 × 20 0 ).Experimente online!
Uma pequena observação: isso não funciona para intervalos que incluem valores negativos, mas o desafio vinculado começa em 1 e conta.
Quão?
fonte
ḍ@
pode serọ
;) (btw eu teria postadorọÐḟ⁶b⁵ċÐḟ⁶
...)ọÐḟ
poderia ser%Ðf
Julia 0.6 , 69 bytes
As entradas são
base, elim, start:end
ondestart:end
está aUnitRange
. como base 10 inteiros. Produz uma lista de seqüências de caracteres dos números na base fornecida. Filtros para divisibilidade em forma inteira, usabase.
para converter elementos em cadeias de elementos e, em seguida, filtra na contenção de dígitos. Exemplo chamado:f(10,3,1:100)
Experimente online!
fonte
Python 2 ,
10294 bytesExperimente online!
A entrada e a saída estão na base 10.
fonte
Perl 6 ,
9457 bytesTeste (94)
Desde que as regras mudaram:
Testá-lo (Int, Int, Range) A
saída é uma lista de strings na base
Expandido
fonte
JavaScript, 82 bytes
Uma rapidinha antes de eu bater na bebida! Toma entrada na base 10 no fim
base
,elim
,start
&end
e emite uma cadeia delimitada espaço de base 10 números com um espaço simples.Experimente online
fonte
Japonês , 16 bytes
Reescrito rapidamente depois que a especificação foi alterada para permitir a entrada decimal, portanto provavelmente pode ser aprimorada.
Toma entrada na ordem
start
,end
,base
,elim
e produz um conjunto de números na base de dados.Tente
Explicação
fonte
elim
foi especificado para ser um único dígito (ou seja0-9
) , em vez de um único caractere na base de entrada.Java 8, 92 bytes
Entrada como
Integer (base), String (elem), int (start), int (end)
.Explicação:
Experimente online.
Os três casos de teste são inseridos assim:
fonte