TI-Basic (TI-84 Plus CE), 31 octets
.5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))i^(2Ans
TI-Basic est un langage à jetons et chaque jeton utilisé ici est un octet, sauf remainder(
deux.
Ceci utilise la version 1-indexée.
Explication:
Il existe un modèle qui se répète tous les quatre chiffres. Dans la version 1-indexée, il s'agit de: - (x + 1) / 2, (x + 1) / 2, - (x + 1) / 2, (x-1) / 2 pour la valeur d'entrée x. Ceci peut être représenté comme une fonction définie par morceaux.
f (x) = - (x + 1) / 2 si x ≡ 1 mod 4; (x + 1) / 2 si x 2 mod 4; - (x + 1) / 2 si x 3 mod 4; (x-1) / 2 si x 0 mod 4
Les parties "x ≡ 1 mod 4" et "x 3 mod 4" étant identiques, nous pouvons les combiner en "x 1 mod 2".
Maintenant, la fonction par morceaux est:
f (x) = - (x + 1) / 2 si x ≡ 1 mod 2; (x + 2) / 2 si x 2 mod 4; (x-2) / 2 si x 0 mod 4
C'est là que je commence à le diviser en commandes réelles. Puisque la valeur est positive pour les indices pairs et négative pour les impairs, nous pouvons utiliser (-1) ^ x. Cependant, dans TI-Basic i^(2X
(5 octets), sa longueur est inférieure à(-1)^Ans
(6 octets). Notez que les parenthèses sont obligatoires en raison de l'ordre des opérations.
Maintenant que nous avons le moyen de supprimer les entrées impaires, nous passons aux mods (ajout de la négation plus tard). J'ai fait le cas d'une entrée impaire la valeur par défaut, nous allons donc commencer par.5(Ans+1)
.
Pour résoudre le cas d'une entrée paire, ajoutez simplement un au nombre entre parenthèses, mais uniquement lorsque x 0 mod 2. Cela peut être représenté par .5(Ans+1+remainder(Ans+1,2))
ou.5(Ans+1+not(remainder(Ans,2)))
, mais ils ont le même nombre d'octets, donc peu importe lequel.
Pour résoudre le cas d'une entrée multiple de 4, nous devons soustraire 3 du nombre entre parenthèses, mais également un autre 1 car tous les multiples de 4 sont pairs, ce qui en ajouterait un de notre étape précédente, nous avons donc maintenant .5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))
.
Maintenant, il suffit de clouer sur la partie déterminant la signalisation pour obtenir le programme complet.