2014-09-30 3 views
1

저는 앱 개발을 처음 접했고 간단한 논리로 도움이 필요합니다. float 값 배열이 있습니다. 계산에는 배열의 두 항목이 포함되지만 가능한 모든 항목 조합이 계산 될 때까지 반복해야합니다.배열 인덱스 작업

즉 X = (2 * ENTRY2) -entry1

은 분명히 이러한 항목을 참조 내 유일한 방법은 인덱스 숫자입니다. 그래서 나는 x = (2 * array [id + 1]) - array [id]

그러나 내 시퀀스는 두 번째 배열 ID를 내리고, 0에 도달하면 배열 ID +1과 첫 번째 ID가 최대 ID 번호에 도달 할 때까지 프로세스를 반복하십시오. 아니면 잘못된 방향으로 가고 있습니다. 어떤 도움을 주시면 감사하겠습니다.

은 현재 내가 RFArray이 내 코드는 것, 그래서 나는 IMProdArray을 채우려 :

IMProdArray+=[2*(RFArray[2])-(RFArray[1])] 

하지만 배열의 ID 번호의 가능한 모든 조합에 대해이 작업을 반복하는 루프가 필요합니다.

그래서 어레이의 4 개 항목이 있다면 : IMProdArray + = [2 * (RFArray [3]) - (RFArray [2])] IMProdArray + = [2 * (RFArray [3]) - (RFArray를 [ 1])]
IMProdArray + = [2 * (RFArray [3]) - (RFArray [0]) IMProdArray + = [2 * (RFArray [2]) - (RFArray [1]) IMProdArray + = [2 * (RFArray [0])] IMProdArray + = [RFArray [1]) - (RFArray [0])

다음 모든 ID 번호의 순서를 역으로하십시오.

IMProdArray+=[2*(RFArray[2])-(RFArray[3])] 
IMProdArray+=[2*(RFArray[1])-(RFArray[3])] 
IMProdArray+=[2*(RFArray[0])-(RFArray[3])] 
IMProdArray+=[2*(RFArray[1])-(RFArray[2])] 
IMProdArray+=[2*(RFArray[0])-(RFArray[2])] 
IMProdArray+=[2*(RFArray[0])-(RFArray[1])] 

감사합니다,

SAMP 예를 들어

+0

행복 도움이되지만 확인하고 싶어 나는 올바른 코드를 제공한다. 게시물을 편집하고 항목과 답변의 몇주기의 예를 포함 할 수 있습니까? –

+2

뒷 이야기보다는 무엇을 요구하고 있는지 물어보십시오. – AlBlue

답변

1

후, 그 요소의 모든 페어 조합을 반환하는 함수와 배열의 확장을 정의 수행 할 계산을 쌍을 통해지도 :

extension Array { 

    func pairs() -> [(T, T)] { 

     // you can take this nested func out for reuse 
     func reverseIndexPairs(var count n: Int) -> [(Int, Int)] { 
      assert(n >= 0) 
      var ps = [(Int, Int)]() 
      for e1 in stride(from: n-1, through: 0, by: -1) { 
       n-- 
       for e2 in stride(from: n-1, through: 0, by: -1) { 
        ps.append((e1, e2)) 
       } 
      } 
      return ps 
     } 

     return reverseIndexPairs(count: self.count).map { 
      (self[$0.0], self[$0.1]) 
     } 
    } 
} 

let arr: [Double] = [0,1,2,3] 

println("test order: ") 
for e in [0,1,2,3].pairs() { 
    println(e) 
} 

println("\nresult array <- 2 * x - y:") 
let resultArray = arr.pairs().map { x, y in 2 * x - y } 
for e in resultArray { 
    println(e) 
} 

println("\nresult array <- 2 * y - x:") 
let resultReverse = arr.pairs().map { x, y in 2 * y - x } 
for e in resultReverse { 
    println(e) 
} 
내가 바로 당신을 이해하면

, 당신은 쌍 역순으로되고 싶은, 그래서 인쇄 위의 코드 :

test order: 
(3, 2) 
(3, 1) 
(3, 0) 
(2, 1) 
(2, 0) 
(1, 0) 

result array <- 2 * x - y: 
4.0 
5.0 
6.0 
3.0 
4.0 
2.0 

result array <- 2 * y - x: 
1.0 
-1.0 
-3.0 
0.0 
-2.0 
-1.0