Podaj to jako pierwszy argument:
C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))
Zakładając, że oryginalny kod znajduje się w pliku tehtmi.lua, uruchom (w bash lub podobnej powłoce):
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))'
Działa również na Lua 5.3, z czego korzysta TIO, więc dlaczego nie wypróbować go online ? Nie testowałem na implementacji wykorzystującej rdzeń „PUC-Rio's Lua 5.1” (ponieważ tak naprawdę nie mogę znaleźć żadnych informacji), ale moje rozwiązanie prawdopodobnie tam również działa.
W jaki sposób?
Uruchamia pierwszy argument jako kod, ale tylko jeśli zawiera mniej niż 5 małych liter.
Sztuką jest ucieczka print("Hello, World!"). Innym sposobem, w jaki można to uruchomić, jest użycie _G["print"]("Hello, World!"), które wykorzystuje tylko ciągi znaków.
Ale nie możemy użyć łańcucha bezpośrednio ze względu na ograniczenie małych liter, jednak możesz uruchomić, ("").charaby uzyskać funkcję string.char, która może konwertować z serii bajtów na ciąg. Przypisałem ją do zmiennej wielkiej litery (abyśmy nie osiągnęli limitu), abyśmy mogli użyć jej do skonstruowania zarówno ciągów znaków, jak printi Hello, World!ciągów, których można używać jak wyżej.