프로그래밍 | 2010. 2. 20. 18:58
원문 : http://uva.onlinejudge.org/external/4/475.html
와일드 카드 문자에 대해서는...
Wildcard characters are used within filenames to permit the user to generically specify a group of files that a command should act upon. A wildcard character itself matches zero or more characters in the same position as the wildcard.
(와일드카드 문자는 사용자가 명령이 실행되는 한 파일 그룹을 명시하는데 사용된다. 와일드카드 문자 자체는 와일드 카드 위치에 0개 이상의 다른 문자들로 대치된다.)
매칭되는 단어가 없는 경우에는 아무 것도 출력하지 않습니다.
입력 예
C*AT COMFILE.DAT COST.DATA CAT %XCAT COAT CATCH *A* MOUNTAIN.TXT ALFRED PROG1A SECOND.ED PROG1A.PAS HELLO NOTHING
B**N* NIBBLE.BIT BANANA BNXJ.25 BORN ABNORMAL.LIS BRANDISH.SRD BITNET
출력 예
MATCHES FOR THE PATTERN: C*AT COMFILE.DAT CAT COAT MATCHES FOR THE PATTERN: *A* MOUNTAIN.TXT ALFRED PROG1A PROG1A.PAS MATCHES FOR THE PATTERN: B**N* BANANA BNXJ.25 BORN BRANDISH.SRD BITNET풀이
import unittest import re def matched( condition, input ): condition = condition.replace( "*", ".*" ) pattern = "^" + condition + "$" returnValue = []; for i in range(0,len(input)): match = re.search( pattern, input[i] ); if( match ): returnValue += [ input[i] ] return returnValue class TestWhildThing( unittest.TestCase ): def test_whild(self): self.assertEquals( ["COMFILE.DAT", "CAT", "COAT"], matched( "C*AT", ["COMFILE.DAT","COST.DATA","CAT","%XCAT","COAT","CATCH",])) self.assertEquals( ["MOUNTAIN.TXT", "ALFRED", "PROG1A", "PROG1A.PAS"], matched("*A*", ["MOUNTAIN.TXT", "ALFRED", "PROG1A", "PROG1A.PAS"])) self.assertEquals( [], matched( "HELLO", ["NOTHING"])) self.assertEquals( ["BANANA", "BNXJ.25", "BORN", "BRANDISH.SRD", "BITNET"], matched("B**N*", ["NIBBLE.BIT", "BANANA", "BNXJ.25", "BORN", "ABNORMAL.LIS", "BRANDISH.SRD", "BITNET"])) if __name__ == '__main__': unittest.main(argv=('', '-v'))
소스코드 관리 시스템(SCM)에 로그 제대로 남기기 (0) | 2010.04.21 |
---|---|
적절한 Test case를 선택하여 프로그램 테스트하기 (0) | 2010.03.20 |
#pragma warning (0) | 2010.02.09 |
Visual Studio 프로젝트 설정 매크로들.. (0) | 2010.01.23 |
코딩도장 - Slurpy (0) | 2010.01.19 |