diff --git a/CHANGELOG.md b/CHANGELOG.md
index a772b6e..189162f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -84,3 +84,7 @@
* Improve flow in README
* Cleanup code and documentation a bit
+
+## X.X.X.X -- XXXX.XX.XX
+
+* Adjust README formatting
diff --git a/README.md b/README.md
index e464ee4..108c86e 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ This project started as an exploration of what a sorting algorithm that
prioritizes robustness might look like. As such it also describes and provides
implementations of Robustsort, a group of Tensort variants designed for
robustness in conditions described in David H. Ackley's
-[Beyond Efficiency](https://www.cs.unm.edu/~ackley/be-201301131528.pdf).
+[Beyond Efficiency](https://web.archive.org/web/20240809143400/https://www.cs.unm.edu/~ackley/be-201301131528.pdf).
Simply put, Tensort takes an input list, transforms the list into a
multi-dimensional tensor field, then transforms that tensor field back into a
@@ -69,12 +69,13 @@ we wish to do on the elements.
- [Development Environment](#development-environment)
- [Contact](#contact)
- [Thank you](#thank-you)
+- [Hype](#hype)
## Introduction
### Inspiration
- - [Beyond Efficiency](https://www.cs.unm.edu/~ackley/be-201301131528.pdf) by
+ - [Beyond Efficiency](https://web.archive.org/web/20240809143400/https://www.cs.unm.edu/~ackley/be-201301131528.pdf) by
[David H. Ackley](https://livingcomputation.com/)
- [Beyond Efficiency by Dave Ackley](https://futureofcoding.org/episodes/070)
@@ -96,7 +97,7 @@ And I thought, "Why not?"
Being adaptable to different scenarios, a tunable sorting algorithm has many
potential applications. This README will focus on robustness in sorting.
-[Ackley](https://www.cs.unm.edu/~ackley/be-201301131528.pdf) has compelling
+[Ackley](https://web.archive.org/web/20240809143400/https://www.cs.unm.edu/~ackley/be-201301131528.pdf) has compelling
things to say about why prioritizing robustness is important and useful. I'd
highly recommend reading that paper!
@@ -142,7 +143,7 @@ list), a 2-degree tensor is a matrix, and so on.
Each dimension of a tensor has a rank, which can be thought of as the length of
that dimension. A tensor's shape can be described by another tensor that
-denotes the ranks of each of its dimensions. For example. [1,2,3] is an
+denotes the ranks of each of its dimensions. For example, [1,2,3] is an
instance of a 1-degree tensor. Its single dimension is 3 elements long, so it
has a rank 3. Thus its shape is [3].
@@ -170,7 +171,9 @@ falter without:
-
+
Source
@@ -198,7 +201,7 @@ Bubblesort and Mergesort, and
Quicksort.
It also assumes you've read
-[Beyond Efficiency](https://www.cs.unm.edu/~ackley/be-201301131528.pdf) by
+[Beyond Efficiency](https://web.archive.org/web/20240809143400/https://www.cs.unm.edu/~ackley/be-201301131528.pdf) by
David H. Ackley. Go read it! It's short!
Please note that we will discuss a few algorithms that I've either made up or
@@ -208,25 +211,36 @@ really only had a rudimentary understanding of Insertionsort, Quicksort,
Mergesort, Bubblesort and Bogosort, so it's entirely possible that I've
reinvented a few things that already exist.
-It may be helpful to note that this project was originally undertaken in an
-endeavor to come up with a solution naively, for the exercise, before
-researching other algorithms built to tackle the same problem. I did very
-briefly check out Ackley's [Demon Horde
-Sort](https://www.youtube.com/watch?v=helScS3coAE&t=260s), but only enough
-(about 5 seconds of that video) to verify that it is different from this
-algorithm. I've been purposefully avoiding learning much about Demon
-Horde Sort before publishing v1.0.0.0 of this package, but Ackley is way
-smarter than me so if you do actually want a real, professional approach to
-robust sorting, Demon Horde Sort is likely the place to look.
-
The algorithms used here that I have made up or renamed are, in order of
introduction, Tensort, Robustsort, Rotationsort, Permutationsort, and
Magicsort.
+-------
+
+
+ It may be helpful to note that this project was originally undertaken in an
+ endeavor to come up with a solution naively, for the exercise, before
+ researching other algorithms built to tackle the same problem. Another
+ notable example of a robust sorting algotithm is Ackley's
+
+ Demon Horde Sort
+ ,
+ which I purposefully avoiding learning much about before publishing v1.0.0.0
+ of this package. Demon Horde Sort is more truly robust than Tensort, being
+ resiliant against far more types of unexpected conditions than just a wonky
+ comparator. It's really cool and a lot closer to what I expect computinig to
+ look like in the future - I encourage you to check out that video when you're
+ done here!
+
+
+-------
+
I will also be joined by the spirit of Sir Michael Caine, who is here for two
reasons. One is to keep an eye on me and make sure I don't go too overboard.
More importantly, he's here as a bit of insurance to make sure you've read
-[Beyond Efficiency](https://www.cs.unm.edu/~ackley/be-201301131528.pdf). You
+[Beyond Efficiency](https://web.archive.org/web/20240809143400/https://www.cs.unm.edu/~ackley/be-201301131528.pdf). You
can think of him as my version of the M&M's on Van Halen's concert
rider ([the most famously robust rider in rock
history](https://en.wikipedia.org/wiki/Van_Halen#Contract_riders)). If you
@@ -240,7 +254,9 @@ Alright, let's get started! Ready, Sir Michael?
@@ -267,34 +283,34 @@ fear not!
#### Structure
- - Bit <- Element of the list to be sorted
+ Bit <- Element of the list to be sorted
- - Byte <- List of Bits
+ Byte <- List of Bits
- - Bytesize <- Maximum length of a Byte
+ Bytesize <- Maximum length of a Byte
- - Tensor <- Tuple of a Register list and a Memory list
+ Tensor <- Tuple of a Register list and a Memory list
- - Memory <- List of Bytes or other Tensors contained in the current Tensor
+ Memory <- List of Bytes or other Tensors contained in the current Tensor
- - Register <- List of Records, each Record referencing one Byte or Tensor
+ Register <- List of Records, each Record referencing one Byte or Tensor
in Memory
- - Record <- Tuple of the Address and a copy of the TopBit of the referenced
+ Record <- Tuple of the Address and a copy of the TopBit of the referenced
Byte or Tensor
- - Address <- Pointer to a Byte or Tensor in Memory
+ Address <- Pointer to a Byte or Tensor in Memory
- - TopBit <- Value of the Bit at the top of the stack in a Byte or Tensor
+ TopBit <- Value of the Bit at the top of the stack in a Byte or Tensor
- - TensorStack <- A top-level Tensor along with all the Bits, Bytes, and
+ TensorStack <- A top-level Tensor along with all the Bits, Bytes, and
Tensors contained within it. Structurally equivalent to a Tensor
- - TopRegister <- List of Records that is built after all Tensors are built.
+ TopRegister <- List of Records that is built after all Tensors are built.
Each Record references one TensorStack. Structurally equivalent to a
Register
- - SubAlgorithm <- The sorting sub-algorithm used at various stages
+ SubAlgorithm <- The sorting sub-algorithm used at various stages
In Tensort, the smallest unit of information is a Bit. Each Bit stores one
element of the list to be sorted. A group of Bits is known as a Byte.
@@ -517,7 +533,9 @@ more robustness!
-
+
Source
@@ -707,7 +725,9 @@ result, [I'd love to hear about it](#contact)!
width="400"
alt="Michael Caine rushing past the Batmobile">
+ href="https://www.imdb.com/name/nm0000323/mediaviewer/rm4040654848/"
+ rel="noopener noreferrer"
+ target="_blank">
Source
@@ -776,7 +796,7 @@ permutations of [1,2,3] using a faulty comparator that gives a random result
In these cases, 86% of the time the Top Bit was in the correct position.
The least likely outcome is a reverse-sorted Byte and the other possible
incorrect outcomes are in approximately even distribution with each other.
-
+https://hachyderm.io/@kaBeech
#### Supersort Adjudication
Supposing that our results from Bubblesort and Rotationsort disagree and we now
@@ -834,7 +854,9 @@ adding recursion.
cage is in a larger structure of cages. The camera is viewing
from an adjacent cage and can see into multiple subsequent cages,
giving the appearance of a recursive picture-in-picture effect">
-
+
Source
@@ -884,7 +906,9 @@ that's so good it's robust against logic itself...
@@ -997,7 +1021,8 @@ considerations to keep in mind:
## Comparing it all
Now let's take a look at how everything compares. Here is a graph showing the
-benchmarking results for average error score for our algorithms:
+benchmarking results for average error score (over 1000 runs) for our
+algorithms:
@@ -1052,7 +1077,9 @@ Michael?
@@ -1120,8 +1147,9 @@ Note that these instructions don't make the assumptions listed above
Questions and feedback are welcome!
-The easiest way to contact me is usually via
+The easiest way to contact me currently is likely via
[LinkedIn](https://www.linkedin.com/in/kyle-beechly), or you can try
+[Mastodon](https://hachyderm.io/@kaBeech) or
[email](mailto:tensort@kabeech.com).
## Thank you!
@@ -1146,3 +1174,7 @@ I'd like to send a special thank you to the following people:
- Countless family, friends, acquaintances, and strangers who've tolerated me
blathering on about sorting algorithms over the past few months 💙
+
+## Hype
+
+ - Dave Ackley read my paper!! And had [this](https://hachyderm.io/@livcomp/113016513691522706) to say about it: "Super great stuff! kabeech dives into iid errors in comparison sorting, ropes it, pulls it down, and hogties it six ways to Sunday."