Mathematica, 65 bytes
f[a___,x_,b___]/;NestList[2#-1&,a~Min~b/. 2->0,4]~SubsetQ~{a,b}=x
Isso define uma função fque deve ser chamada com 5 argumentos, por exemplo
f[5, 9, 17, 33, 829]
Em princípio, a função pode ser chamada com qualquer número (diferente de zero) de argumentos, mas você pode obter resultados inesperados ...
Acho que é a primeira vez que consegui colocar toda a solução em um desafio não trivial no lado esquerdo de um =.
Explicação
Essa solução realmente coloca os recursos de correspondência de padrões do Mathematica para trabalhar para nós. A característica básica que estamos usando é que o Mathematica não pode apenas definir funções simples como, f[x_] := (* some expression in x *)mas podemos usar padrões arbitrariamente complexos no lado esquerdo, por exemplo f[{a_, b_}, x_?OddQ] := ..., adicionar uma definição à fqual é usada apenas quando é chamada com um elemento de dois elementos lista e um número inteiro ímpar. Convenientemente, já podemos atribuir nomes a elementos arbitrariamente distantes da expressão do lado esquerdo (por exemplo, no último exemplo, poderíamos nos referir imediatamente aos dois elementos da lista como ae b).
O padrão que estamos usando neste desafio é f[a___,x_,b___]. Aqui a___e b___são seqüências de zero ou mais argumentos e xé um único argumento. Como o lado direito da definição é simplesmente x, o que queremos é uma mágica que garanta que xseja usada para a entrada que estamos procurando a___e que b___sejam simplesmente curingas que cubram os elementos restantes.
Isso é feito anexando uma condição ao padrão com /;. O lado direito de /;(tudo até =) precisa retornar Truepara que esse padrão corresponda. A beleza é que o padrão de correspondência do Mathematica vai tentar cada atribuição de a, xe bpara as entradas para nós, por isso a busca para o elemento correto é feito por nós. Esta é essencialmente uma solução declarativa para o problema.
Quanto à própria condição:
NestList[2#-1&,a~Min~b/. 2->0,4]~SubsetQ~{a,b}
Observe que isso não depende de xnada. Em vez disso, essa condição depende apenas dos quatro elementos restantes. Esse é outro recurso conveniente da solução de correspondência de padrões: devido aos padrões de sequência, ae bjuntos contêm todas as outras entradas.
Portanto, essa condição precisa verificar se os quatro elementos restantes são elementos contíguos da nossa sequência com no máximo uma lacuna. A idéia básica para verificar isso é que geramos os próximos quatro elementos a partir do mínimo (via ) e verificamos se os quatro elementos são um subconjunto disso. As únicas entradas em que isso pode causar problemas são aquelas que contêm a , porque isso também gera elementos de sequência válidos, portanto, precisamos lidar com isso separadamente.xi+1 = 2xi - 12
Última parte: vamos analisar a expressão real, porque há mais açúcar sintático engraçado aqui.
...a~Min~b...
Essa notação infix é abreviada Min[a,b]. Mas lembre-se disso ae bsão sequências; portanto, isso se expande para os quatro elementos Min[i1, i2, i3, i4]e nos fornece o menor elemento restante na entrada.
.../. 2->0
Se isso resultar em um 2, substituímos por um 0 (que gerará valores que não estão na sequência). O espaço é necessário porque, caso contrário, o Mathematica analisa o literal de flutuação .2.
NestList[...&,...,4]
Aplicamos a função sem nome à esquerda 4 vezes a esse valor e coletamos os resultados em uma lista.
2#-1&
Isso simplesmente multiplica sua entrada por 2 e a diminui.
...~SubsetQ~{a,b}
E, finalmente, verificamos que a lista que contém todos os elementos de ae bé um subconjunto disso.