Advertisement
here2share

# gradient_combo.py

Dec 24th, 2024
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.27 KB | None | 0 0
  1. # gradient_combo.py
  2.  
  3. def next_highest_combo(perm, base=10):
  4.     size = len(perm)
  5.     max_num = max(perm)
  6.  
  7.     if perm == sorted(perm)[::-1]:
  8.         perm.reverse()
  9.         for i in range(len(perm) - 1, -1, -1):
  10.             if perm[i] < max_num:
  11.                 perm[i] += 1
  12.                 for j in range(i + 1, len(perm) - 1):
  13.                     perm[j] = perm[i]
  14.                 return perm
  15.                
  16.     i = size - 2
  17.     while i >= 0 and perm[i] >= perm[i + 1]:
  18.         i -= 1
  19.     if i == -1:
  20.         if max(perm) == base:
  21.             return None
  22.         return [0] * (size - 1) + [max(perm) + 1]
  23.  
  24.     j = size - 1
  25.     while perm[j] <= perm[i]:
  26.         j -= 1
  27.  
  28.     perm[i], perm[j] = perm[j], perm[i]
  29.     perm = perm[:i+1] + perm[i+1:][::-1]
  30.  
  31.     return perm
  32.  
  33. base = 3
  34. perm = [0, 0, 0, 0]
  35. while perm:
  36.     print(''.join(map(str, perm)))
  37.     perm = next_highest_combo(perm, base)
  38.    
  39. '''
  40. 0000
  41. 0001
  42. 0010
  43. 0100
  44. 1000
  45. 0011
  46. 0101
  47. 0110
  48. 1001
  49. 1010
  50. 1100
  51. 0111
  52. 1011
  53. 1101
  54. 1110
  55. 1111
  56. 0002
  57. 0020
  58. 0200
  59. 2000
  60. 0012
  61. 0021
  62. 0102
  63. 0120
  64. 0201
  65. 0210
  66. 1002
  67. 1020
  68. 1200
  69. 2001
  70. 2010
  71. 2100
  72. 0022
  73. 0202
  74. 0220
  75. 2002
  76. 2020
  77. 2200
  78. 0112
  79. 0121
  80. 0211
  81. 1012
  82. 1021
  83. 1102
  84. 1120
  85. 1201
  86. 1210
  87. 2011
  88. 2101
  89. 2110
  90. 0122
  91. 0212
  92. 0221
  93. 1022
  94. 1202
  95. 1220
  96. 2012
  97. 2021
  98. 2102
  99. 2120
  100. 2201
  101. 2210
  102. 0222
  103. 2022
  104. 2202
  105. 2220
  106. 1112
  107. 1121
  108. 1211
  109. 2111
  110. 1122
  111. 1212
  112. 1221
  113. 2112
  114. 2121
  115. 2211
  116. 1222
  117. 2122
  118. 2212
  119. 2221
  120. 2222
  121. 0003
  122. 0030
  123. 0300
  124. 3000
  125. 0013
  126. 0031
  127. 0103
  128. 0130
  129. 0301
  130. 0310
  131. 1003
  132. 1030
  133. 1300
  134. 3001
  135. 3010
  136. 3100
  137. 0023
  138. 0032
  139. 0203
  140. 0230
  141. 0302
  142. 0320
  143. 2003
  144. 2030
  145. 2300
  146. 3002
  147. 3020
  148. 3200
  149. 0033
  150. 0303
  151. 0330
  152. 3003
  153. 3030
  154. 3300
  155. 0113
  156. 0131
  157. 0311
  158. 1013
  159. 1031
  160. 1103
  161. 1130
  162. 1301
  163. 1310
  164. 3011
  165. 3101
  166. 3110
  167. 0123
  168. 0132
  169. 0213
  170. 0231
  171. 0312
  172. 0321
  173. 1023
  174. 1032
  175. 1203
  176. 1230
  177. 1302
  178. 1320
  179. 2013
  180. 2031
  181. 2103
  182. 2130
  183. 2301
  184. 2310
  185. 3012
  186. 3021
  187. 3102
  188. 3120
  189. 3201
  190. 3210
  191. 0133
  192. 0313
  193. 0331
  194. 1033
  195. 1303
  196. 1330
  197. 3013
  198. 3031
  199. 3103
  200. 3130
  201. 3301
  202. 3310
  203. 0223
  204. 0232
  205. 0322
  206. 2023
  207. 2032
  208. 2203
  209. 2230
  210. 2302
  211. 2320
  212. 3022
  213. 3202
  214. 3220
  215. 0233
  216. 0323
  217. 0332
  218. 2033
  219. 2303
  220. 2330
  221. 3023
  222. 3032
  223. 3203
  224. 3230
  225. 3302
  226. 3320
  227. 0333
  228. 3033
  229. 3303
  230. 3330
  231. 1113
  232. 1131
  233. 1311
  234. 3111
  235. 1123
  236. 1132
  237. 1213
  238. 1231
  239. 1312
  240. 1321
  241. 2113
  242. 2131
  243. 2311
  244. 3112
  245. 3121
  246. 3211
  247. 1133
  248. 1313
  249. 1331
  250. 3113
  251. 3131
  252. 3311
  253. 1223
  254. 1232
  255. 1322
  256. 2123
  257. 2132
  258. 2213
  259. 2231
  260. 2312
  261. 2321
  262. 3122
  263. 3212
  264. 3221
  265. 1233
  266. 1323
  267. 1332
  268. 2133
  269. 2313
  270. 2331
  271. 3123
  272. 3132
  273. 3213
  274. 3231
  275. 3312
  276. 3321
  277. 1333
  278. 3133
  279. 3313
  280. 3331
  281. 2223
  282. 2232
  283. 2322
  284. 3222
  285. 2233
  286. 2323
  287. 2332
  288. 3223
  289. 3232
  290. 3322
  291. 2333
  292. 3233
  293. 3323
  294. 3332
  295. 3333
  296. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement