Übergeben Sie dies als erstes Argument:
C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))
Angenommen, der ursprüngliche Code befindet sich in einer Datei tehtmi.lua
, führen Sie ihn aus (in Bash oder einer ähnlichen Shell):
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))'
Es funktioniert auch mit Lua 5.3, das von TIO verwendet wird. Warum probieren Sie es nicht online aus ? Ich habe noch keine Implementierung getestet, die den "PUC-Rios Lua 5.1" -Kern verwendet (weil ich keine Informationen finden kann), aber meine Lösung funktioniert wahrscheinlich auch dort.
Wie?
Das erste Argument wird als Code ausgeführt, jedoch nur, wenn es weniger als 5 Kleinbuchstaben enthält.
Der Trick ist zu rennen print("Hello, World!")
. Eine andere Möglichkeit, dies auszuführen, ist die Verwendung _G["print"]("Hello, World!")
, bei der nur Zeichenfolgen verwendet werden.
Aufgrund der Einschränkung der Anzahl der Kleinbuchstaben können wir die Zeichenfolge jedoch nicht direkt verwenden. Sie können jedoch ausführen ("").char
, um die Funktion string.char
abzurufen, die von einer Reihe von Bytes in eine Zeichenfolge konvertiert werden kann. Ich habe es einer Großbuchstabenvariablen zugewiesen (damit wir das Limit nicht erreichen), damit wir damit sowohl die print
als auch die Hello, World!
Zeichenfolgen erstellen können, die wie oben verwendet werden können.