모듈:지수 검색/문서

Module

이 모듈에서는 일반적인 지수 검색 알고리즘을 제공합니다.이런 종류의 검색은 정렬된 배열에서 키를 찾고 가능한 한 적은 배열 요소를 체크하여 검색하려는 경우에 유용합니다.여기에는 다음과 같은 상황이 포함됩니다.

  • 모든 아카이브가 존재하는지 확인하지 않고 아카이브 집합에서 가장 높은 아카이브 번호를 찾습니다.
  • frame.arg에서 위치 인수의 수를 검색하면 각 인수의 Wikitext를 전개할 필요가 없습니다.

다음 중 하나에 해당하는 경우에는 이 모듈을 사용하지 마십시오.

  1. Lua length 연산자를 사용하여 필요한 항목을 찾을 수 있습니다.
  2. 어레이에 공백이 있습니다.(즉, 최종 항목 앞의 항목은nil,예.{'foo', 'bar', nil, 'baz'}sparse 어레이에서 이 모듈을 사용하려고 하면 잘못된 값이 표시될 수 있습니다.
  3. 어레이에 포함된 항목이 10개 미만입니다.이러한 어레이에는 이 모듈을 사용할 수 있지만, 어레이 요소의 대부분은 액세스 할 수 있습니다(몇 개는 2회 정도).또, 를 루프용으로 사용하는 경우보다 코드가 복잡해집니다.

사용.

먼저 모듈을 로드합니다.

현지의 exp Search(검색) = 요구하다('모듈:지수 검색') 

그런 다음 다음 구문을 사용하여 expSearch 함수를 사용할 수 있습니다.

exp Search(검색)(테스트 기능, 초기화) 

파라미터:

  • testFunc- 어레이 테스트 기능이 함수는 양의 정수를 사용해야 합니다.i첫 번째 파라미터로 사용합니다.대응하는 요소가i는 배열에 없습니다.함수는 false 또는 nero를 반환해야 합니다.또한 배열 내에 있는 경우 함수는 truthy 값(false 또는 nero 이외의 값)을 반환해야 합니다.(필수)
  • init- 초기값i확인할 수 있습니다.상급 사용자용.(옵션)

expSearch는 가장 높은 값을 반환합니다.itestFunc는 truthy였습니다.값이 정확하지 않으면 함수는 0을 반환합니다.

짐보의 토크 아카이브

사용자 토크:Jimbo Wales는 User talk에서 아카이브를 보유하고 있습니다.Jimbo Wales/Archive 1, 사용자 토크:짐보 웨일스/아카이브 2, ...가장 높은 아카이브 번호를 찾으려면 다음과 같은 코드를 사용합니다.

현지의 exp Search(검색) = 요구하다('모듈:지수 검색') 현지의 최고 아카이브 = exp Search(검색)(기능. (i)  현지의 기록 보관소 = '사용자 토크:짐보 웨일스/아카이브' .. i  돌아가다 .직함.신규(기록 보관소).존재한다 끝.) 

마을 펌프 아카이브

위키백과:Village pump(제안서)에는 위키피디아에 오래된 아카이브가 있습니다.빌리지 펌프(제안서)/아카이브 A, 위키피디아:빌리지 펌프(제안)/아카이브 B 등아카이브 Z로 넘어가면 다음 아카이브는 아카이브 AA입니다.이러한 아카이브는 더 이상 갱신되지 않지만, 이 모듈을 사용하여 가장 높은 아카이브를 찾을 수 있습니다.정수에서 대응하는 아카이브 이름으로 변환하는 기능만 있으면 됩니다.

현지의 exp Search(검색) = 요구하다('모듈:지수 검색')  현지의 기능. 정수 To Alpha(i)  -- 이 함수는 1을 A로, 2를 B로, 26을 Z로, 27을 AA로 변환합니다.  현지의 리트 = ''  하는 동안에 i > 0 하다   현지의 기억하다 = i % 26   한다면 기억하다 == 0 그리고나서    기억하다 = 26   끝.   현지의  = string.char.(기억하다 + 64) -- 알파벳의 "남은" 글자   리트 =  .. 리트   i = (i - 기억하다) / 26  끝.  돌아가다 리트 끝.  현지의 기능. integerToArchive(i)  돌아가다 'Wikipedia:마을 펌프(제안서)/아카이브' .. 정수 To Alpha(i) 끝.  현지의 최고 정수 = exp Search(검색)(기능. (i)  현지의 기록 보관소 = integerToArchive(i)  돌아가다 .직함.신규(기록 보관소).존재한다 끝.) 현지의 최고 아카이브 = integerToArchive(최고 정수)