Tarefa
O prefpend, append-Sequence é definido recursivamente, como este
- a (1) = 1
- a (n) = a (n-1) .n, se n for par
- a (n) = na (n-1), se n for ímpar
onde o . representa uma concatenação inteira.
Portanto, os primeiros termos são: 1,12,312,3124,53124,531246,7531246,...
Este é A053064 .
Sua tarefa é, dado um inteiro a> 0 para retornar n , tais que o n º elemento na preceder, acrescentar-Sequence é igual a um e se existe tal n existe retorno 0, um número negativo ou erro fora etc.
Regras
- A entrada pode ser tomada como um número inteiro, sequência, lista de caracteres / dígitos, etc.
- A saída pode ser impressa em STDOUT ou retornada (número inteiro, sequência etc. está correto)
- Na entrada inválida e, no caso de não existir esse n, seu programa pode fazer qualquer coisa, exceto retornar um número inteiro positivo (por exemplo: loop para sempre, retornar 0 etc.)
- Você pode optar por usar a indexação 0, mas a saída, caso não exista n, não pode ser 0
Casos de teste
1 -> 1
12 -> 2
21 -> 0
123 -> 0
312 -> 3
213 -> 0
211917151311975312468101214161820 -> 21
2119171513119753102468101214161820 -> 0
333129272523211917151311975312468101214161820222426283031 -> 0
999795939189878583817977757371696765636159575553514947454341393735333129272523211917151311975312468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100 -> 100
a(n-1)*(int(log(n))+1)+n
en*(int(log(n))+1)+a(n-1)
?Respostas:
JavaScript (ES6), 40 bytes
Recebe a entrada como uma sequência. Lança um erro de recursão se nenhum índice for encontrado.
Demo
Mostrar snippet de código
fonte
f=(n,s=k='1')=>n-s?f(n,++k&1?k+s:s+k):k
C # (.NET Core) ,
83, 80, 6059 bytesExperimente online!
Leva a entrada como uma string para uma função lambda. 1 indexado. Retorna o índice do valor para truthy ou infinitamente loops para um "falsey"
fonte
Python 2 , 63 bytes
-1 byte graças a @EriktheOutgolfer .
Experimente online!
Python 2 , 64 bytes
-18 bytes graças a @officialaimm , porque eu não percebi que o erro era permitido!
Experimente online!
Python 2 , 82 bytes (não executa um loop para sempre)
Este retorna
0
para entradas inválidas.Experimente online!
fonte
f=lambda x,i='1',j=2:i!=`x`and f(x,[i+`j`,`j`+i][j%2],j+1)or~-j
sys.setrecursionlimit()
. Você pode fornecer um tio?x=1
? Oux=12
? Eu pensei que apenas jogou um erro para pelo menosx=151311975312468101214
ou algo assim.Gelatina , 12 bytes
Experimente online!
Explicação:
fonte
05AB1E , 14 bytes
Experimente online! ou como um conjunto de testes
Explicação
Indexado a 0 .
Retorna -1 se a entrada não estiver na sequência.
fonte
g
removida e a anexada / anexada abreviada. Excluirei minha respostaR , 73 bytes
Lê de stdin e retorna o valor do índice (impresso implicitamente). Loops infinitos quando o valor não está na sequência.
F
é por padrãoFALSE
convertido para0
quando usado em aritmética.Experimente online!
fonte
Mathematica, 135 bytes
fonte
Geléia ,
19 1815 bytesUm link monádico recebendo e retornando números inteiros.
Experimente online! (muito lento - leva aproximadamente 50 anos no TIO apenas para confirmar que
3124
está no índice4
)Para uma versão muito mais rápida, use o 18 byter anterior (apenas verifica o comprimento da entrada, o que é suficiente).
Quão?
fonte
211917151311975312468101214161820
?Swift 4 , 92 bytes
Isso faz loop infinitamente para casos inválidos, então não os incluí no link de teste.
Suíte de teste.
Divertidamente, é mais longo com um fechamento:
Suíte de teste.
fonte
Haskell ,
11585 bytesExperimente online!
fonte
Perl 5 , 54 + 1 (-n) = 55 bytes
Experimente online!
Retorna nada se não for encontrado.
fonte
Haskell,
757157 bytesToma
n
como uma corda.Experimente online!
fonte