Vượt qua điều này như là đối số đầu tiên:
C=("").char;_G[C(112,114,105,110,116)](C(72,101,108,108,111,44,32,87,111,114,108,100,33))
Giả sử mã gốc nằm trong một tệp tehtmi.lua
, hãy chạy (trong bash hoặc shell tương tự):
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))'
Nó cũng hoạt động trên Lua 5.3, đây là những gì TIO sử dụng, vậy tại sao bạn không thử trực tuyến ? Tôi chưa thử nghiệm triển khai sử dụng lõi "PUC-Rio's Lua 5.1" (vì tôi thực sự không thể tìm thấy bất kỳ thông tin nào), nhưng giải pháp của tôi có lẽ cũng hoạt động ở đó.
Làm sao?
Nó chạy đối số đầu tiên dưới dạng mã, nhưng chỉ khi nó chứa ít hơn 5 ký tự chữ thường.
Bí quyết là chạy print("Hello, World!")
. Một cách khác có thể chạy này là sử dụng _G["print"]("Hello, World!")
, chỉ sử dụng chuỗi.
Nhưng chúng ta không thể sử dụng chuỗi trực tiếp do hạn chế số lượng chữ thường, tuy nhiên, bạn có thể chạy ("").char
để lấy hàm string.char
, có thể chuyển đổi từ một chuỗi byte thành chuỗi. Tôi đã gán nó cho một biến chữ hoa (vì vậy chúng tôi không đạt giới hạn) để chúng tôi có thể sử dụng nó để xây dựng cả chuỗi print
và Hello, World!
chuỗi có thể được sử dụng như trên.