You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,9 @@
2
2
The Arcane Algorithm Archive is a collaborative effort to create a guide for all important algorithms in all languages.
3
3
This goal is obviously too ambitious for a book of any size, but it is a great project to learn from and work on and will hopefully become an incredible resource for programmers in the future.
4
4
The book can be found here: https://www.algorithm-archive.org/.
5
-
The github repository can be found here: https://github.com/algorithm-archivists/algorithm-archive.
6
-
Most algorithms have been covered on the youtube channel LeiosOS: https://www.youtube.com/user/LeiosOS
7
-
and livecoded on Twitch: https://www.twitch.tv/simuleios.
5
+
The GitHub repository can be found here: https://github.com/algorithm-archivists/algorithm-archive.
6
+
Most algorithms have been covered on the YouTube channel LeiosOS: https://www.youtube.com/user/LeiosOS
7
+
and live coded on Twitch: https://www.twitch.tv/simuleios.
8
8
If you would like to communicate more directly, please feel free to go to our discord: https://discord.gg/Pr2E9S6.
Copy file name to clipboardExpand all lines: chapters/QI/QI.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -18,11 +18,11 @@ There are many places to start an introduction to quantum information theory, so
18
18
3.**Quantum computers in the wild:** Current experimental techniques to create a quantum computer and what makes them ill-suited as real quantum computers
19
19
4.**A survey of current quantum algorithms:** There are a number of algorithms that promise fantastic advantages when performed on quantum computers and should really shake up the industry when they are finally experimentally realized.
20
20
21
-
As a note, item 3 might seem out of place for a book on algorithms, and I would tend to agree; however, at this point there is a phenominal amount of research being done to realize the first truly quantum computer and there are a number of potential systems that could work for this purpose.
21
+
As a note, item 3 might seem out of place for a book on algorithms, and I would tend to agree; however, at this point there is a phenomenal amount of research being done to realize the first truly quantum computer and there are a number of potential systems that could work for this purpose.
22
22
These systems will change how we think about and interface with quantum computation in the future and it is important to discuss where the field might be heading and when we can expect quantum computers at home.
23
23
24
24
Now, there are not too many languages that can compile quantum code.
25
-
A while ago, we tried to make a quantum circuit compiler, which was modelled after the SPICE circuit simulator, but this was far from a computer language.
25
+
A while ago, we tried to make a quantum circuit compiler, which was modeled after the SPICE circuit simulator, but this was far from a computer language.
26
26
At this point in time, it is impossible to tell what quantum computing languages will look like when we finally have a truly quantum machine, so for the time being, we will not ask for community code for the chapters related to quantum information.
27
27
28
28
basically, it's hard to imagine how to would adequately implement Shor's algorithm in C.
Copy file name to clipboardExpand all lines: chapters/convolutions/convolutions.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -61,9 +61,9 @@ Now, let me tell you about a bit of black computational magic:
61
61
62
62
That is crazy!
63
63
It's also incredibly hard to explain, so let me do my best.
64
-
As described in the chapter on [Fourier Transforms](chapters/FFT/cooley_tukey.md), Fourier Tranforms allow programmers to move from real space to frequency space.
64
+
As described in the chapter on [Fourier Transforms](chapters/FFT/cooley_tukey.md), Fourier Transforms allow programmers to move from real space to frequency space.
65
65
When we transform a wave into frequency space, we see a single peak in frequency space related to the frequency of that wave.
66
-
No matter what function we send into a Fourier Transform, the frequency-space image can be interpreted as a seires of different waves with a specified frequency.
66
+
No matter what function we send into a Fourier Transform, the frequency-space image can be interpreted as a series of different waves with a specified frequency.
67
67
68
68
So here's the idea: if we take two functions $$f(x)$$ and $$g(x)$$ and move them to frequency space to be $$\hat f(\xi)$$ and $$\hat g(\xi)$$, we can then multiply those two functions and transform them back into a third function to blend the signals together.
69
69
In this way, we will have a third function that relates the frequency-space images of the two input functions.
Copy file name to clipboardExpand all lines: chapters/getting_started.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# My Introduction to Hobby Programming
2
2
3
-
Here's the thing. I love programming. I know it's fun, interactive, and addictive, but it's hard to see that when you are looking through a pair of spectacles that sees the world ever-so-slightly differently than mine. For that reason, I feel I should start with my own introduction to the world of computer science, with the hope of inspiring you to share your own story. Full disclosure: this story is a decade old and involved linux. In fact, the open source community was one of the main reasons I ever became interested in hobby programming to begin with. Regardless, let's start at the start.
3
+
Here's the thing. I love programming. I know it's fun, interactive, and addictive, but it's hard to see that when you are looking through a pair of spectacles that sees the world ever-so-slightly differently than mine. For that reason, I feel I should start with my own introduction to the world of computer science, with the hope of inspiring you to share your own story. Full disclosure: this story is a decade old and involved Linux. In fact, the open source community was one of the main reasons I ever became interested in hobby programming to begin with. Regardless, let's start at the start.
4
4
5
5
I don't know if you guys had a similar childhood to mine or not, but I found that no matter who I spoke to, there was one central theme in all of our lives -- something so fundamental to the way we communicated with each other that it was nearly impossible to have a discussion without bringing it up: **Video Games**.
6
6
@@ -12,11 +12,11 @@ Being the curious kid I was, I asked what I should do to avoid Vista and they sa
12
12
13
13
My friends could have just said, "It's the thing that operates your hardware. It brings up the UI elements and stuff you work with." Sure, it's not quite the whole story, but as a computer novice, it would have been just fine for me. That said, they took it a step further and said, "Nowadays, there are many operating systems to choose from, including Windows, Mac, and Linux." I may have been a complete novice, but I at least knew about Windows and Mac. Linux, though? What the heck was that?
14
14
15
-
Of course I asked about it, but this was early high school. My friends may have been smarter than I was, but there was a limit to their knowledge. Apparently, the only thing they knew about linux was that it was supposedly faster and couldn't catch viruses. That caught me.
15
+
Of course I asked about it, but this was early high school. My friends may have been smarter than I was, but there was a limit to their knowledge. Apparently, the only thing they knew about Linux was that it was supposedly faster and couldn't catch viruses. That caught me.
16
16
17
17
Remember how I said I couldn't get the virus software to work on my computer? Yeah. At this point, I was thinking, *What? A computer that couldn't catch viruses? No way! That's gotta be **leagues** easier to use than Windows!*
18
18
19
-
*Oh ho* I was... well... I was downright naive. I had no idea what I was doing. That night, I ran home, super excited to learn about linux and operating systems, and spent the entire night browsing the internet, trying to find whatever information was out there. At the time, my google-fu was weak and my internet was slow. The first thing I learned was that there were apparently different types of linuxes called "distributions." At that point, I probably searched "What is the best linux?" or something to that effect. Somehow, I managed to find [distrowatch](https://distrowatch.com/), which had a list of all the most popular distros on the side.
19
+
*Oh ho* I was... well... I was downright naive. I had no idea what I was doing. That night, I ran home, super excited to learn about Linux and operating systems, and spent the entire night browsing the internet, trying to find whatever information was out there. At the time, my google-fu was weak and my internet was slow. The first thing I learned was that there were apparently different types of linuxes called "distributions." At that point, I probably searched "What is the best Linux?" or something to that effect. Somehow, I managed to find [distrowatch](https://distrowatch.com/), which had a list of all the most popular distros on the side.
20
20
21
21
I don't remember the exact order, but I knew the key players were there: Ubuntu, Mint, Fedora, Debian, and Arch. Now, here's where my years of gaming experience came in. I personified each distribution as a class in a game world. Ubuntu was the easy to use axe-wielding warrior that would get the job done. Fedora was the Archer in the back with a feather in his cap and a quick quip for everything. Debian was the grandmotherly spellcaster just trying to keep everyone alive. Then there was Arch, the one who rushed into combat without any armor and uses only the environment as a weapon.
22
22
@@ -36,7 +36,7 @@ In my head, I knew what this meant. I needed to create my username, right? So I
36
36
37
37
**root**
38
38
39
-
Now, at the time, I didn't realize what I was doing. I didn't know that root was the god of my computer -- the user who decides all other user disputes. At the time, I thought it was an odd, quircky word chosen by the Arch developers in the same way they were talking about cheese graters before. I suppose that knowledge would come in time. At that moment, I was celebrating what might have been the most difficult thing I had done to that point in my life: typing in a 4 letter word.
39
+
Now, at the time, I didn't realize what I was doing. I didn't know that root was the god of my computer -- the user who decides all other user disputes. At the time, I thought it was an odd, quirky word chosen by the Arch developers in the same way they were talking about cheese graters before. I suppose that knowledge would come in time. At that moment, I was celebrating what might have been the most difficult thing I had done to that point in my life: typing in a 4 letter word.
Copy file name to clipboardExpand all lines: chapters/how_to_contribute.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -2,20 +2,20 @@
2
2
3
3
The *Algorithm Archive* is an effort to learn about and teach algorithms as a community.
4
4
As such, it requires a certain level of trust between community members.
5
-
For the most part, the collaboration can be done via github and gitbook, so it is important to understand the basics of [version control](principles_of_code/version_control.md).
5
+
For the most part, the collaboration can be done via GitHub and gitbook, so it is important to understand the basics of [version control](principles_of_code/version_control.md).
6
6
Ideally, all code provided by the community will be submitted via pull requests and discussed accordingly; however, I understand that many individuals are new to collaborative projects, so I will allow submissions by other means (comments, tweets, etc...).
7
7
As this project grows in size, it will be harder and harder to facilitate these submissions.
8
-
In addition, by submitting in any way other than pull requests, I cannot gaurantee I will be able to list you as a collaborator (though I will certainly do my best to update the `CONTRIBUTERS.md` file accordingly).
8
+
In addition, by submitting in any way other than pull requests, I cannot guarantee I will be able to list you as a collaborator (though I will certainly do my best to update the `CONTRIBUTORS.md` file accordingly).
9
9
10
10
At this point, I am trying to figure out the best way to balance community contributions and text.
11
11
Right now, I feel comfortable writing the text associated with each algorithm and asking for the community to write individual implementations.
12
12
In the future, I might allow other users to write algorithm chapters, but for now let's keep it simple: I'll do the writing, everyone else does the coding.
13
13
Now for some specifics on submissions:
14
14
15
15
1.**Style**: Follow standard style guidelines associated with your language of choice. For C / C++, please use Stroustrup style, with `auto` used rarely or not at all. We have had plenty of discussions about this, which can be found [here](https://github.com/algorithm-archivists/algorithm-archive/issues/18). I will leave the issue open for now in the case that other individuals have more to contribute there. Basically, your code should be readable and understandable to anyone -- especially those who are new to the language. In addition, remember that your code will be displayed in this book, so try to keep to around 80 columns and try to remove any visual clutter. In addition, keep variable names clean and understandable.
16
-
2.**Licensing**: All the code from this project will be under the MIT licence found in `LICENCE.md`; however, the text will be under a Creative Commons Attribution-NonCommercial 4.0 International License.
16
+
2.**Licensing**: All the code from this project will be under the MIT license found in `LICENSE.md`; however, the text will be under a Creative Commons Attribution-NonCommercial 4.0 International License.
17
17
3.**CONTRIBUTORS.md**: After contributing code, please echo your name to the end of `CONTRIBUTORS.md` with `echo name >> CONTRIBUTORS.md`, and also leave a comment on the top of the code you submitted with your name (or username) saying `// submitted by name`. This way everyone is held accountable and we know who to contact if we want more information.
18
-
4.**Building the Algorithm Archive**: If you want to build the Algorithm Archive on your own machine, install gitbook and use `gitbook serve` in the main directory (where `README.md` is). This will provide a local url to go to to view the archive in your browser of choice. Use this server to make sure your version of the Algorithm Archive works cleanly for the chapter you are updating!
18
+
4.**Building the Algorithm Archive**: If you want to build the Algorithm Archive on your own machine, install gitbook and use `gitbook serve` in the main directory (where `README.md` is). This will provide a local URL to go to to view the archive in your browser of choice. Use this server to make sure your version of the Algorithm Archive works cleanly for the chapter you are updating!
19
19
20
20
For this project, we allow submissions in every language.
21
21
To submit code, simply go to the code directory of whatever chapter you want and add a directory for your language of choice.
@@ -25,7 +25,7 @@ We need the following statements in the markdown file for these to work together
25
25
26
26
[import](codeblock.txt)
27
27
28
-
For this example, we are starting the theme-api `method` and importing lines 1-17 from a sample julia snippet from the code directory.
28
+
For this example, we are starting the theme-api `method` and importing lines 1-17 from a sample Julia snippet from the code directory.
29
29
Note that to standardize the language capitalization schemes, we ask that each language's `sample lang` is the file extension for their code, `cpp` for C++, `hs` for Haskell, etc...
30
30
This keeps the title in the theme-api consistent across different languages.
31
31
Also note that depending on the algorithm, there might be in-text code snippets that also need to be written.
0 commit comments