historical-permutations

historical-permutations (2019)

javascript

github repository

npm package

A JavaScript library of historical permutation algorithms from 1956 to the present day.

I originally started collecting these algorithms together as I was doing some research on early permutation algorithms as part of an ongoing project about the "Permutation Poems" of the poet and artist Brion Gysin. However, I soon found that many of these algorithms were in hard-to-find papers and little documented, often because they were superceded by more efficient algorithms only years later.

I thought that this library might be of interest to those looking to learn about permutations or the history of early computing - especially those who are trying to find out more about the technology used to write early computational poetry. Due to the focus of my own research, nearly all of these algorithms are from the period 1956-65. I have tried to collect as many of the original papers as possible, and these now reside in the papers folder of this repository - this addition does make this repo very large, however, these pdfs are only included in the git repository, and not in the package available on npm.

Along with the algorithms themselves, now translated from ALGOL into JavaScript, there are a series of utilities, designed to make the use of the algorithms easier.

Pocknee-Gysin-Sommerville Algorithms

As part of my research, I wrote a collection of algorithms inspired by Brion Gysin and Ian Sommerville's pre-1965 Permutation Poems and other algorithms from this period.

I imagined algorithms that would have been possible using contemporaneous techniques found in other algorithms in this collection and the technical limitations of the period and that would create poems similar to Gysin's work.

The result is a collection of 4 algorithms that can each operate using two "rotation directions", affecting the way in which elements in an array are moved.

Algorithms

datenametype
1400Panditalexicographic
1956Tompkins-PaigeTompkins-Paige
1960LehmerConstant Difference Method
1960HallHall
1961Coveyou-Sullivan (ACM71: PERMUTATION)Coveyou-Sullivan
1961Wells (ACM115)Transposition Method
1962Peck-Schrack (ACM86: PERMUTE)Tompkins-Paige w/ leftwise rotation
1962Schrack-Shimrat (ACM102: PERMULEX)lexicographic
1962/63Steinhaus-Trotter-Johnson (ACM115: PERM)Steinhaus-Trotter-Johnson
1962/63Steinhaus-Trotter-Johnson (ACM115: PERM)Steinhaus-Trotter-Johnson (loopless)
1962/63Steinhaus-Trotter-Johnson (ACM115: PERM)Steinhaus-Trotter-Johnson (Even's speedup )
1963HeapHeap
1967LangdonLangdon
1968Ord-Smith (ACM323: BESTLEX)reverse lexicographic
2001Myrvold-Ruskeyremainder order
2018Superpermutationssuperpermutations
2019Pocknee-Gysin-Sommerville8 different orderings