Interesting mini algorithm and data structure projects ideas that can do the wow effect? Some on my todo and have done lists:

- Hash map, hash table and hash set in C

- Visualize path finding algorithms like A*, Djikstra, Bellman Ford, etc.

- Encryption algorithms like DES, AES, Blowfish, twofish, etc.

- Efficient webcrawler in java

- Efficient chess engine with bitboard

- Wikipedia article crawler

- Convert any photo/video in an Ascii formatted photo/video

- Floke simulation with extern enviroment

- An Identicon generator

I would love to hear more ideas of you guys

  • 2
  • 1
  • 6
    I got one that took me quite a while but was totally worth it: acceleration data structures for raytracing and/or physics engines (quadtrees in 2d; BVHs, k-d trees etc in 3D, etc)
  • 6
    Also, making a mini search engine (it's really interesting how they work at scale, not trivial at all).
  • 1
    Convert RGB to Grayscale use JavaScript or python.
  • 0
    Most of those functions can be achieved easily using gdk, libsoup, gxml and maybe glib-json. It would be funny to do everything with pure C: it would be challenging.
  • 2
    @iamavalos I would be more impressed if people could achieve it in plain C
  • 0
    @AI-Overlord People often prefers JavaScript or Python (including me, most of the times, and I say I don't like Python), because C/C++ seems vert difficult, and yes, it is, but that makes it interesting.
  • 0
    @AI-Overlord It's really possible actually. That's something that gdk.h does. I have made HTTP clients using libsoup, and it's very easy compared with using system libraries or libcurl. EDIT. Sorry, I was talking about glib instead of gdk, ha, ha.
  • 1
    I should really take a look at libsoup. Sounds awesome
  • 0
    Some more ideas:

    - Compressing algorithms like Huffman coding, Run-length encoding

    - Judy array (That shit is scary)

    - Chinese remainder theorem (An interesting topic from discrete maths)

    - Multi-threaded matrix multiplication

    - Visualize red-black-tree with step for step explaination
  • 0
    @RememberMe they're called octrees in 3D
  • 2
    All of those have been there in plain C first... Why do people always think anything of *that* was actually new?

    Example: The Babylon 5 series (1993 - 1998) was rendered using Lightwave 3D on Amiga computers.
    The first C++ IDE for Amiga was Storm C++, published 1996.

    As for the basic algorithms, the book "Mastering Algorithms with C" (1999) has all the "Useful Techniques from Sorting to Encryption" 😉
    (also a very valuable read for C++ programmers!)
  • 0
    @tokumei you're right in that the generalization of a quadtree to 3D is called an octree and that it would work for this too (hence the "etc."), but it's not the only used spatial acceleration data structure for 3D. I don't like the messy 8-way branching of an octree so I used a k-d tree instead, which is a binary tree (in fact it's a special case of a BSP tree, I think).

    Also, BVHs work on object geometry instead of the space so they're kinda different from how spatial methods like octrees and kd trees work.
  • 0
    Aalib and libcaca are interesting projects to delve into for image to ascii mapping. I once wrote one for html5 canvas. Played “ninja pizza cats” cartoon intro quite well.

    I’d like to see a isometric/3D graph of a neural network. And how it moves when you train it. Possibly with the data acting as water, raining down on the 3D graph and pooling in the crevices. And value lines showing the weights of those pools. (they work more like that then neurons...could visualize better neural network algorithms, like capsule and deep neural nets)
  • 0
    @tamusjroyce There is a Doom (or Quake?) engine that displays on a console via ASCII art. 😊
  • 1
    Please do the encryption stuff only for learning about it and NEVER use it somewhere in production! The probability of you introducing a security-breaking bug is way too high.
Your Job Suck?
Get a Better Job
Add Comment