This repository is an archive for my personal little projects. Too little to get each one a dedicated repo. These programs are mostly implementation of strange data structures or algorithms to beat some real-world games. I usually implement these in a day or two, just for fun. For this reason, they may have some serious bugs. If you happen to find one, please let me know.
I hope you'll find something useful :)
- 36_cards is a little Python script that calculates the probability of winning a card solitaire game called "36 cards".
- merge is a minimal "merge" game like Little Alchemy.
- orologio is a little Python script that calculates the probability of winning a card solitaire game called "Orologio" (the clock).
- paroliere is a C implementation of a brute-force algorithm that finds all possible italian words in a game of "Paroliere" (it's very similar to Ruzzle).
- secret_code is a C implementation of an algorithm that wins the game "Secret Code" against you (the game is similar to Mastermind).
- word_guesser is a simple C game that guesses your word through binary search.
- buckets is a comparison between different algorithms solving a problem which I think is NP-hard but I cannot find in the literature
- codegen is a personal java implementation of a simulated annealing algorithm trying to find the optimal code which solves a given problem
- compression is a tentative java implementation of a simple compression algorithm
- diet is a personal java implementation of the simplex algorithm applied to solve the "diet problem"
- mergesort is a performance comparison between 5 different C implementations of the Merge-Sort algorithm.
- min is an experimental non-deterministic minimization algorithm.
- necklace is a little Python script that compares some algorithms which solve the necklace problem.
- poly is a java implementation of Newton's method to find roots of a polynomial in the complex plane
- quad_tree is a performance comparison between serial and parallel implementations of the naive algorithm and a quad-tree when counting the collisions between some 2D circles.
- queue contains my personal implementation of Circular Queue with Fixed Size (CQFS, for short) with tests and a little benchmark.
- trie is a C implementation of the "Trie" data structure.
- xor contains the 128, 256 and 512-bit implementations of the simple XOR hash algorithm.
- aliquot is a little java program to compute the Aliquot sequence.
- bandwidth is a personal C/C++ implementation of a memory bandwidth benchmark to be compared to the de-facto standard: STREAM.
- chem_speller is a python implementation of the algorithm to spell words only with atomic symbols which doesn't cheat unlike the original.
- crawler is a little Python script that randomly explores all web pages, starting from one link and looking for new URLs inside the HTML code received.
- magicsquare is a parallel C+OpenMP program that searches non-trivial magic squares.
- matmul is a little benchmark to compare the speed of a naive matrix multiplication between: C++, vectorized C++ (with google highway), Java and vectorized Java (with the Vector API)
- mincorr is a little C program that finds the array with minimum correlation with a given array.
- mulper is a little java program to find the smallest numbers with the highest multiplicative persistence.