g | x | w | all
Bytes Lang Time Link
020TIBASIC TI84 Plus CE Python250916T151805Zmadeforl
014APL Dyalog Extended200824T081305ZRazetime
013MATL160202T230043ZLuis Men
020Brachylog160203T145442ZFatalize
026ES7160202T235523ZNeil
021Pyth160202T202529ZDenker
010Jelly160202T201927Zlirtosia
016Japt160202T200232ZETHprodu
014CJam160202T200839Zlynn
028Julia160202T203315ZAlex A.

TI-BASIC (TI-84 Plus CE Python), 20 bytes

Input L
int(√(Ans-1
2Ans(Ans+1)-L+2

APL (Dyalog Extended), 25 19 14 bytes

{2⊥⍨3⍴⌊√⍵-1}-⊢

-6 bytes from Adám.

-5 bytes from Bubbler.

Try it online!

A direct implementation of the last function mentioned on the OEIS page:

\$a(n)=2×\Big(\big\lfloor\sqrt{n-1}\big\rfloor+1\Big)×\big\lfloor\sqrt{n-1}\big\rfloor-n+2\$

Explanation:

{(2-⍵)+2×(1+⌊√⍵-1)×⌊√⍵-1} ⍵ → n
                   ⌊√⍵-1  floor of root of n-1
         (1+⌊√⍵-1)×       times 1 + floor of root of n-1
       2×                 times 2
 (2-⍵)                    plus 2-n

Try it online!

MATL, 16 13 bytes

qX^Y[tQ*Q2*G-

Based on Lynn's CJam answer.

Try it online! (Y[ has been replaced by k according to changes in the language)

q       % input n. Subtract 1
X^      % square root
Y[      % floor
tQ      % duplicate and add 1
*       % multiply
Q       % add 1
2*      % multiply by 2
G-      % subtract n

This uses a different approach than other answers (16 bytes):

6Y3iQG2\+YLt!G=)

It explicitly generates the two spiral matrices (actually, vertically flipped versions of them, but that doesn't affect the output). The first one is

17    16    15    14    13
18     5     4     3    12
19     6     1     2    11
20     7     8     9    10
21    22    23    24    25

and the second one traces the modified path:

25    10    11    12    13
24     9     2     3    14
23     8     1     4    15
22     7     6     5    16
21    20    19    18    17

To find the n-th number of the sequence it suffices to find n in the second matrix and pick the corresponding number in the first. The matrices need to be big enough so that n appears, and should have odd size so that the origin (number 1) is in the same position in both.

Try it online too! (6Y3 has been moved according to changes in the language)

6Y3      % 'spiral' string
i        % input n
QG2\+    % round up to an odd number large enough
YL       % generate spiral matrix of that size: first matrix
t!       % duplicate and transpose: second matrix
G=       % logical index that locates n in the second matrix
)        % use that index into first matrix

Brachylog, 20 bytes

-1$r$[I*I+I+1=*2-?=.

This uses the same technique as pretty much all other answers.

Explanation

-1                   § Build the expression Input - 1
  $r                 § Square root of Input - 1
    $[I              § Unify I with the floor of this square root
       *I+I+1        § Build the expression I * I + I + 1
             =*2-?   § Evaluate the previous expression (say, M) and build the expression
                     § M * 2 - Input
                  =. § Unify the output with the evaluation of M * 2 - Input

A midly interesting fact about this answer is that it is easier and shorter to use = rather than parentheses.

ES7, 31 28 26 bytes

n=>(m=--n**.5|0)*++m*2-~-n

I had independently discovered Alex's formula but I can't prove it because I wasn't near a computer at the time.

Edit: Saved 3 bytes partly thanks to @ETHproductions. Saved a further 2 bytes.

Pyth, 21 bytes

K2-h+^.E@QKK^t.E@QKKQ

Try it online!

Nothing fancy going on. Same method as in the JAPT answer.

Jelly, 11 10 bytes

’ƽð²+ḷ‘Ḥ_

Another Jelly answer on my phone.

’ƽð²+ḷ‘Ḥ_   A monadic hook:
’ƽ          Helper link. Input: n
’             n-1
 ƽ            Atop integer square root. Call this m.
   ð         Start a new dyadic link. Inputs: m, n
    ²+ḷ‘Ḥ_    Main link:
    ²+ḷ       Square m, add it to itself,
       ‘      and add one.
        Ḥ     Double the result
         _    and subtract n.

Try it here.

Japt, 20 19 16 bytes

V=U¬c)²-V *2-U+2

Test it online!

Based on the observation that

F(N) = ceil(N^.5) * (ceil(N^.5)-1) - N + 2

Or, rather, that

F(N) = the first square greater than or equal to N, minus its square root, minus N, plus 2.

I don't know if this explanation is on the OEIS page, as I haven't looked at it yet.

CJam, 14 bytes

qi_(mQ7Ybb2*\-

Using Alex's approach: 2*(m^2+m+1)-n where m = isqrt(n-1).

Julia, 28 bytes

n->2((m=isqrt(n-1))^2+m+1)-n

This is a lambda function that accepts an integer and returns an integer. To call it, assign it to a variable.

We define m to be the largest integer such that m2n-1, i.e. the integer square root of n-1 (isqrt). We can then simplify the OEIS expression 2 (m + 1) m - n + 2 down to simply 2 (m2 + m + 1) - n.

Try it online