Utilizzare una tabella di ricerca codificata in numeri a virgola mobile
Un consiglio leggermente avanzato:
Le piccole tabelle di ricerca sono utili per il golf del codice: è molto spesso necessario una funzione che associ, ad esempio, da 0 a 1, da 1 a 2, da 2 a 1 e tutto il resto a 0. Tuttavia, gli array TI-BASIC non sono adatti a questo scopo: da un lato, sono basati su uno e, dall'altro, non è possibile estrarre un valore finché l'array non viene archiviato Ans
o una variabile di elenco.
Nella mia risposta qui , memorizzo una piccola tabella di ricerca in una costante magica nella base 11. Elenca semplicemente i valori che desideri utilizzare,
{0,-1,5,-1,-1,2,9,-1,8,6}
convertire in un modulo utile
{1,0,6,0,0,3,10,0,9,7}
scrivi nella base desiderata (base 11)
.106003A097
e converti in base 10
-1+int(11fPart(11^Ans.0954191904
L'approccio di array più breve è di 8 byte in più!
{1,0,6,0,0,3,10,0,9,7}-1:Ans(X+1
TI-BASIC memorizza solo float con 14 cifre decimali, quindi è possibile memorizzare fino a 44 bit ma solo 14 cifre decimali.
Questa tecnica può spesso essere ulteriormente migliorata utilizzando la ricerca della forza bruta per trovare una costante magica anziché la codifica N-base. Sono ancora in procinto di giocare a golf con la risposta sopra, ma il golfista di lingua TI-BASIC Weregoose ha usato questo metodo per generare le differenze tra i numeri coprime con 30 (ovvero un elenco ripetuto di 6, 4, 2, 4, 2, 4, 6, 2
) sul wiki / forum TI-BASIC Sviluppatore con questo frammento:
2+2iPart(3fPart(576e^(fPart(I/8
La costante magica 576 è stata trovata usando Mathematica, ma se non possiedi una copia usa una sceneggiatura nella tua lingua preferita.