아나그램 만들기 어렵군요.

frombc7197의 이미지

역시 프로그래밍이 처음이라 그런지 모든게 신기하고 어색합니다.

예전에 본 푸코의 진자에 아나그램 만드는 베이직 프로그램이 실려있길래 이걸 파이썬으로 만들어 보면 어떨까 하고 시작했는데.

전혀 감이 안잡힙니다.

글자입력은 어찌어찌 되는데 이걸 모든 가능한 순서대로 배열시키는 코드는 어떻게 생겨먹을지 모르겠군요.

베이직 프로그램을 해석 못해서 그런가...

생각을 더 해봐야겠습니다.


10 rem anagrams
20 input L$(1, L$(2), L$(3), L$(4)
30 print 
40 For I1 = 1 to 4
50 For I2 = 1 to 4
60 If I2 = I1 then 130
70 for I3 = 1 to 4
80 If I3 = I1 then 120
90 If I3 = I2 then 120
100 Let I4 = 10 - (I1 + I2 + I3)
110 Lprint L$(I1), L$(I2), L$(I3), L$(I4)
120 next I3
130 next I2
140 next I1
150 END

perky의 이미지

요렇게 해보세요.

WORDS = {}
for w in open('/usr/share/dict/web2').read().split():
    if len(w) not in WORDS:
        WORDS[len(w)] = []
    WORDS[len(w)].append((w, ''.join(sorted(w))))

def anagrams(word):
    basecano = ''.join(sorted(word))
    for w, wcano in WORDS[len(word)]:
        if wcano == basecano:
            yield w

if __name__ == '__main__':
    try:
        while True:
            word = raw_input('>> ')
            if not word:
                break

            for ana in anagrams(word):
                print ana
            print

    except EOFError:
        raise SystemExit

/usr/share/dict/web2는 FreeBSD에 있는 사전인데, http://www.freebsd.org/cgi/cvsweb.cgi/src/share/dict/web2 에서 받으실 수 있습니다.

You need Python

frombc7197의 이미지

에.. 제가 잘못 읽은 것이 아니라면, 위 프로그램은 입력한 문자열의 아나그램중에서 사전에 들어있는 것만 출력하는 프로그램 같습니다만...

저는 모든 조합을 다 출력하는 프로그램을 만드려고 하거든요.

뭔소린지 모르겠다.

perky의 이미지

frombc7197 wrote:
에.. 제가 잘못 읽은 것이 아니라면, 위 프로그램은 입력한 문자열의 아나그램중에서 사전에 들어있는 것만 출력하는 프로그램 같습니다만...

저는 모든 조합을 다 출력하는 프로그램을 만드려고 하거든요.

그런 거라면 그냥 permutation을 쓰면 되겠네요.

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66463
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/126037

You need Python

frombc7197의 이미지

perky wrote:
frombc7197 wrote:
에.. 제가 잘못 읽은 것이 아니라면, 위 프로그램은 입력한 문자열의 아나그램중에서 사전에 들어있는 것만 출력하는 프로그램 같습니다만...

저는 모든 조합을 다 출력하는 프로그램을 만드려고 하거든요.

그런 거라면 그냥 permutation을 쓰면 되겠네요.

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66463
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/126037

감사합니다.

그런데 아직 저 코드들이 뭘 의미하는 지 잘 모르겠네요... :oops:

뭔소린지 모르겠다.