Gunakan tabel pencarian yang dikodekan dalam angka floating-point
Kiat yang agak canggih:
Tabel pencarian kecil berguna untuk kode golf: sangat sering bahwa kita memerlukan fungsi yang memetakan, misalnya 0 hingga 1, 1 hingga 2, 2 hingga 1, dan segala sesuatu yang lain ke 0. Namun, array TI-BASIC tidak cocok untuk tujuan ini: untuk satu hal, mereka berbasis satu, dan untuk yang lain, nilai tidak dapat diekstraksi sampai array disimpan dalam Ans
atau variabel daftar.
Dalam jawaban saya di sini , saya menyimpan tabel pencarian kecil di konstanta ajaib di basis 11. Cukup daftarkan nilai yang ingin Anda gunakan,
{0,-1,5,-1,-1,2,9,-1,8,6}
konversikan ke bentuk yang bermanfaat
{1,0,6,0,0,3,10,0,9,7}
tulis di pangkalan yang Anda inginkan (pangkalan 11)
.106003A097
dan konversikan ke basis 10
-1+int(11fPart(11^Ans.0954191904
Pendekatan array terpendek adalah 8 byte lebih lama!
{1,0,6,0,0,3,10,0,9,7}-1:Ans(X+1
TI-BASIC hanya menyimpan float hingga 14 digit desimal, sehingga Anda dapat menyimpan hingga 44ish bits tetapi hanya 14 digit desimal.
Teknik ini sering dapat ditingkatkan lebih lanjut dengan menggunakan pencarian brute-force untuk menemukan konstanta ajaib daripada pengkodean basis-N. Saya masih dalam proses golf jawaban di atas, tetapi pegolf TI-BASIC Weregoose menggunakan metode ini untuk menghasilkan perbedaan antara angka coprime dengan 30 (yaitu, daftar berulang 6, 4, 2, 4, 2, 4, 6, 2
) pada wiki / forum TI-BASIC Pengembang dengan cuplikan ini:
2+2iPart(3fPart(576e^(fPart(I/8
Konstanta ajaib 576 ditemukan menggunakan Mathematica, tetapi jika Anda tidak memiliki salinannya, gunakan skrip dalam bahasa favorit Anda.