Como randomizar a ordem dos elementos de uma lista e garantir que nenhum valor consecutivo seja igual?
Eu tenho uma lista python de strings, digamos:
elems = ["A", "B", "C", "D"]
Eu quero criar uma nova lista cujos elementos são cada elemento deelems
repetiu um número fixo de vezes (digamos duas vezes), em uma ordem aleatória, mas certificando-se de que dois elementos consecutivos nunca tenham o mesmo valor.
Por exemplo,["D", "B", "A", "B", "D", "C", "A", "C"]
é um bom resultado.["D", "B", "A", "B", "D", "C", "C", "A"]
não é (C é repetido na 6ª e 7ª posição).
A idéia mais simples é provavelmente apenas:
ans = 2*elems
random.shuffle(ans)
e então algum código para cuidar das repetições, mas todas as soluções em que consigo pensar envolvem loops potencialmente infinitos. Existe uma maneira simples e confiável de fazer isso?
Obrigado.