Lua, 147 Bytes
Saya tidak berpikir saya bisa bermain golf lebih banyak, saya sudah menguji banyak cara untuk melakukannya, dan inilah yang terpendek. Bahkan menggunakan kompiler lama yang berisi fungsi yang sudah tidak digunakan lagitable.foreach(table,function)
tidak mengurangi beberapa byte.
Program ini mengambil string sebagai argumen, dan mencetak rangkaian nilai tabel yang dipisahkan oleh spasi.
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," "))
Tidak disatukan dan penjelasan
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
Jika Anda bingung mengapa ada set variabel tetapi tidak digunakan dalam kode golf (variabel _
dalam for loop), inilah alasannya:
Anda memiliki 2 cara untuk beralih pada array di Lua, baik dengan gaya for:
for i=1,#table do --[[code here, use table[i] ]] end
atau dalam gaya foreach:
for key,value do pairs(table) do --[[code here]] end
Saya membutuhkan nilai-nilai yang terkandung dalam tabel {8,10,16}
karena mereka adalah pangkalan yang berbeda yang harus saya ulangi. Tetapi fungsi-fungsi dengan pengembalian berganda tidak memungkinkan Anda untuk memilih mana yang sebenarnya ingin Anda kembalikan, mereka mengikuti pesanan. Untuk memiliki value
set variabel , saya perlu menangkap nilai key
juga: itu yang kita sebut dummy _
.