Луа, 77 75 65 байт
x,v=z.rep,io.read()for a=1,v do print(x(0,a-1)..'1'..x(0,v-a))end
Ну, я не впевнений, чи найкраща мова для цього є луа з двома конкатенаціями періоду ... Але ей, в цьому є постріл. Я побачу, чи варто внести якісь поліпшення.
Редагувати:
Я вирішив щось випадково, що мені здається дивним, але це працює.
У Луї всі знають, що ти маєш можливість присвоювати функції змінним. Це одна з більш корисних функцій CodeGolf.
Це означає:
string.sub("50", 1, 1) -- = 5
string.sub("50", 2, 2) -- = 0
string.sub("40", 1, 1) -- = 4
string.sub("40", 2, 2) -- = 0
Ви можете зробити це:
s = string.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Але зачекайте, Lua дозволяє деяку кількість OOP. Таким чином, ви можете навіть зробити це:
z=""
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Це буде добре працювати і скорочує персонажів.
Тепер ось приходить дивна частина. Вам навіть не потрібно призначати рядок в будь-якій точці. Просто робимо:
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Буду працювати.
Таким чином, ви зможете візуально побачити різницю, погляньте на результати гольфу:
Використання string.sub (88 символів)
string.sub("50", 1, 1)string.sub("50", 2, 2)string.sub("40", 1, 1)string.sub("40", 2, 2)
Присвоєння string.sub змінної (65 символів)
s=string.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Призначення string.sub з використанням підходу OOP (64 символи)
z=""s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Призначення string.sub за допомогою підходу .. нуля? (60 символів)
s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Якщо хтось знає, чому це працює, мені було б цікаво.