Sử dụng bảng tra cứu được mã hóa theo số dấu phẩy động
Một mẹo hơi cao cấp:
Các bảng tra cứu nhỏ rất hữu ích cho việc chơi gôn mã: rất thường xuyên là chúng ta cần một hàm ánh xạ, ví dụ: 0 đến 1, 1 đến 2, 2 đến 1 và mọi thứ khác đến 0. Tuy nhiên, mảng TI-BASIC không phù hợp cho mục đích này: đối với một điều, chúng là một nền tảng và đối với một mục đích khác, một giá trị không thể được trích xuất cho đến khi mảng được lưu trữ trong Ans
hoặc một biến danh sách.
Trong câu trả lời của tôi ở đây , tôi lưu trữ một bảng tra cứu nhỏ trong hằng số ma thuật ở cơ sở 11. Chỉ cần liệt kê các giá trị bạn muốn sử dụng,
{0,-1,5,-1,-1,2,9,-1,8,6}
chuyển đổi thành một hình thức hữu ích
{1,0,6,0,0,3,10,0,9,7}
viết vào cơ sở mong muốn của bạn (cơ sở 11)
.106003A097
và chuyển đổi sang cơ sở 10
-1+int(11fPart(11^Ans.0954191904
Cách tiếp cận mảng ngắn nhất dài hơn 8 byte!
{1,0,6,0,0,3,10,0,9,7}-1:Ans(X+1
TI-BASIC chỉ lưu trữ số float đến 14 chữ số thập phân, vì vậy bạn có thể lưu trữ tối đa 44 bit nhưng chỉ có 14 chữ số thập phân.
Kỹ thuật này thường có thể được cải thiện hơn nữa bằng cách sử dụng tìm kiếm brute-force để tìm hằng số ma thuật thay vì mã hóa cơ sở N. Tôi vẫn đang trong quá trình chơi golf câu trả lời ở trên, nhưng người chơi golf TI-BASIC chiều dài Weregoose đã sử dụng phương pháp này để tạo ra sự khác biệt giữa các số coprime với 30 (nghĩa là một danh sách lặp lại 6, 4, 2, 4, 2, 4, 6, 2
) trên wiki / diễn đàn TI-BASIC Nhà phát triển với đoạn trích này:
2+2iPart(3fPart(576e^(fPart(I/8
Hằng số ma thuật 576 đã được tìm thấy bằng Mathicala, nhưng nếu bạn không sở hữu một bản sao, hãy sử dụng tập lệnh bằng ngôn ngữ yêu thích của bạn.