단일 배열 (테이블)에서 작동하는 Python에서의 작동 방식에 대한 Lua의 바이너리 검색 함수를 작성했습니다.루아의 배열 배열에 대한 이진 검색
function bisect_left(a, x, lo, hi)
lo = lo or 1
hi = hi or nil
if lo < 0 then
error('lo must be non-negative')
end
if hi == nil then
hi = #a
end
while lo < hi do
mid = math.floor((lo+hi)/2)
if a[mid] < x then
lo = mid+1
else
hi = mid
end
end
return lo
end
그러나 배열의 정렬 된 배열 (테이블 테이블)을 검색해야합니다. 그들은
Class overload(object):
def __init__(self, value, index):
self.value = value
self.index = index
def __cmp__(self, other):
return cmp(self.value, other[self.index])
루아에서이 작업을 수행하는 가장 빠른 방법은 무엇입니까 같은 비교 연산자 CMP 과부하처럼 뭔가를 할 것 파이썬에서 인덱스 1
squares = {{300, 400, 123456, 9}, {400, 500, 323456, 9}, {420, 610, 5123456, 9}, {530, 700, 8123456, 9}, {840, 960, 9123456, 1}}
으로 분류되어 있습니다? 느린 방법으로 생각할 수는 있지만 기능 프로그래밍에 익숙하지 않은 것은 내가 결코 추측 할 수없는 방법이 있는지 궁금하게 만든다.
lo가 루프 뒤가 아니라 루프 내부로 반환되지 않아야합니까? – dasblinkenlight
나는이 목적으로'__eq','__le'과'__lt' [Metatable events] (http://lua-users.org/wiki/MetatableEvents)를 사용할 수 있습니다. 그리고 적절한 테이블을 생성하기위한'__newindex '. 간단한 설명 코드 스 니펫을 만들려고합니다. – Kamiccolo
감사합니다 dasblinkenlight! 1 일 동안 루아를 쓰고 있었고 모든 "끝"은 계속 나를 걸고있다. – Handloomweaver