Use una tabla de búsqueda codificada en números de punto flotante
Un consejo un poco avanzado:
Las tablas de búsqueda pequeñas son útiles para el golf de código: muy a menudo necesitamos una función que asigne, por ejemplo, 0 a 1, 1 a 2, 2 a 1, y todo lo demás a 0. Sin embargo, los arreglos TI-BASIC no son adecuados para este propósito: por un lado, están basados en uno, y por otro, un valor no se puede extraer hasta que la matriz se almacene en Ans
una variable de lista o no.
En mi respuesta aquí , guardo una pequeña tabla de búsqueda en una constante mágica en la base 11. Simplemente enumere los valores que desea usar,
{0,-1,5,-1,-1,2,9,-1,8,6}
convertir a una forma útil
{1,0,6,0,0,3,10,0,9,7}
escriba en su base deseada (base 11)
.106003A097
y convertir a base 10
-1+int(11fPart(11^Ans.0954191904
¡El enfoque de matriz más corto es 8 bytes más largo!
{1,0,6,0,0,3,10,0,9,7}-1:Ans(X+1
TI-BASIC solo almacena flotantes a 14 dígitos decimales, por lo que puede almacenar hasta 44 bits pero solo 14 dígitos decimales.
Esta técnica a menudo se puede mejorar aún más mediante el uso de la búsqueda de fuerza bruta para encontrar una constante mágica en lugar de una codificación de base-N. Todavía estoy en el proceso de jugar golf la respuesta anterior, pero el legendario golfista TI-BASIC Weregoose usó este método para generar las diferencias entre los números coprimos con 30 (es decir, una lista repetida de 6, 4, 2, 4, 2, 4, 6, 2
) en el wiki / foro TI-BASIC Desarrollador con este fragmento:
2+2iPart(3fPart(576e^(fPart(I/8
La constante mágica 576 se encontró usando Mathematica, pero si no posee una copia, use un script en su idioma favorito.