fork(1) download
  1. from itertools import permutations
  2. def sort4l(d):
  3. def lswap2(a,b):
  4. nonlocal d
  5. t=d[a]
  6. d[a]=d[b]
  7. d[b]=t
  8.  
  9. def lswap3(a,b,c):
  10. nonlocal d
  11. t=d[a]
  12. d[a]=d[b]
  13. d[b]=d[c]
  14. d[c]=t
  15.  
  16. def lswap4(p,q,r,s):
  17. nonlocal d
  18. t=d[p]
  19. d[p]=d[q]
  20. d[q]=d[r]
  21. d[r]=d[s]
  22. d[s]=t
  23.  
  24. if(d[0]<d[1]):
  25. if(d[2]<d[3]):
  26. if(d[0]<d[2]):
  27. if(d[1]<d[3]):
  28. if(d[1]<d[2]):return
  29. else:
  30. lswap2(1,2)
  31. else:
  32. lswap3(3,1,2)
  33. else:
  34. if(d[1]<d[3]):lswap3(1,0,2)
  35. else:
  36. if(d[0]<d[3]):lswap4(3,1,0,2)
  37. else:
  38. lswap2(3,1)
  39. lswap2(0,2)
  40. else:
  41. if(d[0]<d[3]):
  42. if(d[1]<d[2]):
  43. if(d[1]<d[3]):lswap2(3,2)
  44. else:
  45. lswap3(1,3,2)
  46. else:
  47. lswap2(1,3)
  48. else:
  49. if(d[1]<d[2]):lswap4(2,1,0,3)
  50. else:
  51. if(d[0]<d[2]):lswap3(0,3,1)
  52. else:
  53. lswap4(2,0,3,1)
  54. else:
  55. if(d[2]<d[3]):
  56. if(d[0]<d[3]):
  57. if(d[1]<d[2]):
  58. if(d[0]<d[2]):lswap2(0,1)
  59. else:
  60. lswap3(2,0,1)
  61. else:
  62. lswap2(2,0)
  63. else:
  64. if(d[1]<d[2]):lswap4(1,2,3,0)
  65. else:
  66. if(d[1]<d[3]):lswap3(3,0,2)
  67. else:
  68. lswap4(1,3,0,2)
  69. else:
  70. if(d[0]<d[2]):
  71. if(d[1]<d[3]):
  72. if(d[0]<d[3]):
  73. lswap2(0,1)
  74. lswap2(3,2)
  75. else:
  76. lswap4(0,1,3,2)
  77. else:
  78. lswap3(0,3,2)
  79. else:
  80. if(d[1]<d[3]):lswap3(1,3,0)
  81. else:
  82. if(d[1]<d[2]):lswap2(3,0)
  83. else:
  84. lswap2(1,2)
  85. lswap2(3,0)
  86.  
  87. x=list(['a', 'b', 'c', 'd'])
  88. sort4l(x)
  89. for t in permutations(x):
  90. d=list(t)
  91. print(d)
  92. sort4l(d)
  93. if (d != x):print(t,d)
  94.  
  95.  
Success #stdin #stdout 0.04s 9384KB
stdin
Standard input is empty
stdout
['a', 'b', 'c', 'd']
['a', 'b', 'd', 'c']
['a', 'c', 'b', 'd']
['a', 'c', 'd', 'b']
['a', 'd', 'b', 'c']
['a', 'd', 'c', 'b']
['b', 'a', 'c', 'd']
['b', 'a', 'd', 'c']
['b', 'c', 'a', 'd']
['b', 'c', 'd', 'a']
['b', 'd', 'a', 'c']
['b', 'd', 'c', 'a']
['c', 'a', 'b', 'd']
['c', 'a', 'd', 'b']
['c', 'b', 'a', 'd']
['c', 'b', 'd', 'a']
['c', 'd', 'a', 'b']
['c', 'd', 'b', 'a']
['d', 'a', 'b', 'c']
['d', 'a', 'c', 'b']
['d', 'b', 'a', 'c']
['d', 'b', 'c', 'a']
['d', 'c', 'a', 'b']
['d', 'c', 'b', 'a']