Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

ClassifyByAnagram/재동: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0001 pages from live compare)
 
Line 10: Line 10:
   
   
     def testSplitWord(self):
     def testSplitWord(self):
         expect = ['a','b','c']
         expect = ['a','b','c']
         self.anagram.inputWord('abc')
         self.anagram.inputWord('abc')
         self.anagram.splitWord()
         self.anagram.splitWord()
Line 29: Line 29:
         self.anagram.splitWord()
         self.anagram.splitWord()
         self.anagram.sortWord()
         self.anagram.sortWord()
         self.anagram.setAnagramList([['abc','cba']])
         self.anagram.setAnagramList([['abc','cba']])
         self.assertEquals(expect1, self.anagram.isWordListInAnagramList())
         self.assertEquals(expect1, self.anagram.isWordListInAnagramList())
         self.anagram.inputWord('zzz')
         self.anagram.inputWord('zzz')
Line 37: Line 37:
          
          
     def testStoreWord(self):
     def testStoreWord(self):
         expect = [['abc','cba']]
         expect = [['abc','cba']]
         self.anagram.inputWord('cba')
         self.anagram.inputWord('cba')
         self.anagram.process()
         self.anagram.process()
Line 43: Line 43:
   
   
     def testAcceptence(self):
     def testAcceptence(self):
         expect = [['abc','cba','bac'],['aabb','abab']]
         expect = [['abc','cba','bac'],['aabb','abab']]
         self.anagram.inputWord('cba')
         self.anagram.inputWord('cba')
         self.anagram.process()
         self.anagram.process()
Line 54: Line 54:
  class Anagram:
  class Anagram:
     def __init__(self):
     def __init__(self):
         self.anagramList = []
         self.anagramList = []
   
   
     def inputWord(self, word):
     def inputWord(self, word):
Line 60: Line 60:
   
   
     def splitWord(self):
     def splitWord(self):
         self.wordList = []
         self.wordList = []
         for i in range(len(self.wordString)):
         for i in range(len(self.wordString)):
             self.wordList.append(self.wordString[i])
             self.wordList.append(self.wordString[i])
              
              
     def sortWord(self):
     def sortWord(self):
Line 69: Line 69:
     def isWordListInAnagramList(self):
     def isWordListInAnagramList(self):
         for i in range(len(self.anagramList)):
         for i in range(len(self.anagramList)):
             if self.anagramList[i][0] == self.getSortWordString():
             if self.anagramList[i][0] == self.getSortWordString():
                 self.index = i
                 self.index = i
                 return True
                 return True
Line 79: Line 79:
     def storeWord(self):
     def storeWord(self):
         if self.isWordListInAnagramList() is True:
         if self.isWordListInAnagramList() is True:
             self.anagramList[self.index].append(self.wordString)
             self.anagramList[self.index].append(self.wordString)
         else:
         else:
             self.anagramList.append([self.getSortWordString()])
             self.anagramList.append([self.getSortWordString()])
             self.anagramList[len(self.anagramList)-1].append(self.wordString)
             self.anagramList[len(self.anagramList)-1].append(self.wordString)
              
              
     def process(self):
     def process(self):
Line 95: Line 95:
         tempString = ''
         tempString = ''
         for i in range(len(self.wordList)):
         for i in range(len(self.wordList)):
             tempString += self.wordList[i]
             tempString += self.wordList[i]
         return tempString
         return tempString
      
      
Line 103: Line 103:
     def printAnagramList(self):
     def printAnagramList(self):
         for i in range(len(self.anagramList)):
         for i in range(len(self.anagramList)):
             for j in range(1,len(self.anagramList[i])):
             for j in range(1,len(self.anagramList[i])):
                 print self.anagramList[i][j],
                 print self.anagramList[i][j],
             print
             print
              
              
Line 120: Line 120:
----
----
[[ClassifyByAnagram]]
[[ClassifyByAnagram]]

Latest revision as of 23:56, 26 March 2026

소스

import unittest

class AnagramTestCase(unittest.TestCase):
    def setUp(self):
        self.anagram = Anagram()
        
    def testCreationAnagram(self):
        self.assert_(self.anagram)

    def testSplitWord(self):
        expect = ['a','b','c']
        self.anagram.inputWord('abc')
        self.anagram.splitWord()
        self.assertEquals(expect, self.anagram.getSplitWordList())
        
    def testSortWord(self):
        expect = 'abc'
        self.anagram.inputWord('cba')
        self.anagram.splitWord()
        self.anagram.sortWord()
        self.assertEquals(expect, self.anagram.getSortWordString())

    def testIsWordListInAnagramList(self):
        expect1 = True
        expect2 = False
        
        self.anagram.inputWord('cba')
        self.anagram.splitWord()
        self.anagram.sortWord()
        self.anagram.setAnagramList([['abc','cba']])
        self.assertEquals(expect1, self.anagram.isWordListInAnagramList())
        self.anagram.inputWord('zzz')
        self.anagram.splitWord()
        self.anagram.sortWord()
        self.assertEquals(expect2, self.anagram.isWordListInAnagramList())
        
    def testStoreWord(self):
        expect = [['abc','cba']]
        self.anagram.inputWord('cba')
        self.anagram.process()
        self.assertEquals(expect, self.anagram.getStoreWord())

    def testAcceptence(self):
        expect = [['abc','cba','bac'],['aabb','abab']]
        self.anagram.inputWord('cba')
        self.anagram.process()
        self.anagram.inputWord('bac')
        self.anagram.process()
        self.anagram.inputWord('abab')
        self.anagram.process()
        self.assertEquals(expect, self.anagram.getStoreWord())
    
class Anagram:
    def __init__(self):
        self.anagramList = []

    def inputWord(self, word):
        self.wordString = word

    def splitWord(self):
        self.wordList = []
        for i in range(len(self.wordString)):
            self.wordList.append(self.wordString[i])
            
    def sortWord(self):
        self.wordList.sort()

    def isWordListInAnagramList(self):
        for i in range(len(self.anagramList)):
            if self.anagramList[i][0] == self.getSortWordString():
                self.index = i
                return True
        return False

    def setAnagramList(self,anagramList):
        self.anagramList = anagramList
            
    def storeWord(self):
        if self.isWordListInAnagramList() is True:
            self.anagramList[self.index].append(self.wordString)
        else:
            self.anagramList.append([self.getSortWordString()])
            self.anagramList[len(self.anagramList)-1].append(self.wordString)
            
    def process(self):
        self.splitWord()
        self.sortWord()
        self.storeWord()
        
    def getSplitWordList(self):
        return self.wordList
    
    def getSortWordString(self):
        tempString = 
        for i in range(len(self.wordList)):
            tempString += self.wordList[i]
        return tempString
    
    def getStoreWord(self):
        return self.anagramList
    
    def printAnagramList(self):
        for i in range(len(self.anagramList)):
            for j in range(1,len(self.anagramList[i])):
                print self.anagramList[i][j],
            print
            
if __name__ == '__main__':
    #unittest.main()
    anagram = Anagram()
    while str:
        str = raw_input()
        anagram.inputWord(str)
        anagram.process()
    anagram.printAnagramList()

Thread

  • 우선은 빠르게 하는 거 생각하지 않고 그냥 생각나는 대로 짰습니다. 이제 이걸 토대로 '빠르게'를 생각해 보아야겠지요 --재동

ClassifyByAnagram