2011-07-27 5 views
3

나는 6 개의 문자가 주어진 아이폰에이 앱을 만들려고하는데 가능한 모든 3 ~ 6 개의 문자 영어 단어를 출력 할 것이다. 나는 이미 사전을 가지고 있으며, 어떻게하는지 알고 싶다.Objective-C 뒤죽박죽 문자 솔버

필자는 파이썬 또는 그 단어 검색 그리드 솔루션에서 검색 가능한 솔버 만 찾았습니다.

나는 무차별 강제 검색이 가능하다고 생각하지만, 성능에 대해 우려하고 있습니다. 코드가 필요하지 않습니다. 알고리즘 또는 알고리즘 자체에 대한 링크가 좋을 것입니다. 일단 얻을 수있게되면 관리 할 수있을 것 같습니다.

감사합니다.

+0

까지 문제를 못해서 두 번째 방법을 사용하여 첫 번째 방법 를 사용하여 15 자 이상 입력 문자열을 시작까지 성능이

광산이 나에게 문제를 포기하지 않았다 파괴하는거야? objective-c에있는 링크 나 샘플 코드는 많은 도움이 될 것입니다. 미리 감사드립니다. – SwapnilPopat

답변

1

성능에 대해 우려되는 경우이 방법이 유용한 방법 일 수 있습니다. 몇 가지 사전 처리가 필요하지만 거의 즉시 분석을 수행 할 수 있습니다.

  1. 은 문자열의 목록에 문자열 키를 매핑하는 데이터 구조를 만들기 이것은 당신의 사전을 저장합니다 (그것은 Map<String,List<String>> 될 경우에, 그래서 나는, 자바 더 잘 알고 있어요).

  2. 문자열을 취하여 알파벳순으로 정렬 된 동일한 문자를 출력하는 함수를 정의하십시오. 예를 들어, helloehllo이됩니다. kitchencehiknt이됩니다. 이 함수는 keyify(word)

  3. 으로 표시됩니다. 사전의 각 항목에 대해 해당 항목의 키 목록 (keyify(item))을 찾고 해당 항목을 목록에 추가하십시오.

  4. 주어진 단어의 아나그램을 검색 할 때는 해당 단어의 keyify에서 목록을 찾아보십시오. 입력이 kitchen 인 경우 예를 들어, keyifycehiknt 될 것이며,지도에서 그를 찾고 kitchen, chicken 내가 잊었 부엌의 어떤 다른 아나그램 포함하는 목록을 초래할한다 : P

+0

좋은 솔루션, tassainari와 J. Cohen의 답변 링크가 비슷합니다. 나는 결과적인 단어가 3-6 글자이어야하므로 문제가되는 부분이 그지도를 구축 할 것이라고 생각한다. : S이 시점에서 구현 방법에 대해 혼란 스럽습니다. – kazuo

+0

조회 맵에 입력 한 원래 사전의 항목을 매우 쉽게 제한 할 수 있습니다. 필요없는 데이터를 넣을 이유가 없습니다. 구현에 관해서는 객관적인 C에 익숙하지 않아서 당신을 도울 수 없습니다. – Dylan

0

이 답변을 확인하십시오 : Algorithm to generate anagrams.. Jason Cohen의 답을 찾아보십시오. 6 글자 단어를 알파벳순으로 한 다음 사전을 실행하고 해당 단어를 알파벳순으로 비교합니다.

0

I을 실제로 몇 주 전에이 문제에 달려 내가 ((2^n)이이 걸릴 것입니다 O)를

주어진 문자열의 모든 부분 집합을 발견

내가 해결하는 방법을 알아낼 수있는 가장 효율적인 방법은이었다

그런 다음 내 사전을보고 하위가 있는지 확인했습니다. 모든 크기의 문자열 "hetre" 주어진 예를 들어

의 모든 문자열의 문자와 단어 "는,이, 그녀의"사전 당신이 모든 부분 집합을 산출 할 수있다 "를 사용"설정

{h} {e} {t} {r} {e} {he} {ht} {hr} {he} {her} {reh} ...이러한 서브 세트의 모든 그녀

사용되는 단어가 있음을 의미 REH 그녀 비슷이 경우 사전 단어와 유사한 있는지

후 확인 "hetre"32 서브셋이있다

이것은 내가

연구 PowerSets 생각하고, 문자열

또 다른 방법은 파악하여 무력하는 것입니다 "가 사용하는"당신이 기능을 쓸 수있는 방법을 생각할 수있는 가장 효율적인 방법이었다 문자열에 대한 powersets 및 모든 순열 찾기,이 위 나는 당신이 어떤 해결책을 찾을 않았다 내가 7

+0

더 실용적인 솔루션이 될 문자열의 powerset을 수행하거나 모든 조합/순열을 찾는 것이 궁금합니다. – kazuo

+0

문자열의 powerset을 찾아 모든 문자열을 확인한 다음 모든 조합과 순열을 찾아야합니다. 전원 세트는 순열이 같은 크기의 문자열 만 제공하는 모든 크기의 모든 문자열을 찾습니다. – dbarnes