Lua, 77 75 65 bayt
x,v=z.rep,io.read()for a=1,v do print(x(0,a-1)..'1'..x(0,v-a))end
İki dönem bitiştirme ile Lua'nın bunun için en iyi dil olup olmadığından emin değilim. Yapılması gereken herhangi bir gelişme olup olmadığını göreceğim.
DÜZENLE:
Kaza konusunda oldukça garip bulduğum bir şey buldum ama işe yarıyor.
Lua'da herkes değişkenlere fonksiyonlar atayabileceğinizi biliyor. Bu, daha kullanışlı CodeGolf özelliklerinden biridir.
Bunun yerine:
string.sub("50", 1, 1) -- = 5
string.sub("50", 2, 2) -- = 0
string.sub("40", 1, 1) -- = 4
string.sub("40", 2, 2) -- = 0
Bunu yapabilirsiniz:
s = string.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Fakat bekleyin, Lua bir miktar OOP'a izin verir. Böylece potansiyel olarak bile yapabilirsiniz:
z=""
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Bu da işe yarayacak ve karakterleri kesecek.
Şimdi burada tuhaf kısım geliyor. Herhangi bir noktada bir dize atamanıza bile gerek yok. Basitçe yapıyorum:
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Çalışacak.
Böylece farkı görsel olarak görebilir, golfün sonuçlarına bir göz atabilirsiniz:
String.sub kullanımı (88 karakter)
string.sub("50", 1, 1)string.sub("50", 2, 2)string.sub("40", 1, 1)string.sub("40", 2, 2)
String.sub değişkenine atama (65 karakter)
s=string.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Bir OOP yaklaşımı kullanarak string.sub atama (64 karakter)
z=""s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
String.sub atama .. nil yaklaşımı kullanarak? (60 karakter)
s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Birisi bunun neden işe yaradığını bilirse, ilgilenirim.