Member 13740407 Ответов: 1

Найдите допустимые слова в случайно сгенерированных символах в C# unity


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

Это код для генерации случайных символов:
public void  GenerateLettersAtStart()
{
for (int i = 0; i <= 6; i++)
{
   wordRan.wordsStore.Clear();
   a = UnityEngine.Random.Range(0,consonants.Length);
   availablesetConsonants [i].GetComponent<TextMesh> ().text  =
  consonants[a].ToString();
  }
  for (int j = 0; j <= 2; j++)
   {
   wordRan.wordsStore.Clear();
   b = UnityEngine.Random.Range(0, vowels.Length);
   availablesetVowels [j].GetComponent<TextMesh> ().text =
  vowels[b].ToString();
   }
  }

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

проснулся недействительными() { строка[] ш = wordAsset.текст.Сплит(новый тип char[] { '\п', '\р'
}, Система.StringSplitOptions.RemoveEmptyEntries); allWords = new
HashSet(w);

}
общественного недействительными начать()
{
//RepeatedWordsCheck ();
}
обновление общественного недействительными ()
{

}

public bool CheckWord(строка wrd)
{
верните все слова.Содержит(wrd.ToLower());

}
public void ClickFun()
{
Отлаживать.Журнал ("модели");
типа bool проверить = контрольное слово (GameController.currentWord);
if (Check == true )
{
Debug.Log("правильное слово");
}
}

Что я уже пробовал:

я пытался найти перестановки, но я не могу использовать массив в foreach, поэтому я могу получить только одно строковое значение
сортировка общественного недействительными ()
{
складские конторы.Сортировать ();
foreach (строка f в storecononants)
{
Отлаживать.Log(строка.Формат ("{{{0} {1}}}", ф,ф);
}
}

Richard MacCutchan

Вам нужно пройти через каждый символ в вашем массиве и сопоставить его с возрастающими числами каждого другого символа, каждый раз проверяя, является ли это допустимым словом. Это может занять годы.

#realJSOP

Я действительно делал подобную игру. Это не займет много лет. Проверьте мой ответ. :)

Richard MacCutchan

Глядя на исходный вопрос, кажется, что он хочет найти любую комбинацию случайных букв и посмотреть, составляют ли они слово. Тогда как ваша программа вполне логична.

#realJSOP

Я добавил некоторую информацию к своему ответу, чтобы вам было легче найти то, что вы ищете.

1 Ответов

Рейтинг:
7

#realJSOP

Я написал статью, которая могла бы удовлетворить ваши потребности. Это также игра в скремблирование слов (я называю ее анаграммами). Он начинается с выбора слова в словаре (от 6 до 10 символов), скремблирует буквы и представляет пользователю скремблированную последовательность. В этот момент пользователь может попытаться вручную найти допустимые слова (3-n букв, где n-количество символов в зашифрованном слове) в зашифрованном тексте. Ознакомьтесь со статьей и посмотрите, можете ли вы использовать какой-либо код.

Вот версия WinForms - Анаграммы - игра слов на языке Си#[^]

А вот и версия WPF - Anagrams2 - простое игровое приложение WPF[^]

Кстати, ни одно из этих приложений не использует Unity.

То, что вас интересует, это Globals.Contains() метод. Он называется для всех слов, которые есть в словаре игровых слов. Все слова в словаре являются действительными словами в игре Рыться.

Интересная заметка - Я написал версию Winforms, чтобы помочь мне учиться .Net и C#, а затем написал версию WPF, чтобы помочь мне изучить WPF.


Maciej Los

5ed!