크기 배열 N의 세로 배열의 패리티를 결정해야하는 Excel 시트에서 작업하고 있습니다. 배열에는 ~ N의 각 숫자가 각각 정확히 한 번 포함됩니다.Excel - 변환의 패리티 결정
이 문맥에서 패리티는 스크램블 된 배열을 정렬 된 배열로 변환하는 데 필요한 스왑의 수를 최소에서 최대로 정의합니다.
예를 들어, 배열 {3;1;2;4}
은 {1;2;3;4}
으로 변환하는 데 최소 두 번의 스왑이 필요하기 때문에 짝수 패리티를 갖지만 항상 짝수 개의 스왑이 필요합니다. 아래를 참조하십시오.
3 --> 1 1
1 --> 3 --> 2
2 2 --> 3
4 4 4
또 다른 예 : 그것은 (최소한) 세 스왑을 필요로 {1;2;3;4;5}
로 변환하지만, 항상 스왑의 홀수를 필요로하기 때문에 {2;1;4;5;3}
가 홀수 패리티가 있습니다. 아래를 참조하십시오.
2 --> 1 1 1
1 --> 2 2 2
4 4 --> 3 3
5 5 5 --> 4
3 3 --> 4 --> 5
나는 홀수 패리티 어레이에 대한 짝수 패리티 및 FALSE
와 배열에 대한 TRUE
를 반환 할 수있는 솔루션을 찾고 있어요. (그리고 난 상관 없어 결과는 나는 그 사건을 처리 할 수있는 스프레드 시트에있는 다른 검사를해야하기 때문에 N에.까지의 모든 수를 포함하지 않는 배열을 위해 무엇을) 내가 알아 낸
몇 가지 도우미 열을 사용하는 솔루션이지만 느린 계산처럼 보입니다.
배열의 각 개별 번호가 올바른 색인에 있는지 확인하고 스왑을 수행하지 않는 경우 확인합니다. 그런 다음 발생한 스왑 금액을 합산하고 MOD(<swaps>,2)=0
을 사용하여 짝수 패리티인지 확인합니다.
배열 {8;5;3;2;4;1;7;6}
의 계산 예는 아래를 참조하십시오.
화이트 = 참조 배열 {1;2;3;4;5;6;7;8}
블루 = 입력 배열
회색 = "도우미"배열 :
나는 색상이 쉽게 무슨 일이 일어나고 있는지 알 수있는 세포를 코딩 한 각 연속 열은 필요한 경우 스왑을 수행합니다.
빨간색 = 스왑은 해당 열 발생, 0 경우 스왑 모든 녹색 세포
노란색 = 합계를 발생하지 않은 경우 WAP 효과적으로 많은 스왑이 발생하는 방법을 말하고, 이전 칼럼
녹색 = 1에서 발생했습니다.
이 예에서 노란색 셀은 짝수 인 4
이므로 입력 배열은 짝수 패리티를가집니다.
질문 : VBA없이 Excel에서이 계산을보다 효율적으로 수행 할 수 있습니까? 필자는 헬퍼 칼럼을 반대하지는 않지만 다시 말해서 내 솔루션이 느린 것처럼 보이고 더 좋은 방법이 있는지 궁금합니다.
이 문제는 그 수식이 변경 사항을 저장하지 않는다면, 헬퍼 칼럼 메소드가없는 방법이 있다는 것을 나는 의심한다. –
@ScottCraner이 방법을 사용하면 동의합니다. 내 질문은 만약 내가 알지 못했던 이것을 계산하는 수학적인 "속임수"가 있다면 말이다. – ImaginaryHuman072889
그러면 아마도 https://math.stackexchange.com/에서 더 나을 것입니다. –