#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define TOTAL 10000
#define COMBO_LEN 15
void generate_combo(char *buffer) {
int nums, back;
for (int i = 0; i < 35; i++) nums[i] = i + 1;
for (int i = 34; i > 0; i--) {
int j = rand() % (i + 1);
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
for (int i = 0; i < 5; i++) {
for (int j = i+1; j < 5; j++) {
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
for (int i = 0; i < 12; i++) back[i] = i + 1;
for (int i = 11; i > 0; i--) {
int j = rand() % (i + 1);
int temp = back[i];
back[i] = back[j];
back[j] = temp;
}
if (back > back) {
int temp = back;
back = back;
back = temp;
}
sprintf(buffer, "%02d%02d%02d%02d%02d%02d%02d",
nums, nums, nums, nums, nums,
back, back);
}
int main() {
srand((unsigned int)time(NULL));
char (*combos)[COMBO_LEN] = malloc(TOTAL * COMBO_LEN);
int count = 0;
while (count < TOTAL) {
char new_combo[COMBO_LEN];
generate_combo(new_combo);
int duplicate = 0;
for (int i = 0; i < count; i++) {
if (strcmp(combos[i], new_combo) == 0) {
duplicate = 1;
break;
}
}
if (!duplicate) {
strcpy(combos[count], new_combo);
printf("%s\n", new_combo);
count++;
}
}
free(combos);
return 0;
}