Нужна помощь, чтобы сделать следующий код лаконичным и эффективным

У меня есть массив из 52 элементов, и каждые 13 элементов должны иметь значение от 1-13

Пример:

// Referring arr to an array of 52 elementsarr[0] = 1;
arr[1] = 2;
arr[2] = 3;
...
arr[10] = 11;
arr[11]] = 12;
arr[12] = 13;
arr[13] = 1;

and so on...

В коде, который я придумал, есть 4 цикла for, каждый раз цикл от 1 до 13, я думаю, что это очень неэффективно.

int j = 1;
for(int i = 0; i < 13; i++){
deck[i].suit = 'H';
deck[i].value = j;
j++;
}
j = 1;
for(int i = 13; i < 26; i++){
deck[i].suit = 'D';
deck[i].value = j;
j++;
}
j = 1;
for(int i = 26; i < 39; i++){
deck[i].suit = 'S';
deck[i].value = j;
j++;
}
j = 1;
for(int i = 39; i <= 51; i++){
deck[i].suit = 'C';
deck[i].value = j;
j++;
}

Ищу быстрой помощи!

2

Решение

Вы правы, вы могли бы сделать лучше

char suits[] = "HDSC";

for (int i = 0; i < 52; ++i) {
deck[i].value = (i % 13) + 1; // this is a number from [1,13]
deck[i].suit = suits[i / 13]; // i/13 is a number from [0,4)
}
5

Другие решения

Других решений пока нет …