This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.
%I A325603 #26 May 30 2024 15:59:47 %S A325603 20,35,35,54,65,77,69,84,84,98,99,104,99,95,114,104,119,98,110,114, %T A325603 104,132,135,119,132,153,135,174,174,161,175,147,170,186,189,159,189, %U A325603 153,170,195,189,195,185,195,185,195,209,216,224,224 %N A325603 Lower left-hand y-coordinate for 2 X 2 invisible forest with 0 < x < y. %C A325603 These are 2 X 2 rectangles of lattice points not visible along straight lines of sight from the origin. The sequence is ordered by Euclidean distance from (0,0). %H A325603 Benjamin Hutz, <a href="/A325603/b325603.txt">Table of n, a(n) for n = 1..1000</a> %H A325603 E. Goins, P. Harris, B. Kubik, A. Mbirika, <a href="https://arxiv.org/abs/1710.04554">Lattice Point Visibility on Generalized Lines of Sight</a>, arXiv:1710.04554 [math.NT], 2017; Amer. Math. Monthly 125 (2018) 593-601. %H A325603 F. Herzog, B. M. Stewart, <a href="https://www.jstor.org/stable/2317753">Patterns of Visible and Nonvisible Lattice Points</a>, Amer. Math. Monthly 78 (1971) 487-496 %H A325603 S. Laishram, F. Luca, <a href="https://cs.uwaterloo.ca/journals/JIS/VOL18/Laishram/lai2.html">Rectangles Of Nonvisible Lattice Points</a>, J. Int. Seq. 18 (2015) 15.10.8. %e A325603 (14,20), (14,35), (20,35), (44,54), (39,65), (21,77), (45,69), (34,84). %o A325603 (SageMath) %o A325603 def is_nxn(x,y,n): %o A325603 if all([gcd(x+a,y+b) != 1 for a in range(n) for b in range(n)]): %o A325603 return True %o A325603 return False %o A325603 def insert_item(pts, item, index): %o A325603 N = len(pts) %o A325603 if N == 0: %o A325603 return [item] %o A325603 elif N == 1: %o A325603 if item[index] < pts[0][index]: %o A325603 pts.insert(0,item) %o A325603 else: %o A325603 pts.append(item) %o A325603 return pts %o A325603 else: #binary insertion %o A325603 left = 1 %o A325603 right = N %o A325603 mid = ((left + right)/2).floor() %o A325603 if item[index] < pts[mid][index]: %o A325603 # item goes into first half %o A325603 return insert_item(pts[:mid], item, index) + pts[mid:N] %o A325603 else: %o A325603 # item goes into second half %o A325603 return pts[:mid] + insert_item(pts[mid:N], item, index) %o A325603 B=1200 %o A325603 L=[] %o A325603 for x in range(1,B): %o A325603 for y in range(x+1,B): %o A325603 if is_nxn(x,y,n=2): %o A325603 G=[x,y,x^2+y^2] %o A325603 L=insert_item(L, G, 2) %Y A325603 Cf. A157426, A157427, A157428, A157429, A325602, A325604, A325605, A325606, A325607. %K A325603 nonn %O A325603 1,1 %A A325603 _Benjamin Hutz_, May 10 2019