Faça um n-Juggler

8

Fiquei realmente interessado em sequências que seguem a propriedade

uma(n+1)=uma(n-uma(n))

recentemente, então aqui está outra pergunta sobre essas seqüências. Em particular, estamos preocupados com seqüências dos números inteiros para os números naturais.

Uma sequência periódica com a propriedade acima é um n -Juggler se e somente se contém exatamente n valores distintos. Por exemplo, a seguinte sequência é um 2 malabarista

... 2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1,2,2,1 ...

porque contém apenas os números 1e 2.

Um exemplo de três malabaristas seria

... 3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5,3,5,3,5,1,5 ...

porque ele manipula 1, 3e 5.

Tarefa

Dado n> 1 como entrada, produza qualquer n -Juggler.

Você pode produzir uma sequência de várias maneiras, pode

  • produz uma função que a indexa.

  • pegue uma entrada adicional do índice e produza o valor nesse índice.

  • produz uma subseção contínua da sequência que, com a propriedade especificada, determina exclusivamente a sequência.

Isso é então as respostas são pontuadas em bytes, com menos bytes sendo melhores.

Caçador Ad Hoc Garf
fonte
1
Podemos imprimir a sequência indefinidamente?
Mr. Xcoder
3
@ Mr.Xcoder Normalmente eu diria que sim, mas como essas seqüências são infinitas em ambas as direções, tenho que hesitar em dizer não. (Se você oferecer um argumento convincente, eu poderia facilmente mudar de idéia sobre isso). Se você encontrar uma maneira de imprimir nas duas direções, tudo bem.
Ad Hoc Garf Hunter
3
Parece que as sequências seguem a(n+1) = a(n-a(n)), e não + #
TFeld 26/10
4
Sim, sim: repita 2,2uma vez → 2,2,2,2, repita novamente → 2,2,2,2,2,2, etc. Não há absolutamente nenhuma maneira de obter uma 1repetição 2,2. A sequência que você obtém é sempre única.
aditsu saiu porque SE é MAU 26/10
2
Parece que a propriedade não existe mais.
Erik the Outgolfer

Respostas:

4

Pitão , 5 bytes

t+*%E

Experimente os 2 , 3 , 4 malabaristas.

Recebe dois números, N e I , separados por uma nova linha e nesta ordem. Eu é o índice da sequência.

Isso usa uma fórmula bastante simples: N - 1 + N * (I% N) . Sua validade foi confirmada pelo OP .

Mr. Xcoder
fonte
3

CJam, 9

Que tal agora?

q~1$,=)*(

Experimente online

Entrada é n ionde nestá a entrada principal e ié o índice para o qual você deseja obter o valor.

Explicação:

q~    read and evaluate the input (n and i)
1$    copy n
,=    basically this is a modulo (i%n) that avoids a negative result for negative i
)*    increment, then multiply by n
(     decrement
aditsu sair porque SE é MAU
fonte
1

Haskell , 17 bytes

n!i=i`mod`n*n+n-1

Experimente online!

Outra resposta usando a ideia do Sr. Xcoder. Eu não seria capaz de responder à pergunta de outra forma para ser honesto. : P

totalmente humano
fonte
0

Gelatina , 5 bytes

Ɠ%×+’

Experimente online!

Porto da abordagem do Sr. Xcoder. O índice I está em STDIN, N é um argumento.

Erik, o Outgolfer
fonte