Mathematica 63 43 바이트
Martin Ender의 제안으로 20 바이트가 절약되었습니다!
EdgeCount[8~KnightTourGraph~8,#+1+8#2/<->_]&
위의 기사는 완전한 기사 여행 그래프에서 주어진 셀에서 1 홉 떨어진 사각형의 수를 찾습니다.
g=KnightTourGraph[8,8,VertexLabels->"Name",Axes->True]
정점 이름과 좌표로 기사의 전체 여행 그래프를 표시합니다. Mathematica는 기본적으로 좌표에 대한 1 기반 색인화를 사용합니다.
#+1+8#2&[r,f]
converts는 0부터 시작하는 값을 입력으로 사용하여 순위 (행) r
및 파일 (열)의 제곱에 해당하는 정점을 반환합니다 f
.
예를 들어 #+1+8#2&[2,1]
11을 반환합니다.
EdgeCount
이웃 그래프의 가장자리 수를 나타냅니다.
순위 2, 파일 1 (사각 11)의 모서리 :
IncidenceList[8~KnightTourGraph~8, 8 #2 + # + 1] &[2, 1]
(*{1 <-> 11, 5 <-> 11, 11 <-> 17, 11 <-> 21, 11 <-> 26, 11 <-> 28}*)
강조 표시된 모서리 :
HighlightGraph[g, {1, 5, 11, 17, 21, 26, 28, Style[1 <-> 11, Thick, Blue], Style[5 <-> 11, Thick, Blue], Style[11 <-> 17, Thick, Blue], Style[11 <-> 21, Thick, Blue], Style[11 <-> 26, Thick, Blue], Style[11 <-> 28, Thick, Blue]},GraphHighlightStyle -> "DehighlightFade", PlotRangePadding -> .5]
방법 2 : 유클리드 거리
70 바이트
이 방법은 더 길지만 관심이있을 수 있습니다. 이 방법은 체스 판 중앙과 관심 셀 사이의 유클리드 거리를 확인하는 것입니다.
Which[(x=Sqrt@Tr[({3.5, 3.5}-#)^2])<2.2,8,x<3,6,x<4,4,x<4.6,3,x>4.6,2]&
예시
Which[(x=Sqrt@Tr[({3.5, 3.5}-#)^2])<2.2,8,x<3,6,x<4,4,x<4.6,3,x>4.6,2]&@{0, 0}
Which[(x=Sqrt@Tr[({3.5, 3.5}-#)^2])<2.2,8,x<3,6,x<4,4,x<4.6,3,x>4.6,2]&@{3, 3}
2
8
체스 판 중앙으로부터의 거리가 값을 할당하기에 얼마나 충분한지를 시각화합니다.
values={{2,3,4,4,4,4,3,2},{3,4,6,6,6,6,4,3},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{3,4,6,6,6,6,4,3},{2,3,4,4,4,4,3,2}};
f[x_]:=Text[x,#]&/@Position[values,x]r_~w~p_:=RegionMember[{3.5`,3.5`}~Disk~r,p]
h@y_:=Which[2.2~w~y,8,3~w~y,6,4~w~y,4,4.6~w~y,3,2<3,2]
Graphics[{Circle[{4.5, 4.5}, 2.3], Circle[{4.5, 4.5}, 3],
서클 [{4.5, 4.5}, 4],
원 [{4.5, 4.5}, 4.6], Flatten [f / @ {2, 3, 4, 6, 8}, 1]}, 도끼-> 참, 도끼 오리진-> {-1, -1}]
숫자 2.2, 3, 4 및 4.6은 원의 반지름입니다.