Considere a sequência infinita de todos os números decimais não negativos concatenados juntos em ordem (semelhante à constante de Champernowne ):
0123456789101112131415161718192021222324252627282930...979899100101102103...
Escreva um programa ou função que receba um número inteiro não negativo que indexa (com base em 0) nessa cadeia infinita. Mostra uma truthy valor se o dígito indexado é 0, caso contrário, a saída de um Falsas valor se o dígito é 1-9.
O código mais curto em bytes vence.
Os primeiros 25 insumos produtores de verdade são:
0
11
31
51
71
91
111
131
151
171
191
192
194
197
200
203
206
209
212
215
218
222
252
282
312
Parabéns se o seu programa tiver memória eficiente, mas isso não é um requisito.
code-golf
string
integer
decision-problem
Passatempos de Calvin
fonte
fonte
Respostas:
Haskell, 25 bytes
Exemplo de uso:
(<'1').((show=<<[0..])!!) 312
->True
fonte
05AB1E , 5 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
Mathematica,
4240 bytesFunção anônima. Pega um número como entrada e retorna uma
True
ouFalse
como saída. Uma solução mais longa, porém mais eficiente (?):fonte
CJam, 9 bytes
Este é um bloco (função) sem nome que recebe um número inteiro e retorna 0 ou 1 de acordo.
Explicação:
Intérprete online . Observe que
~
avalia um bloco. Como alternativa, você pode executar este conjunto de testes que utiliza,
para filtrar os primeiros 1000 números para obter valores de verdade.fonte
MATL, 11 bytes
Experimente Online!
Explicação :
fonte
Braquilog ,
108 bytes2 bytes graças a Fatalize.
Experimente online!
fonte
@e
vetoriza assimy@ec:?m0
funciona, para economizar 2 bytes.#0
,#1
,#+
,#_
,#>
e#<
vectorize como@e
faz. Alguns dos predicados vetorizados, como+
ou*
não, recursivamente ao nível mais baixo da lista e não executam a mesma coisa, dependendo da estrutura da entrada.Perl 6 ,
2625 bytesUm lambda que recebe um número como entrada e retorna um
True
ouFalse
.Memória eficiente.
Como funciona
0..*
- Construa o intervalo de 0 ao infinito.map(|*.comb, )
- Repita preguiçosamente o intervalo, substituindo cada número pelos caracteres de sua representação de seqüência de caracteres e retornando uma nova sequência lenta. O|
mantém a nova sequência achatada.[$_]
- Pegue o elemento no índice definido pelo parâmetro lambda (declarado implicitamente)$_
.+
- Coerce para um número. (Esta etapa é necessária porque a coerção de uma string diretamente para um booleano sempre fornece True, a menos que a string esteja vazia.)!
- Coerce para um booleano e negue.( experimente online )
EDIT: -1 byte graças a b2gills.
fonte
{!+map(|*.comb,0..*)[$_]}
eu inventei{!+({|($++).comb}...*)[$_]}
antes de olhar para ver se já havia uma resposta P6.!+
pode ser substituído por1>
Gelatina , 6 bytes
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Python 3.5, 40 bytes
Teste-o em repl.it .
Como funciona
Para a entrada n ,
'%d'*-~n
repete a sequência de formatação n + 1 vezes.(*range(n),n)
descompacta o intervalo [0, ..., n - 1] e produz a tupla (0, ..., n) ....%...
substitui cada ocorrência de % d pelo número inteiro correspondente no intervalo, produzindo a sequência 01234567891011 ... n .(...)[n]<'1'
seleciona o caractere no índice n e testa se é menor que o caractere 1 .fonte
Python 3, 44 bytes
Uma função anônima que recebe entrada por meio de argumento e retorna
True
ouFalse
conforme apropriado.Como funciona
Experimente no Ideone
fonte
Pitão,
87 bytesObrigado a @LeakyNun por -1 byte
Esta é a minha primeira tentativa de jogar golfe em Pyth.
Um programa completo que imprime
True
ouFalse
conforme apropriado.Experimente online
Primeiras 25 entradas verdadeiras
Como funciona
fonte
SILOS , 141 bytes
Experimente online!
Usa apenas 5 números inteiros, eficiência máxima de memória \ o /
Explicação
Geramos tantos dígitos quanto a entrada na constante do Champernowne.
No loop principal, fazemos o seguinte:
100
dígito s de1234
é obtido por(1234/10)%10
onde/
está a divisão do piso.fonte
JavaScript (ES6), 45 bytes + elogios
Minha melhor versão não-Kudos foi de 34 bytes:
fonte
JavaScript (ES6), 47 bytes
n=>[...Array(n+1)].reduce((a,_,i)=>a+i,'')[n]<1
fonte
Javascript (ES6),
4233 bytesExemplo:
fonte
Groovy, 56 bytes
Nada extravagante, mas estou tentando algumas coisas novas.
fonte
Perl, 24 bytes
Inclui +1 para
-p
Execute com entrada no STDIN:
imprima 1 para zero, nada diferente
zero.pl
fonte
PHP, 36 bytes
Imprima
1
se o argumento Champernowne-th decimal for0
, caso contrário, imprima '' (sequência vazia).fonte
Ruby,
3523 bytesEsta é uma função anônima que concatena
[0..n]
, pega on
th index e verifica se esse caractere é"0"
(menor que"1"
). Sugestões de golfe são bem-vindas.Ungolfing
fonte
Na verdade,
98 bytesEssa resposta concatena o intervalo
[0..n]
, pega on
th index e verifica se esse caractere é"0"
. Sugestões de golfe são bem-vindas. Experimente online!Ungolfing
fonte
Bash,
3128 bytesA saída não está vazia (verdade) ou vazia (falsidade). Teste em Ideone .
fonte
Julia,
2120 bytesObrigado a @LuisMendo por jogar fora um byte!
Experimente online!
fonte
R,
61bytes 57Obrigado a @plannapus por 4 bytes.
Cria um vetor de números 0: n (para indexação 0), cria uma sequência deles, extrai o enésimo valor da sequência (ajustando para a indexação 0). Converte em numérico e testa se é 0.
fonte
GolfScript, 12 bytes
Explicação:
Experimente online ou verifique todos os casos de teste!
fonte
C, 154 bytes
a função que calcula o valor é f (n, 0,0,0) onde n é o índice de entrada. ele pode calcular a partir da mudança de índice "return! c" em "return c" o valor da matriz nesse índice ... eu não entendo como, mas parece funcionar ok ....
fonte
Javascript (ES5):
6160 bytesUngolfed:
Velho:
Velho não destruído:
fonte
!s[n]
vez des[n]==0
?function(n){s="";while(s.length<n)s+=s.length;return !s[n]}
) retorna a (31) = false.CoffeeScript, 56 bytes
fonte
zsh, 31 bytes
exit 0
é verdade no zshfonte
C #, 71 bytes
E eu pensei que era curto no começo, mas então eu tive que adicionar
n+=11
para impedir que ele jogasse aSystem.IndexOutOfRangeException
quando números abaixo de 11 fossem inseridosfonte
Pyke, 7 bytes
Experimente aqui!
fonte