लुआ, 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," "))
अपुष्ट और स्पष्टीकरण
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
यदि आप भटक रहे हैं कि एक चर सेट क्यों है, लेकिन इसका उपयोग गोल्फ कोड ( _
लूप के लिए चर ) में नहीं किया गया है , तो यहां क्यों है:
लुआ में एक सरणी पर पुनरावृति करने के लिए आपके पास 2 तरीके हैं, या तो शैली के लिए:
for i=1,#table do --[[code here, use table[i] ]] end
या एक फूटी शैली में:
for key,value do pairs(table) do --[[code here]] end
मुझे सारणी में निहित मूल्यों की आवश्यकता थी {8,10,16}
क्योंकि वे विभिन्न आधार हैं जिन पर मुझे चलना है। लेकिन कई रिटर्न वाले फ़ंक्शंस आपको यह चुनने की अनुमति नहीं देंगे कि आप वास्तव में किसे लौटना चाहते हैं, वे एक आदेश का पालन करते हैं। चर value
सेट करने के लिए, मुझे key
भी मूल्य पकड़ने की आवश्यकता है: जिसे हम डमी कहते हैं _
।