Lua, 77 75 65 bytes
x,v=z.rep,io.read()for a=1,v do print(x(0,a-1)..'1'..x(0,v-a))end
Bem, não tenho certeza se lua é a melhor linguagem para isso com a concatenação de dois períodos ... Mas ei, há uma chance disso. Vou ver se há alguma melhoria a ser feita.
EDITAR:
Eu descobri algo sobre acidente que eu acho bastante estranho, mas funciona.
Em Lua, todo mundo sabe que você tem a capacidade de atribuir funções a variáveis. Este é um dos recursos mais úteis do CodeGolf.
Isso significa, em vez de:
string.sub("50", 1, 1) -- = 5
string.sub("50", 2, 2) -- = 0
string.sub("40", 1, 1) -- = 4
string.sub("40", 2, 2) -- = 0
Você consegue fazer isso:
s = string.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Mas espere, Lua permite uma certa quantidade de POO. Então você pode potencialmente fazer:
z=""
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Isso também funcionará e reduzirá os caracteres.
Agora aqui vem a parte estranha. Você nem precisa atribuir uma string a qualquer momento. Simplesmente fazendo:
s = z.sub
s("50", 1, 1) -- = 5
s("50", 2, 2) -- = 0
s("40", 1, 1) -- = 4
s("40", 2, 2) -- = 0
Vai funcionar.
Para que você possa ver visualmente a diferença, dê uma olhada nos resultados deste jogo:
Usando string.sub (88 caracteres)
string.sub("50", 1, 1)string.sub("50", 2, 2)string.sub("40", 1, 1)string.sub("40", 2, 2)
Atribuindo string.sub a uma variável (65 caracteres)
s=string.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Atribuindo string.sub usando uma abordagem OOP (64 caracteres)
z=""s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Atribuindo string.sub usando uma abordagem .. nil? (60 caracteres)
s=z.sub s("50", 1, 1)s("50", 2, 2)s("40", 1, 1)s("40", 2, 2)
Se alguém souber por que isso funciona, eu estaria interessado.