Passe isso como o primeiro argumento:
C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))
Supondo que o código original esteja em um arquivo tehtmi.lua
, execute (no bash ou em um shell semelhante):
lua tehtmi.lua 'C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))'
Também funciona no Lua 5.3, que é o que o TIO usa. Por que você não tenta online ? Eu não testei em uma implementação que usa o núcleo "5.1 da Lua da PUC-Rio" (porque realmente não consigo encontrar nenhuma informação), mas minha solução provavelmente também funciona lá.
Quão?
Ele executa o primeiro argumento como código, mas apenas se contiver menos de 5 caracteres em minúsculas.
O truque é correr print("Hello, World!")
. Outra maneira de executar isso é usando _G["print"]("Hello, World!")
, que usa apenas strings.
Mas não podemos usar a string diretamente devido à restrição de contagem em minúsculas; no entanto, você pode executar ("").char
para obter a função string.char
, que pode converter de uma série de bytes em uma string. Eu o atribuai a uma variável maiúscula (para não atingirmos o limite), para que possamos usá-la para construir print
as Hello, World!
strings e as strings que podem ser usadas como acima.