By Ulysse Gerkens from 19
Documentation in the related repo. Explained in this article.
By Lisamarie Treser from Forty2
Min operations: 3590, average: 3680
This algorithm combines the longest increasing subsequence (lis) in its ideal length (bruteforced) with the divider sort/bucket sort (depending on which one is more efficient), and the turk sort with some post-optimization and practical bruteforce recycling.
Thats essentially it but for anyone whos interested, here are some details of how it works :)
Thanks for reading! If you have any questions regarding the push_swap, dont hesitate to ask me on slack @ltreser, im happy to help anyone who is stuck or wants to discuss optimization :)
By Matthew Liew from Kuala Lumpur
This algorithm is a divide-and-conquer and greedy algorithm. Submitted back in Aug 2022.
It first separates elements into chunks and sorts elements back in a smart way. Also has post-optimization.
By Jonas Voisard from Lausanne
Initial state
[B] [ A ]
┋ 88 41 52 20 13 65 33 71
value_as_index()
┋ 7 , 3 , 4 , 1 , 0 , 5 , 2 , 6
◦───────────────┐ split_a(8)
┋ 7 , 3 , 4 , 1 , 0 , 5 , 2 , 6
◦───────┐ split_a(4)
3 , 1 , 0 , 2 ┋ 6 , 7 , 4 , 5
◦ split_a(2) ok
3 , 1 , 0 , 2 , 4 , 5 ┋ 6 , 7
┌───────◦ split_b(2)
3 , 1 , 0 , 2 , 4 , 5 ┋ 6 , 7
◦ split_a(2) ok
3 , 1 , 0 , 2 ┋ 4 , 5 , 6 , 7
┌───────◦ split_b(2)
0 , 1 ┋ 3 , 2 , 4 , 5 , 6 , 7
◦ split_a(2)
0 , 1 ┋ 2 , 3 , 4 , 5 , 6 , 7
┌───────◦ split_b(2)
0 , 1 ┋ 2 , 3 , 4 , 5 , 6 , 7
◦ split_a(2) ok
┋ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7
Done
By Benjamin William Golding from Lausanne
Sorts numbers 'innit?
Divide and conquer with stack-edge weighted groupings in a first step, followed by a minimum-actions based insertion in the second step.
Much more optimisations are possible.
Hard-coded solutions for small stacks are ugly, I'm so sorry.
By Jonas Voisard from Lausanne
Objectif : Trouver la médiane des valeurs dans la pile A. Action : Transférer les éléments de la pile A à la pile B. Les éléments plus grands que la médiane sont placés au-dessus de la pile B, tandis que ceux plus petits sont placés en dessous.
Objectif : Organiser plus finement la pile B pour faciliter le tri final. Action : Continuer à déplacer les éléments de la pile A vers la pile B. Cette étape assure que les éléments plus grands que la médiane restent au-dessus dans la pile B et les plus petits en dessous.
Objectif : Tri final et optimisation du placement des éléments. Action : Ramener tous les éléments de la pile B vers la pile A. À chaque transfert, l'algorithme évalue la méthode la plus efficace pour insérer l'élément dans la pile A, en minimisant le nombre d'opérations nécessaires.
By Endrit Ahmeti from Lausanne
turkish airlines arlgoritm turkia Çok Güzel
By Anouar Kabbaj from Lausanne
My first try combining bubble sort and radsort