login
List points (x,y) having integer coordinates with x >= 0, y >= 0, sorted first by x^2+y^2 and in case of a tie, by x-coordinate. Sequence gives x-coordinates.
7

%I #21 Mar 05 2023 20:12:32

%S 0,0,1,1,0,2,1,2,2,0,3,1,3,2,3,0,4,1,4,3,2,4,0,3,4,5,1,5,2,5,4,3,5,0,

%T 6,1,6,2,6,4,5,3,6,0,7,1,5,7,4,6,2,7,3,7,5,6,0,8,1,4,7,8,2,8,6,3,8,5,

%U 7,4,8,0,9,1,9,2,6,7,9,5,8,3,9,4,9,7,0,6,8,10,1,10,2,10,5,9,3,10,7,8

%N List points (x,y) having integer coordinates with x >= 0, y >= 0, sorted first by x^2+y^2 and in case of a tie, by x-coordinate. Sequence gives x-coordinates.

%e The first few points (listing [x^2+y^2,x,y]) are: [0, 0, 0], [1, 0, 1], [1, 1, 0], [2, 1, 1], [4, 0, 2], [4, 2, 0], [5, 1, 2], [5, 2, 1], [8, 2, 2], [9, 0, 3], [9, 3, 0], [10, 1, 3], [10, 3, 1], [13, 2, 3], [13, 3, 2], [16, 0, 4], [16, 4, 0], [17, 1, 4], [17, 4, 1], [18, 3, 3], [20, 2, 4], [20, 4, 2], [25, 0, 5], [25, 3, 4], [25, 4, 3], ...

%p L:=[];

%p M:=30;

%p for i from 0 to M do

%p for j from 0 to M do

%p L:=[op(L),[i^2+j^2,i,j]]; od: od:

%p t4:= sort(L,proc(a,b) evalb(a[1]<=b[1]); end);

%p t4x:=[seq(t4[i][2],i=1..100)]; # A283305

%p t4y:=[seq(t4[i][3],i=1..100)]; # A283306

%t nt = 105; (* number of terms to produce *)

%t S[m_] := S[m] = Table[{x, y}, {x, 0, m}, {y, 0, m}] // Flatten[#, 1]& // SortBy[#, {#.#&, #[[1]]&}]& // #[[All, 1]]& // PadRight[#, nt]&;

%t S[m = 2];

%t S[m = 2m];

%t While[S[m] =!= S[m/2], m = 2m];

%t S[m] (* _Jean-François Alcover_, Mar 05 2023 *)

%o (PARI) for(r2=0,113,for(x=0,round(sqrt(r2)),y2=r2-x^2;if(issquare(y2),print1(x,", ")))) \\ _Hugo Pfoertner_, Jun 18 2018

%Y For the y coordinates see A283306.

%Y See also A000925, A283303, A283304, A283307, A283308.

%K nonn

%O 1,6

%A _N. J. A. Sloane_, Mar 04 2017, following a suggestion from _Ahmet Arduç_.