Lua, 147 ไบต์
ฉันไม่คิดว่าฉันจะตีมันลงได้มากกว่านี้ฉันลองทดสอบหลายวิธีแล้วมันก็สั้นที่สุด แม้กระทั่งการใช้คอมไพเลอร์เก่าซึ่งมีฟังก์ชั่นที่เลิกใช้แล้วtable.foreach(table,function)
ก็ไม่ได้ตัดทิ้งบางไบต์
โปรแกรมนี้รับสตริงเป็นอาร์กิวเมนต์และพิมพ์การเชื่อมต่อของค่าตารางคั่นด้วยช่องว่าง
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 และคำอธิบาย
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
หากคุณกำลังหลงทางว่าทำไมถึงมีชุดตัวแปร แต่ไม่ได้ใช้ในรหัส golfed (ตัวแปร_
ใน for for loop) นี่คือสาเหตุ:
คุณมี 2 วิธีในการวนซ้ำอาร์เรย์ใน Lua ทั้งในสไตล์:
for i=1,#table do --[[code here, use table[i] ]] end
หรือในสไตล์ foreach:
for key,value do pairs(table) do --[[code here]] end
ฉันต้องการค่าที่มีอยู่ในตาราง{8,10,16}
เนื่องจากมันเป็นฐานต่าง ๆ ที่ฉันต้องทำซ้ำ แต่ฟังก์ชั่นที่มีการส่งคืนหลายครั้งจะไม่อนุญาตให้คุณเลือกรายการที่คุณต้องการส่งคืนจริง ๆ พวกเขาทำตามคำสั่งซื้อ จะมีตัวแปรvalue
ชุดผมจะต้องจับค่าของkey
เกินไป: _
นั่นคือสิ่งที่เราเรียกว่าหุ่น