나는 LINQ 등에서 할 수있는 달콤한 방법이 있는지 궁금 합니다만, X 부분에 걸쳐 알파벳의 글자를 가장 균등하게 배분하려고합니다. 정수> 0 & & < = 26 예를 들어 여기에는 몇 가지 가능한 출력이있을 수 있습니다.알파벳 순서로 알파벳을 가장 균등하게 배분합니다.
- X = 1 : 26
- 1 개 파티션 X = 2 : 13
- 2 개 파티션 X = 3 : 2 개의 9 파티션 8
- 등의 파티션 ....
궁극적으로 나는 하나 이상의 파티션을 갖지 않는 파티션을 갖고 싶지 않고 파티션 크기 차이의 범위가 작다는 것을 가장 균등하게 배분할 것을 목표로 삼고 있습니다. 가능한 한.
이
내가 orginally 히 노력 코드입니다 :char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
int pieces = (int)Math.Round((double)alphabet.Count()/numberOfParts);
for (int i = 0; i < numberOfParts.Count; ++i) {
char[] subset = i == numberOfParts.Count - 1 ? alphabet.Skip(i * pieces).ToArray()
: alphabet.Skip(i * pieces).Take(pieces).ToArray();
... // more code following
이 처음에는 잘 작동하는 듯하지만 X는 내가 갖는이 논리를 바탕으로 10 때 문제가 있음을 테스트 실현 3의 8 개의 그룹과 2의 1 개의 그룹, 제 10의 그룹을 남겨둔다. 0은 나쁘지 않다.
이 경우 10에 가장 이상적인 분포는 3과 4 그룹으로 구성된 6 개의 그룹입니다. 어떻게 구현 될지 생각해보십시오.
귀하의 질문은 매우 소리 구체적이고 명확하지 않은 경우 여기에서 달성하려는 내용을 자세히 설명해 주실 수 있습니까? 이 교과 과정도 있습니까? 그렇다면 문제는 아니지만 대답에 영향을 미칠 수 있으므로 알려주십시오. –
다른 숙제가 아닙니다. 시작 문자를 기반으로 다른 위치에 메시지를 배포하려고합니다. –
공정한 정도 - 이유에 대해 자세히 설명해 주시겠습니까? 나는 영리한 대답과 좋은 대답이 여기에 있다는 느낌을 가지고 있습니다! –