Advertisement
here2share

# kirk_lawrence_algorithm.py ^ 12/24/24

Jun 17th, 2024 (edited)
901
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.16 KB | None | 0 0
  1. # kirk_lawrence_algorithm.py ??? update and renamed... not sure if i invented this
  2.  
  3. # gradient_combo.py
  4.  
  5. def next_highest_combo(perm, base=10):
  6.     size = len(perm)
  7.     max_num = max(perm)
  8.  
  9.     if perm == sorted(perm)[::-1]:
  10.         perm.reverse()
  11.         for i in range(len(perm) - 1, -1, -1):
  12.             if perm[i] < max_num:
  13.                 perm[i] += 1
  14.                 for j in range(i + 1, len(perm) - 1):
  15.                     perm[j] = perm[i]
  16.                 return perm
  17.                
  18.     i = size - 2
  19.     while i >= 0 and perm[i] >= perm[i + 1]:
  20.         i -= 1
  21.     if i == -1:
  22.         if max(perm) == base:
  23.             return None
  24.         return [0] * (size - 1) + [max(perm) + 1]
  25.  
  26.     j = size - 1
  27.     while perm[j] <= perm[i]:
  28.         j -= 1
  29.  
  30.     perm[i], perm[j] = perm[j], perm[i]
  31.     perm = perm[:i+1] + perm[i+1:][::-1]
  32.  
  33.     return perm
  34.  
  35. base = 3
  36. perm = [0, 0, 0]
  37. while perm:
  38.     print(''.join(map(str, perm)))
  39.     perm = next_highest_combo(perm, base)
  40.    
  41. '''
  42. 000
  43. 001
  44. 010
  45. 100
  46. 011
  47. 101
  48. 110
  49. 111
  50. 002
  51. 020
  52. 200
  53. 012
  54. 021
  55. 102
  56. 120
  57. 201
  58. 210
  59. 022
  60. 202
  61. 220
  62. 112
  63. 121
  64. 211
  65. 122
  66. 212
  67. 221
  68. 222
  69. 003
  70. 030
  71. 300
  72. 013
  73. 031
  74. 103
  75. 130
  76. 301
  77. 310
  78. 023
  79. 032
  80. 203
  81. 230
  82. 302
  83. 320
  84. 033
  85. 303
  86. 330
  87. 113
  88. 131
  89. 311
  90. 123
  91. 132
  92. 213
  93. 231
  94. 312
  95. 321
  96. 133
  97. 313
  98. 331
  99. 223
  100. 232
  101. 322
  102. 233
  103. 323
  104. 332
  105. 333
  106. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement