Луа, 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
Ну, я не уверен, что для этого лучше всего использовать lua с двухпериодной конкатенацией ... Но, эй, есть шанс. Я посмотрю, есть ли какие-либо улучшения, которые будут сделаны.
РЕДАКТИРОВАТЬ:
Я понял что-то случайно, что я нахожу довольно странным, но это работает.
В Lua все знают, что у вас есть возможность назначать функции переменным. Это одна из наиболее полезных функций 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
Но подождите, Луа позволяет немного ООП. Так что вы могли бы даже сделать:
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 с использованием подхода ООП (64 символа)
z=""s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Назначение string.sub с использованием подхода .. nil? (60 символов)
s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Если кто-то знает, почему это работает, мне было бы интересно.