Lua, 147 byte
Non credo di poter giocare a golf molto di più, ho testato molti modi per farlo, e qui arriva il più breve. Anche l'utilizzo di un vecchio compilatore che contiene la funzione obsoleta table.foreach(table,function)non elimina alcuni byte.
Questo programma accetta una stringa come argomento e stampa la concatenazione dei valori di una tabella separati da spazi.
t={}for _,i in pairs({8,10,16})do x=tonumber(arg[1],i)x=x and x or 0 t[#t+1]=127>x and 19<x and string.char(x)or nil end print(table.concat(t," "))
Ungolfed e spiegazioni
t={} -- Initalise the array containing the chars to print
for _,i in pairs({8,10,16}) -- Iterate over the array {8,10,16}
do
x=tonumber(arg[1],i) -- convert the input in base i to a number in base 10
x=x and x or 0 -- if the input wasn't a number, x is nil
-- use a ternary operator to set x in this case
t[#t+1]=127>x and 19<x -- if x is the bytecode of a printable character
and string.char(x)or nil-- insert this character into t
end
print(table.concat(t," ")) -- concatenate the values in t with " " as separator
-- and print it
Se stai vagando perché c'è un set di variabili ma non utilizzato in un codice golf (la variabile _nel ciclo for), ecco perché:
Hai 2 modi per iterare su un array in Lua, in uno stile:
for i=1,#table do --[[code here, use table[i] ]] end
o in stile foreach:
for key,value do pairs(table) do --[[code here]] end
Avevo bisogno dei valori contenuti nella tabella {8,10,16}in quanto sono le diverse basi su cui devo scorrere. Ma le funzioni con ritorno multiplo non ti permetteranno di scegliere quale vuoi effettivamente essere restituito, ma seguono un ordine. Per valueimpostare la variabile , devo anche cogliere il valore key: questo è ciò che chiamiamo un manichino _.