Muayyan spiral nol punktlaridan numaralandırmak yo'li Eng qisqa

Naturalsdan tamsaytlargacha quyidagi xaritani yaratish uchun eng qisman (pseudocode) usul f (0) = 0; f (1) = 1; f (2) = -1; f (3) = 2; f (4) = -2; f (5) = 3; va boshqalar

Ularni ikkita nosimmetrik Arximed spiralining nolinchi o'tishidan tasavvur qilishingiz mumkin.

Oh, va float matematika ruxsat yo'q! Float matematikasi bu holatda yomon bo'ladi.

1

3 javoblar

Wolfram Alpha found a closed form for calculating the nth term directly:

closed form

n ifodasi, agar n to'liq musbat bo'lsa, (n% 2 == 0? 1: -1) deb yozilishi mumkin.

3
qo'shib qo'ydi

C-notation bilan f (n) bo'ladi n% 2 == 0? -n/2: (n + 1)/2 , ya'ni:

If n is even then -n/2, if n is odd then (n+1)/2

1
qo'shib qo'ydi

Yaxshi emas, balki ishlaydigan va shartlarni ishlatmaydigan bitta liner:

f(i):
  f := (2 * (i mod 2) - 1) * ((i + 1) >> 1)

Albatta, shart-sharoitlarni ishlatib, u ko'proq o'qiydi:

f(i):
  if (i mod 2) is
    0: f := -((i + 1) >> 1)
    1: f :=  ((i + 1) >> 1)
1
qo'shib qo'ydi