3-значный генератор в C

Я пытаюсь сгенерировать все возможные 3-значные комбинации, например: 012, 013 ,014...

НО: я хочу игнорировать повторяющиеся символы (например, 999 или 022), и я также не хочу повторно использовать числа (если 123 уже есть, не отображать 321), поэтому последнее значение должно быть 789.

Вот мой код:

int main()
 {
    int i;
    int j;
    for(i=1;i<(1<<9);i++)
    {
        for(j=0;j<9;j++)
        {
            if ((1<<j)&i) printf("%d\n",j+1);
        }
    }
 }

Я хочу, чтобы мой результат был упорядочен следующим образом:

012, 013, 014, 015, 016, 017, 018, 019, 023, ..., 789

Кроме того, я не должен использовать какую-либо функцию, кроме printf / putchar.

2 ответа

Решение

Я думаю, что самый простой способ решить это было бы что-то вроде

for (i = 0; i <= 7; i++)
{
    for (j = i+1; j <= 8; j++)
    {
        for (k = j+1; k <= 9; k++)
        {
            printf("%d%d%d\n", i, j, k);
        }
    }
}

Привет, ты из EPITECH? это один из 3-х дней работы "piscine". Сложность этой функции в том, что вы не можете использовать printf и "my_put_nbr" (%d printf) функцию, которую вам придется кодировать завтра, я думаю, и которая может напечатать переменную int так, Вы должны найти способ напечатать каждый символ для каждого числа с помощью функции my_putchar для тех, кто интересуется здесь функцией my_putchar

void my_putchar(char c)
{
write(1, &c, 1);
}
Другие вопросы по тегам