Lua, 147 Bayt
Çok daha fazla golf oynayabileceğimi sanmıyorum, bunu yapmanın birçok yolunu test ettim ve en kısa zamanda gel. Kullanımdan kaldırılmış işlevi içeren eski bir derleyici kullanmak bile table.foreach(table,function)
bazı baytları tıraş etmez.
Bu program, bir dizeyi bağımsız değişken olarak alır ve boşluklarla ayrılmış bir tablo değerlerinin birleşimini yazdırır.
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 ve açıklamalar
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
Neden bir değişken kümesi olduğunu ancak golf kodunda kullanılmadığını ( _
for döngüsünde değişken ) geziyorsanız , neden:
Lua'da bir dizi için bir stil için yineleme yapmanın 2 yolu vardır:
for i=1,#table do --[[code here, use table[i] ]] end
veya bir foreach tarzında:
for key,value do pairs(table) do --[[code here]] end
{8,10,16}
Üzerinde yinelemek zorunda olduğum farklı üsleri gibi tablodaki değerlere ihtiyacım vardı. Ancak çoklu geri dönüşe sahip işlevler, gerçekte hangisini döndürmek istediğinizi seçmenize izin vermez, bir siparişi takip ederler. Değişken value
kümesi olması için , ben de değerini yakalamak gerekir key
: biz kukla diyoruz _
.