TI-Basic (TI-84 Plus CE), 31 byte
.5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))i^(2Ans
TI-Basic adalah bahasa tokenized dan masing-masing token yang digunakan di sini adalah satu byte, kecuali remainder(
, yang dua.
Ini menggunakan versi 1-diindeks.
Penjelasan:
Ada pola yang berulang setiap empat angka. Dalam versi 1-diindeks, itu adalah: - (x + 1) / 2, (x + 1) / 2, - (x + 1) / 2, (x-1) / 2 untuk nilai input x. Ini dapat direpresentasikan sebagai fungsi yang didefinisikan secara terpisah.
f (x) = - (x + 1) / 2 jika x ≡ 1 mod 4; (x + 1) / 2 jika x ≡ 2 mod 4; - (x + 1) / 2 jika x ≡ 3 mod 4; (x-1) / 2 jika x ≡ 0 mod 4
Karena bagian "x ≡ 1 mod 4" dan "x ≡ 3 mod 4" sama, kita dapat menggabungkannya menjadi "x ≡ 1 mod 2".
Sekarang fungsi piecewise adalah:
f (x) = - (x + 1) / 2 jika x ≡ 1 mod 2; (x + 2) / 2 jika x ≡ 2 mod 4; (x-2) / 2 jika x ≡ 0 mod 4
Di sinilah saya mulai memecahnya menjadi perintah yang sebenarnya. Karena nilainya positif untuk indeks genap dan negatif untuk indeks ganjil, kita dapat menggunakan (-1) ^ x. Namun, dalam TI-Basic i^(2X
(5 byte) lebih pendek dari(-1)^Ans
(6 byte). Perhatikan bahwa tanda kurung diperlukan karena urutan operasi.
Sekarang kita memiliki cara untuk meniadakan input aneh keluar dari jalan, kita beralih ke mod (menambahkan negating kembali nanti). Saya membuat case dari input aneh sebagai default, jadi kita mulai dengan .5(Ans+1)
.
Untuk memperbaiki kasus input genap, cukup tambahkan satu ke nomor di dalam tanda kurung, tetapi hanya ketika x ≡ 0 mod 2. Ini dapat direpresentasikan sebagai .5(Ans+1+remainder(Ans+1,2))
atau .5(Ans+1+not(remainder(Ans,2)))
, tetapi mereka memiliki jumlah byte yang sama, sehingga tidak masalah yang mana.
Untuk memperbaiki kasus multiple-of-4 input, kita perlu mengurangi 3 dari angka di dalam tanda kurung, tetapi juga 1 karena semua kelipatan dari 4 genap, yang akan menambah satu dari langkah kita sebelumnya, jadi sekarang kita miliki .5(Ans+1+remainder(Ans+1,2)-4not(remainder(Ans,4)))
.
Sekarang, cukup tempelkan pada bagian penentu tanda sampai akhir untuk mendapatkan program lengkap.