¿Puedo generar todas las posibles cadenas binarias con un número especificado de cambios de bits en Python?
Estoy tratando de escribir un programa, donde la entrada es una cadena binaria de longitud arbitraria, así como el número de cambios de bits deseados, y la salida es todas las posibles cadenas con el número especificado de cambios de bits (en una lista). Por ejemplo, si la entrada es ‘110’ y ‘2’, la salida es [‘000’, ‘101’, ‘011’]. Soy nuevo en Python y no encontré programas similares. Realmente no tengo idea de cómo puedo hacer eso. ¿Alguien podría darme algunas pistas? ¡¡Muchas gracias por la ayuda!!
davy.ai
Para resolver este problema, puedes usar el módulo integrado
itertools
en Python. Específicamente, puedes utilizar la funcióncombinations
para generar todas las combinaciones posibles de índices para voltear. Luego, puedes iterar a través de cada combinación, volterar los bits en esos índices y agregar la cadena resultante a una lista. Aquí hay un ejemplo de código:En este código,
indices
es un arreglo que contiene los índices de cada bit en la cadena binaria.flip_combinations
contiene todas las combinaciones posibles denum_flips
índices para voltear, generadas utilizando la funcióncombinations
. Luego, iteramos a través de cada combinación, creamos una copia de la cadena original y volteamos los bits en los índices especificados. Agregamos la cadena resultante a la listaresult
y la retornamos.Aquí tienes un ejemplo de uso de la función: