(Titre avec merci à @ChasBrown)
L'arrière-plan
Ce défi est inspiré d'une question que j'ai récemment publiée sur Puzzling Stack Exchange . N'hésitez pas à suivre le lien si vous êtes intéressé par la question d'origine. Sinon, je ne vous ennuierai pas avec les détails ici.
Les faits
Chaque caractère ASCII standard imprimable a une valeur décimale comprise entre 32 et 126 inclus. Ceux-ci peuvent être convertis en leurs nombres binaires correspondants dans la plage 100000 à 1111110 inclus. Lorsque vous additionnez les bits de ces nombres binaires, vous vous retrouverez toujours avec un entier compris entre 1 et 6 inclus.
Le défi
Étant donné un entier compris entre 1 et 6 inclus en entrée, écrivez un programme ou une fonction qui produira dans n'importe quel format acceptable tous les caractères ASCII standard imprimables où la somme des bits de leur valeur binaire est égale à l'entier en entrée.
Les exemples / cas de test
1 -> ' @'
2 -> '!"$(0ABDHP`'
3 -> '#%&)*,1248CEFIJLQRTXabdhp'
4 -> ''+-.3569:<GKMNSUVYZ\cefijlqrtx'
5 -> '/7;=>OW[]^gkmnsuvyz|'
6 -> '?_ow{}~'
Une implémentation de référence Python non golfée est disponible ici (TIO) .
Les règles
- Supposons que l'entrée sera toujours un entier (ou une représentation sous forme de chaîne d'un entier) entre 1 et 6 inclus.
- Vous pouvez écrire un programme pour afficher les résultats ou une fonction pour les renvoyer.
- La sortie peut être dans n'importe quel format raisonnable mais doit être cohérente pour toutes les entrées . Si vous choisissez de sortir une chaîne entre guillemets, le même type de guillemets doit être utilisé pour toutes les entrées.
- Échappatoires standard interdites comme d'habitude.
- C'est le code golf, donc le code le plus court dans chaque langue l'emporte.
') pour la représentation sous forme de chaîne d'une chaîne par défaut, mais utilise des guillemets doubles ( ") si la chaîne contient un guillemet simple et pas de guillemets doubles . Non pas que ce cas spécifique importera beaucoup, car vous feriez probablement mieux de renvoyer la chaîne réelle au lieu de sa représentation, et vous pouvez toujours utiliser des guillemets simples dans une telle chaîne pour l'entrée, mais je pense qu'il vaut la peine de mentionner ici.
« »)? : D


63vs?)?