2023Q1_PY - 參考用

Feb 2nd, 2023
910
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. # https://forum.gamer.com.tw/C.php?bsn=60292&snA=8226&tnum=1
2.
3. def K(perm: str, _iter_layer_count: int = 0) -> list[str]:
4.     if len(perm) <= 1:
5.         return [perm]
6.
7.     r = []
8.     for i in range(len(perm)):
9.         _left = perm[:i]
10.         _right = perm[i+1:]
11.         _total = _left + _right
12.         _sublist = K(_total, _iter_layer_count + 1)
13.         _sublist_print = ','.join(_sublist)
14.         print(f"{_iter_layer_count: >5} |{_left: >5} |{_right: >6} |{_total: >6} |{_sublist_print: >26} |", end="")
15.
16.         others = _sublist
17.
18.         _flag_first = True
19.         for s in others:
20.             _current_left = perm[i]
21.             _current_right = s
22.             _current_total = _current_left + _current_right
23.
24.             if _flag_first:
25.                 _flag_first = False
26.             else:
27.                 print(f"{_iter_layer_count: >5} |{'-': >5} |{'-': >6} |{'-': >6} |{'-': >26} |", end="")
28.
29.             print(f"{_current_left: >8} |{_current_right: >9} |{_current_total: >9}")
30.
31.             r = r + [_current_total]
32.
33.     return r
34.
35.
36. p = ' ' * 10
37.
38. print(
39.     f" Iter | Left | Right | Total |{p}Sublist{p}| CurLeft | CurRight | CurTotal ")
40. print("-" * 88)
41. print(K("1234"))
42.
43.
44. #  Iter | Left | Right | Total |          Sublist          | CurLeft | CurRight | CurTotal
45. # ----------------------------------------------------------------------------------------
46. #     2 |      |     4 |     4 |                         4 |       3 |        4 |       34
47. #     2 |    3 |       |     3 |                         3 |       4 |        3 |       43
48. #     1 |      |    34 |    34 |                     34,43 |       2 |       34 |      234
49. #     1 |    - |     - |     - |                         - |       2 |       43 |      243
50. #     2 |      |     4 |     4 |                         4 |       2 |        4 |       24
51. #     2 |    2 |       |     2 |                         2 |       4 |        2 |       42
52. #     1 |    2 |     4 |    24 |                     24,42 |       3 |       24 |      324
53. #     1 |    - |     - |     - |                         - |       3 |       42 |      342
54. #     2 |      |     3 |     3 |                         3 |       2 |        3 |       23
55. #     2 |    2 |       |     2 |                         2 |       3 |        2 |       32
56. #     1 |   23 |       |    23 |                     23,32 |       4 |       23 |      423
57. #     1 |    - |     - |     - |                         - |       4 |       32 |      432
58. #     0 |      |   234 |   234 |   234,243,324,342,423,432 |       1 |      234 |     1234
59. #     0 |    - |     - |     - |                         - |       1 |      243 |     1243
60. #     0 |    - |     - |     - |                         - |       1 |      324 |     1324
61. #     0 |    - |     - |     - |                         - |       1 |      342 |     1342
62. #     0 |    - |     - |     - |                         - |       1 |      423 |     1423
63. #     0 |    - |     - |     - |                         - |       1 |      432 |     1432
64. #     2 |      |     4 |     4 |                         4 |       3 |        4 |       34
65. #     2 |    3 |       |     3 |                         3 |       4 |        3 |       43
66. #     1 |      |    34 |    34 |                     34,43 |       1 |       34 |      134
67. #     1 |    - |     - |     - |                         - |       1 |       43 |      143
68. #     2 |      |     4 |     4 |                         4 |       1 |        4 |       14
69. #     2 |    1 |       |     1 |                         1 |       4 |        1 |       41
70. #     1 |    1 |     4 |    14 |                     14,41 |       3 |       14 |      314
71. #     1 |    - |     - |     - |                         - |       3 |       41 |      341
72. #     2 |      |     3 |     3 |                         3 |       1 |        3 |       13
73. #     2 |    1 |       |     1 |                         1 |       3 |        1 |       31
74. #     1 |   13 |       |    13 |                     13,31 |       4 |       13 |      413
75. #     1 |    - |     - |     - |                         - |       4 |       31 |      431
76. #     0 |    1 |    34 |   134 |   134,143,314,341,413,431 |       2 |      134 |     2134
77. #     0 |    - |     - |     - |                         - |       2 |      143 |     2143
78. #     0 |    - |     - |     - |                         - |       2 |      314 |     2314
79. #     0 |    - |     - |     - |                         - |       2 |      341 |     2341
80. #     0 |    - |     - |     - |                         - |       2 |      413 |     2413
81. #     0 |    - |     - |     - |                         - |       2 |      431 |     2431
82. #     2 |      |     4 |     4 |                         4 |       2 |        4 |       24
83. #     2 |    2 |       |     2 |                         2 |       4 |        2 |       42
84. #     1 |      |    24 |    24 |                     24,42 |       1 |       24 |      124
85. #     1 |    - |     - |     - |                         - |       1 |       42 |      142
86. #     2 |      |     4 |     4 |                         4 |       1 |        4 |       14
87. #     2 |    1 |       |     1 |                         1 |       4 |        1 |       41
88. #     1 |    1 |     4 |    14 |                     14,41 |       2 |       14 |      214
89. #     1 |    - |     - |     - |                         - |       2 |       41 |      241
90. #     2 |      |     2 |     2 |                         2 |       1 |        2 |       12
91. #     2 |    1 |       |     1 |                         1 |       2 |        1 |       21
92. #     1 |   12 |       |    12 |                     12,21 |       4 |       12 |      412
93. #     1 |    - |     - |     - |                         - |       4 |       21 |      421
94. #     0 |   12 |     4 |   124 |   124,142,214,241,412,421 |       3 |      124 |     3124
95. #     0 |    - |     - |     - |                         - |       3 |      142 |     3142
96. #     0 |    - |     - |     - |                         - |       3 |      214 |     3214
97. #     0 |    - |     - |     - |                         - |       3 |      241 |     3241
98. #     0 |    - |     - |     - |                         - |       3 |      412 |     3412
99. #     0 |    - |     - |     - |                         - |       3 |      421 |     3421
100. #     2 |      |     3 |     3 |                         3 |       2 |        3 |       23
101. #     2 |    2 |       |     2 |                         2 |       3 |        2 |       32
102. #     1 |      |    23 |    23 |                     23,32 |       1 |       23 |      123
103. #     1 |    - |     - |     - |                         - |       1 |       32 |      132
104. #     2 |      |     3 |     3 |                         3 |       1 |        3 |       13
105. #     2 |    1 |       |     1 |                         1 |       3 |        1 |       31
106. #     1 |    1 |     3 |    13 |                     13,31 |       2 |       13 |      213
107. #     1 |    - |     - |     - |                         - |       2 |       31 |      231
108. #     2 |      |     2 |     2 |                         2 |       1 |        2 |       12
109. #     2 |    1 |       |     1 |                         1 |       2 |        1 |       21
110. #     1 |   12 |       |    12 |                     12,21 |       3 |       12 |      312
111. #     1 |    - |     - |     - |                         - |       3 |       21 |      321
112. #     0 |  123 |       |   123 |   123,132,213,231,312,321 |       4 |      123 |     4123
113. #     0 |    - |     - |     - |                         - |       4 |      132 |     4132
114. #     0 |    - |     - |     - |                         - |       4 |      213 |     4213
115. #     0 |    - |     - |     - |                         - |       4 |      231 |     4231
116. #     0 |    - |     - |     - |                         - |       4 |      312 |     4312
117. #     0 |    - |     - |     - |                         - |       4 |      321 |     4321
118. # ['1234', '1243', '1324', '1342', '1423', '1432', '2134', '2143', '2314', '2341', '2413', '2431', '3124', '3142', '3214', '3241', '3412', '3421', '4123', '4132', '4213', '4231', '4312', '4321']