POJ 1051:P,MTHBGWB Python

POJ 1051:P,MTHBGWB Python

POJ 1051 Python

POJ 1051 Python

题意+思路

  1. 字符串→莫尔斯码
  2. 该莫尔斯码→去空格+数字(每一段长度)串
  3. 数字串反序
  4. 根据反序数字串补空格并翻译回字符串输出

遇到的问题
Python输出会自带空格或者换行,参考print函数原型:

1.print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

通过的方案

1.dict_L2C={
2. 'A':".-",
3. 'B':"-...",
4. 'C':"-.-.",
5. 'D':"-..",
6. 'E':".",
7. 'F':"..-.",
8. 'G':"--.",
9. 'H':"....",
10. 'I':"..",
11. 'J':".---",
12. 'K':"-.-",
13. 'L':".-..",
14. 'M':"--",
15. 'N':"-.",
16. 'O':"---",
17. 'P':".--.",
18. 'Q':"--.-",
19. 'R':".-.",
20. 'S':"...",
21. 'T':"-",
22. 'U':"..-",
23. 'V':"...-",
24. 'W':".--",
25. 'X':"-..-",
26. 'Y':"-.--",
27. 'Z':"--..",
28. '_':"..--",
29. '.':"---.",
30. ',':".-.-",
31. '?':"----"
32.}
33.dict_C2L={
34. '.-': 'A',
35. '-...': 'B',
36. '-.-.': 'C',
37. '-..':'D',
38. '.':'E',
39. '..-.':'F',
40. '--.': 'G',
41. '....': 'H',
42. '..': 'I',
43. '.---':'J',
44. '-.-': 'K',
45. '.-..': 'L',
46. '--': 'M',
47. '-.': 'N',
48. '---': 'O',
49. '.--.': 'P',
50. '--.-': 'Q',
51. '.-.': 'R',
52. '...': 'S',
53. '-': 'T',
54. '..-': 'U',
55. '...-': 'V',
56. '.--': 'W',
57. '-..-': 'X',
58. '-.--': 'Y',
59. '--..': 'Z',
60. '..--':'_',
61. '---.':'.',
62. '.-.-':',',
63. '----':'?'
64.}
65.def Str2Code(str_In,dict_L2C):
66. Out={
67. 'Code':'',
68. 'Length':''
69. }
70. for L in str_In:
71. Out['Code']+=dict_L2C[L]
72. Out['Length']+=str(len(dict_L2C[L]))
73. return Out
74.def RevStr(str_Len):
75. Out=''
76. for i in range(len(str_Len)):
77. Out+=str_Len[-i-1]
78. return Out
79.def NewStr(str_Code,str_Len_Rev):
80. Out=list(str_Code)
81. Len_str=len(str_Len_Rev)
82. Position=0
83. for i in range(Len_str):
84. Position+=int(str_Len_Rev[i])
85. Out.insert(Position,' ')
86. Position+=1
87. Out=''.join(Out)
88. return Out
89.def Code2Str(str_Code,dict_C2L):
90. Out=''
91. list_Code=[temp for temp in str_Code.split()]
92. for i in range(len(list_Code)):
93. Out+=dict_C2L[list_Code[i]]
94. return Out
95.def Decode(Str_In):
96. Out=Str2Code(Str_In,dict_L2C)
97. str_Len_Rev=RevStr(Out['Length'])
98. return(Code2Str(NewStr(Out['Code'],str_Len_Rev),dict_C2L))
99.N=int(input())
100.for i in range(N):
101. Str_In=input()
102. print(str(i+1)+':'+' '+Decode(Str_In))

发表评论

电子邮件地址不会被公开。 必填项已用*标注