2010-02-25 2 views
2

check digit으로 구성된 일련의 인덱스 번호가 있다고 가정합니다. 샘플이 충분하다면 (250 개의 샘플 인덱스 번호를 말합니다), 체크 디지트를 생성하는 데 사용 된 알고리즘을 추출하는 방법이 있습니까?숫자 시리즈가 주어지면 체크 디지트 알고리즘을 찾는 중 ...?

가능한 알고리즘 집합을 찾으려면 최소한 프로그래밍 방식으로 접근해야한다고 생각합니다.

업데이트 : 인덱스 번호의 길이는 체크 숫자를 포함하여 8 자리입니다.

+0

가능한 경우 샘플을 게시 할 수 있습니다 (10 개 정도) - 가능할 수도 있습니다. – paxdiablo

답변

4

아니요, 일반적인 경우가 아니기 때문에 의 수는 개까지 생각할 수 있습니다. 250의 샘플 공간은 적절한 수치 해석을 수행하기에 충분하지 않을 수 있습니다.

극단적 인 예로, 샘플이 모두 15 자리 길이라고 가정 해 봅시다. 이 아닌 경우은 15자를 초과하는 동작을 변경하면 알고리즘을 안정적으로 감지 할 수 있습니다.

확실한 경우 숫자 유효성을 검사하는 코드를 리버스 엔지니어링해야합니다 (사용 가능한 경우).

알고리즘이 "가능한 모든 알고리즘"보다 작은 하위 집합에서 추출되었다는 것을 알고 있다면 가능할 수도 있습니다. 그러나 알고리즘은 이야기의 절반에 불과할 수 있습니다. 동일한 알고리즘을 사용해도 승수, 지수 및 랩 어라운드 (wrap-around) 포인트가 변경되는 경우도 있습니다.

0

paxdiablo는 정확합니다. 다른 가정을하지 않고 (또는 전체 샘플 공간을 가지지 않고 알고리즘을 추측 할 수 없습니다. 그런 다음 룩업 테이블로 알고리즘을 정의 할 수 있습니다).

그러나 "데이터 자리수"에 따라 선형 수식을 사용하여 검사 숫자를 계산하면 (위키 피 디아 문서에서 볼 수 있듯이 매우 일반적인 경우입니다.) 충분한 양의 샘플을 제공하면 오일러 제거 기능을 사용할 수 있습니다.

+0

@ r0u1i가 "오일러 제거 (Euler elimination)"의 소스를 인용 할 수 있는지 궁금합니다. 빠른 Google 검색에서 그러한 알고리즘을 식별합니까? – WesR

+0

@WesR, Euler, Gauss, 같은 것 : http://euler.mcs.utulsa.edu/~class_diaz/cs2503/Spring99/lab7/node8.html – r0u1i

관련 문제