генерация нажатия клавиш - PullRequest
0 голосов
/ 23 января 2009

У меня есть сценарий, в котором мне нужно сгенерировать все возможные нажатия клавиш с номерами от 2 до 9. Возможные нажатия клавиш должны генерировать 2-х, 3-значные и т. Д. До 32-значных чисел. Кто-нибудь может сказать мне, как лучше всего решить эту проблему.

Спасибо, Pdit

Ответы [ 3 ]

6 голосов
/ 23 января 2009

Начните с простого анализа, чтобы рассмотреть целесообразность. Одна цифра имеет 8 возможных значений. Две цифры имеют 8 х 8. И т.д. Теперь возьмите свой калькулятор и вычислите 8 ^ 32.

0 голосов
/ 23 января 2009

Я бы использовал простой рекурсивный подход, здесь с символами, но вы могли бы построить свои числа, используя и другие средства ..

в С:

#include <stdio.h>
void keystrokes(int x, int lo, int hi, char array[]) {
  int i;
  if (x > hi)
    return;
  if (x >= lo) {
    array[x] = 0;
    printf ("%s\n", array);
  }
  for (i = 2; i < 10; i++) {
    array[x] = i+'0';
    keystrokes (x+1, lo, hi, array);
  }
}
int main(void)
{
  char array[33];
  keystrokes(0, 2, 32, array);

  return 0;
}

Он может быть немного оптимизирован (например, для всех 32-значных чисел он все равно будет делать 10 дополнительных рекурсивных вызовов), но для вычисления всех возможных комбинаций все равно потребуется вечность.

0 голосов
/ 23 января 2009

Вы смотрите на немного вычислений в сторону более высокого уровня этого.

Один из возможных способов сделать это - использовать массив в качестве заполнителя для вашей последовательности цифр, увеличить либо наивысший, либо наименьший индекс, проверить, не переполняется ли он, а затем «перенести» его на следующий индекс и сделать пока вы не переполните poistion "на другом конце". Начните с массива, заполненного 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...