2015-02-08 1 views
-1

Создание игры для детей, которая спрашивает их, является ли слово фактическим словом или нет. Поэтому, если мне нужно увидеть все возможные N буквенных комбинаций из 26 алфавитов. Каков наилучший способ сделать это в Objective CПолучить перестановку слов из N длины из массива (например, 26 алфавитов на английском языке) в ObjectiveC

+1

Ваш вопрос заголовок вводит в заблуждение. Вам не нужны «все» перестановки. Вы хотите несколько комбинаций, которые вы можете показать как часть викторины. Большие разные, я думаю ... – lukya

+0

Вы понимаете, что «перестановки» и «комбинации» - это очень, очень и очень разные вещи? В результате ваш вопрос не имеет никакого смысла. Кроме того, есть много слов, о которых вы никогда не слышали. Каковы шансы, что что-то придет, это слово, но не то, что вы знаете? – gnasher729

+0

@ gnasher729 Это именно тот вопрос, который мы задаем пользователю. Действительно ли это слово или нет. для ребенка – user3626615

ответ

0

Ну, прежде чем вы начнете думать о Objective C, вам нужно подумать о структурах данных. Во-первых, подумайте о своих требованиях.

  • Вы должны представлять все слова из словаря, отсортированные по длине
  • Вы также хотите, чтобы они отсортированы в алфавитном порядке
  • Если вы хотите, чтобы все 5 букв слова, как бы вы быстро пропустить все 1, 2, 3 , и 4 буквенных слова, чтобы начать только с 5 буквенных слов?

Принятие эффективной структуры данных позволит вашей программе быстро перебирать ТОЛЬКО возможности с помощью N слов.

Мое предложение было бы сделать два массива. Во-первых, INDEX_ARR должен быть массивом, который является просто ключами, которые представляют вашу длину. Значение этих ключей может быть индексом, в котором, например, начинаются пять буквенных слов в VALUE_ARR. Так что ...

Если вы хотите, чтобы найти все 5 букв слова:

INDEX = INDEX_ARR[4] //This gives you the value of the starting index in your values array 

FIRST_5_LETTER_WORD = VALUE_ARR[INDEX] 

Затем, вы цикле, пока не дойдете до индекса, соответствующего INDEX_ARR [5]

Вполне возможно, что у вас недостаточно памяти для хранения всех значений в массиве или что это будет неудобно. В этом случае вы можете думать о значениях в вашем INDEX_ARR как о местах в файле на диске.

Я знаю, что это не цель C, но тем важнее понимать понятия.

Удачи вам!