Como cientistas da computação, você provavelmente conhece todas as operações básicas da lista de pop e push . Estas são operações simples que modificam uma lista de elementos. No entanto, você já ouviu falar do fracasso da operação ? (como no flip- flop )? É bem simples. Dado um número n , inverta os primeiros n elementos da lista. Aqui está um exemplo:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
O legal da operação do flop é que você pode usá-lo para fazer algumas coisas legais em uma lista, como classificá-la . Vamos fazer algo semelhante com os flops:
Dada uma lista de números inteiros, "Vizinho". Em outras palavras, classifique-o para que cada elemento duplicado apareça consecutivamente.
Isso pode ser feito com flops! Por exemplo, pegue a seguinte lista:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
Isso nos leva à definição do desafio de hoje:
Dada uma lista de números inteiros, imprima qualquer conjunto de fracassos que resultem na vizinhança da lista.
Usando a última lista como exemplo, você deve gerar:
4
3
6
porque flopping a lista por 4, depois por 3 e por 6 resultará em uma lista vizinha. Lembre-se de que você não precisa imprimir a lista mais curta possível de fracassos vizinhos a uma lista. Se você tivesse impresso:
4
4
4
3
1
1
6
2
2
em vez disso, isso ainda seria uma saída válida. No entanto, você pode não sempre número uma saída maior do que o comprimento da lista. Isso ocorre porque, para uma lista a = [1, 2, 3]
, chamar não a.flop(4)
faz sentido.
aqui estão alguns exemplos:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
Lembre-se de que, em cada um desses exemplos, a saída fornecida é apenas uma saída potencial válida. Como eu disse antes, qualquer conjunto de flops vizinhos à lista fornecida é uma saída válida . Você pode usar esse script python para verificar se uma determinada lista de fracassos contorna corretamente uma lista.
Você pode receber entrada e saída em qualquer formato razoável. Por exemplo, argumentos da função / valor de retorno, STDIN / STDOUT, leitura / gravação de um arquivo etc. são todos válidos. Como sempre, esse é o código-golfe , então faça o programa mais curto possível e divirta-se! :)