(Título con agradecimiento a @ChasBrown)
El fondo
Este desafío está inspirado en una pregunta que publiqué recientemente en Puzzling Stack Exchange . Siéntase libre de seguir el enlace si está interesado en la pregunta original. Si no, no te aburriré con los detalles aquí.
Los hechos
Cada carácter ASCII estándar imprimible tiene un valor decimal entre 32 y 126 inclusive. Estos se pueden convertir a sus números binarios correspondientes en el rango de 100000 a 1111110 inclusive. Cuando sumas los bits de estos números binarios, siempre terminarás con un número entero entre 1 y 6 inclusive.
El reto
Dado un entero entre 1 y 6 inclusive como entrada, escriba un programa o función que genere en cualquier formato aceptable todos los caracteres ASCII estándar imprimibles donde la suma de los bits de su valor binario sea igual al entero de entrada.
Los ejemplos / casos de prueba
1 -> ' @'
2 -> '!"$(0ABDHP`'
3 -> '#%&)*,1248CEFIJLQRTXabdhp'
4 -> ''+-.3569:<GKMNSUVYZ\cefijlqrtx'
5 -> '/7;=>OW[]^gkmnsuvyz|'
6 -> '?_ow{}~'
Aquí está disponible una implementación de referencia de Python no protegida (TIO) .
Las normas
- Suponga que la entrada siempre será un número entero (o representación de cadena de un número entero) entre 1 y 6 inclusive.
- Puede escribir un programa para mostrar los resultados o una función para devolverlos.
- La salida puede estar en cualquier formato razonable pero debe ser consistente para todas las entradas . Si elige generar una cadena entre comillas, se debe utilizar el mismo tipo de comillas para todas las entradas.
- Lagunas estándar prohibidas como de costumbre.
- Este es el código de golf, por lo que gana el código más corto en cada idioma.
') para la representación de cadena de una cadena por defecto, pero usa comillas dobles ( ") si la cadena contiene una comilla simple y no comillas dobles . No es que este caso específico importe mucho, ya que probablemente sea mejor que devuelva la cadena real en lugar de su representación, y de todos modos todavía puede usar comillas simples en dicha cadena para la entrada, pero creo que vale la pena mencionarlo aquí.
« »)? : D


63vs?)?