PY
py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# [challenge] arrange numbers from 1 to 15 for squares with any two consecutive numbers
# VcC 2018
S=15
sq=lambda x,y:(int((x+y)**.5)**2)==(x+y)
def solve(a=[],m=[[i,set(j for j in range(1,S+1) if sq(i,j))] for i in range(1,S+1)]):
if len(a)==S: return(a)
for n in m[a[-1]-1][1]-set(a) if a else range(1,S+1):
s=solve(a+[n],m)
if s: return(s)
return([])
print(solve())
Enter to Rename, Shift+Enter to Preview
OUTPUT
Run