লুয়া, 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
যদি আপনি ঘোরাফেরা করেন তবে কেন একটি ভেরিয়েবল সেট রয়েছে তবে গল্ফড কোডে ব্যবহার করা হয়নি ( _
লুপের জন্য ভেরিয়েবল ), এখানে কেন:
আপনার কাছে লুয়ার একটি অ্যারের উপরে পুনরাবৃত্তি করার দুটি উপায় রয়েছে, হয় স্টাইলের জন্য:
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
খুব মানও ধরতে হবে: এটাকে আমরা ডামি বলি _
।