무차별 공격이 있습니다. 성능은 1000 xy 행에 대해 순간적이었고, 100,000 xy 행에는 17 초 였고 1 백만 xy 행에는 159 초였습니다. "다각형 안에"기능을 사용하면 속도가 빨라질 수 있습니다.
// 작은 XY 값 테이블
xydt = 새 테이블 ( "xy 데이터" , 행 추가 ( 10 ) ,
새 열 ( "엑스" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0.206704897573218 , 0.188453091308474 , 0.402824054239318 ,
0.946105436887592 , 0.209207338048145 , 0.783533588517457 ,
0.15626378194429 , 0.293116413988173 , 0.0382238682359457 ,
0.0646856701932847 ] ) ) ,
새 열 ( "와이" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0.258698139106855 , 0.395224047359079 , 0.0813549624290317 ,
0.158546321559697 , 0.874619059031829 , 0.787837725598365 ,
0.173847715603188 , 0.736063659423962 , 0.782933217706159 ,
0.28023144742474 ] ) ) ,
새 열 ( "상자" , 캐릭터 , 명사 같은 )
) ;
// 왼쪽 아래와 오른쪽 위 좌표 테이블
refdt = 새 테이블 ( "상자 참조" , 행 추가 ( 26 세 ) ,
새 열 ( "xll" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0 , 0 , 0 , 0 , 0 , 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.4 , 0.4 , 0.4 , 0.4 , 0.4 , 0.4 ,
0.6 , 0.6 , 0.6 , 0.8 , 0.8 , 0.8 , 0.9 , 0.9 , 0.9 , 0.9 ] ) ) ,
새 열 ( "yll" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0 , 0.2 , 0.4 , 0.6 , 0.8 , 0.1 , 0.3 , 0.5 , 0.7 , 0.9 , 0.1 , 0.3 , 0.5 , 0.7 , 0.8 ,
0.9 , 0.2 , 0.4 , 0.6 , 0.2 , 0.4 , 0.6 , 0.3 , 0.5 , 0.7 , 0.9 ] ) ) ,
새 열 ( "xur" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0.2 , 0.2 , 0.2 , 0.2 , 0.2 , 0.4 , 0.4 , 0.4 , 0.4 , 0.4 , 0.6 , 0.6 , 0.6 , 0.6 ,
0.6 , 0.6 , 0.8 , 0.8 , 0.8 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ) ) ,
새 열 ( "yur" , 숫자 , 마디 없는 , 체재 ( "베스트" , 12 ) ,
값 설정 (
[ 0.2 , 0.4 , 0.6 , 0.8 , 1 , 0.3 , 0.5 , 0.7 , 0.9 , 1 , 0.2 , 0.4 , 0.6 , 0.8 , 0.9 ,
1 , 0.4 , 0.6 , 0.8 , 0.4 , 0.6 , 0.8 , 0.5 , 0.7 , 0.9 , 1 ] ) ) ,
새 열 ( "상자" , 캐릭터 , 명사 같은 ,
값 설정 (
{ "에이" , "비" , "기음" , "디" , "이자형" , "에프" , "지" , "H" , "나는" , "J" , "케이" , "엘" , "엠" , "엔" ,
"영형" , "피" , "큐" , "아르 자형" , "에스" , "티" , "유" , "V" , "W" , "엑스" , "와이" , "지" } ) )
) ;
start_dt = 오늘 () ;
...에 대한 ( 나는 = 1 , 나는 <= 안주 ( xydt ) , 나는 ++,
xval = xydt : 엑스 [ 나는 ] ;
야발 = xydt : 와이 [ 나는 ] ;
ref_list = refdt << 행을 가져오다. ( : xll <= xval & : 고물 <= 야발 &
xval < : xur & 야발 < : yur ) ;
// 일치하는 항목이 있는지 확인하십시오.
만약 ( 안주 ( ref_list ) > 0 ,
match_row = ref_list [ 1 ] ; // 첫 번째 것을 취하십시오. 오직 하나 여야합니다!
xydt : 상자 [ 나는 ] = refdt : 상자 [ match_row ] ;
) ;
) ;
end_dt = 오늘 () ;
경과 된 = end_dt - start_dt ;
인쇄 ( 경과 된 ) ;