Advertisement
LianSheng

2023Q1_PY - 參考用

Feb 2nd, 2023
1,044
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.04 KB | None | 0 0
  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']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement