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ć, ("").char
aby 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 print
i Hello, World!
ciągów, których można używać jak wyżej.