패턴

2010-05-21 4 views
3

의 인덱스 항목을 확인하는 방법 I패턴

이러한 요소들이 예측 가능한 패턴으로 다른 목록을 작성하는 데 사용 A3 목록/배열

A1, A2에서 다음과 같은 요소를 가지고

예를

A1, A1, A3, A3, A2, A2, A1, A1, A3, A3, A2, ...

패턴이 변경 될 수 있지만, 나는 항상 몇 번 각을 알 수 요소 반복 모든 요소는 동일한 횟수만큼 반복됩니다. 그리고 요소들은 항상 같은 순서로 나타납니다.

정도로 다른 패턴이 될 수도

A1, A1, A1, A2, A2, A2, A3, A3, A3, A1, A1, A1, A2, A2, A2, A3, A3, A3 ... .

또는

A1

, A2, A1, A3, A2, A3는

는 A3, A3, A1, A1, A2,

A2 없을 것 ... 또는 A1, a2, a3, a2, a3, a1 등

목록의 어떤 색인에 어떤 요소가 있는지 어떻게 결정합니까?

생성 된 목록을 통해 실행할 수 없으므로 실행할 수 없습니다. 그것은 실제로 존재하지 않습니다. 그리고 0에서 무한대 (실제로는 integer.maxvalue)의 인덱스에 대한 응답을 얻어야합니다.

+0

의 요소와 같습니다. 이것은 할당 된 것처럼 보입니다 ... 직접 생각하지 않으시겠습니까?) –

+0

하하하 : 나는 두 번째 바스 티아 인 린더 (Bastiaan Linders) – Shravan

+0

이 단순한 모듈로 계산이 아닌가요? 'item = pattern [index MOD 패턴 길이]' –

답변

4

일부 외연을 걸 수 :
N - 요소
X- 인덱스

배열 반복 횟수 - orginal 한 배열의 요소
K 개수 [x] == Array [(x mod (k )) div k]
- 그게 당신이 찾고 있던 것입니다.
즉, 색인 x의 요소는 색인 (x mod (k
n)) div k

+0

감사합니다. 그것이 내가 찾고있는 것입니다. – ElGringoGrande

0

첫 번째 요소와 다른 요소를 찾을 때까지 목록을 통해 실행하십시오. 그런 다음 각 그룹의 길이를 알 수 있으며 간단한 모듈러스 문으로 모든 인덱스에서 요소를 결정할 수 있습니다.

의사 재료 :

determine(index){ 
    firstelement = list[0] 
    i=0; 
    for i=0; element.count; i++ 
    if element != firstelement 
     break; 
    m = index modulo (i*3) 
    switch(m) 
    case 0: return 'a1' 
    case 1: return 'a2' 
    case 2: return 'a3' 
} 
+0

나는 내 문제를 조금 더 잘 설명했다. 목록이 실제로 존재하지 않기 때문에 루핑을 수행 할 수 없습니다. – ElGringoGrande