Étant donné une chaîne d'entrée contenant uniquement des lettres et des chiffres, écrivez un programme ou une fonction qui imprime les caractères ASCII imprimables possibles (Hex 20-7E) qui correspondent à la valeur de la chaîne dans les bases 8, 10 et 16 (si possible). Les caractères doivent être écrits en ordre croissant en fonction des bases avec lesquelles ils correspondent (base 8 d'abord, etc.). La sortie peut être au format tableau (comme [& . F]
) ou séparée par des espaces ou des retours à la ligne (un retour à la ligne est facultatif) comme les échantillons.
Si aucun caractère ASCII imprimable possible ne peut être formé, le programme ne doit pas avoir de sortie.
Échantillons
31
==> 1
47
==> ' / G
69
==> E i
7A
==> z
100
==> @ d
156
==> n
189
==> <empty>
potaTO
==> <empty>
5G
==> <empty>
19
==> <empty>
Il s'agit de code-golf , donc la réponse avec le moins d'octets l'emporte. Des règles standard s'appliquent.
la source
map
etfilter
, les compréhensions de tableaux sont vraiment utiles.'0'+b+...
quandb
sera toujours une chaîne?0+b+...
MATL , 23
2428octets1 octet de moins grâce à @David
Essayez-le en ligne!
la source
D
c'est nécessaire, n'est-ce pas? Beau travail sur la création du vecteur, j'ai fait presque la même chose que vous mais je n'ai pas pu raccourcir le vecteur[8,10,16]
.D
était nécessaire dans ce cas de vider la pile. Mais tu as raison, ça ne l'est pas! Merci!' ':'~'
un littéral prédéfini pour la prochaine version!32:126m
est une bonne idée !!Python 3,
8482 octetsla source
Pyth,
23212018 octetsSortie sous forme de tableau. Il y a un littéral
\x80
entre la barre oblique inverse et le C, que j'ai remplacé par un•
.Essayez-le ici .
la source
Jolf, 26 octets
Essayez-le ici! Suite de tests
Explication
la source
Bash + utilitaires GNU + ascii , 36
Je ne sais pas si l'utilisation de l'
ascii
utilitaire est autorisée. L'entrée est considérée comme un paramètre de ligne de commande.ascii
peut être installé sur Ubuntu avecsudo apt-get install ascii
.la source
Javascript ES6, 89 caractères
Tester:
la source
Lua, 147 octets
Je ne pense pas que je puisse jouer au golf beaucoup plus bas, j'ai testé de nombreuses façons de le faire et voici le plus court. Même en utilisant un ancien compilateur qui contient la fonction obsolète
table.foreach(table,function)
ne supprime pas certains octets.Ce programme prend une chaîne en argument et affiche la concaténation des valeurs d'une table séparées par des espaces.
Non golfé et explications
Si vous vous demandez pourquoi il y a un ensemble de variables mais non utilisé dans un code golfé (la variable
_
dans la boucle for), voici pourquoi:Vous avez 2 façons d'itérer sur un tableau dans Lua, soit dans un style for:
ou dans un style foreach:
J'avais besoin des valeurs contenues dans le tableau
{8,10,16}
car ce sont les différentes bases sur lesquelles je dois répéter. Mais les fonctions à retours multiples ne vous permettront pas de choisir celle que vous souhaitez réellement retourner, elles suivent un ordre. Pour que la variable soitvalue
définie, je dois également saisir la valeur dekey
: c'est ce que nous appelons un mannequin_
.la source
C (fonction), 76
Ideone.
la source
j*=j,j/=6
est plus clairement écrit commej=j*j/6
j*=j/6
mais cela n'a pas fonctionné en raison de la perte de précision lors de la division entièrej<20,
l'opérateur de virgule supprime tout l'effet de cela.JavaScript ES6,
8988 octets1 octet enregistré grâce à Neil!
Renvoie un tableau. Si ce n'est pas correct, cela fonctionne pour 8 octets supplémentaires, affichant les correspondances possibles.
Afficher l'extrait de code
la source
47
.Number()
exige0o
maiseval
est content de juste0
. Désolé pour la confusion.R, 84 octets
utilise
strtoi
pour convertir à chacune des bases, puis convertir en caractère si dans la plage appropriée. Pourrait économiser 4 octets supplémentaires en supprimantcat
si nous autorisions l'impression par défaut des caractères (enveloppé""
)la source