I’ve found this interview question at GeeksForGeeks and decided to actually code it in C++. The program currently prints the “value” of the horses (which is inaccessible by the coder so they can’t just look up who is number 1) and then proceeds to sort them and find the position of numbers 1,2 and 3 in a 5x5 matrix with the solution being a minimum of 7 races.

Here’s the Github repo: https://github.com/Shroomerian/HorseRacing

  • chief_x86@beehaw.org
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    My personal preference is to leave comments where it’s not directly clear what the code does. Using “good” variable & function names can make the code usually somewhat self-documenting, but that’s not always enough.

    I didn’t know exactly how to create a random matrix where each number was unique using random, so I just added each previous number into a vector and checked if that number already exists there

    Yeah I understood why you used that approach, and I’m not a c++ expert myself, just wanted to point out some other options.

    I’d rather them being in a class that they can’t even access (protected constructor)

    It makes no difference visibility-wise if you have a variable that is local to a function vs a private member of a class that’s just used by said function.

    Also, I didn’t use sets, because I remember doing a problem in LeetCode and when I used them there the Memory part of the submission was so bad that it essentially said that it only beats 0.5%

    Huh, that sounds odd. Never done anything with LeetCode, but would be interested into seeing what was going on there. If you want to use sets, check whether you need ordering (most likely you don’t) and go with std::unordered_map.

    although you might think that might be a waste of time on such a problem

    Absolutely not. I see lots of value of optimizing and cleaning up code, there is so much to learn which will help you write better code in the future. I have a bunch of programming projects that I never fully finished and you could also call them a waste of time - who would play with my gameboy emulator without gui etc? No one besides me :) But it was more about the journey and learning things. So go for it and code things you find interesting, that’s a good way to stay motivated.

    I’m trying to learn programming, and it’s more of a hobby for now since I’m still not in University yet, although this year might be if they accept me (still waiting for admission results)

    Good luck with admissions. Putting effort into it in your spare time and as a hobby is great and shows dedication, exposing your code to “the internet” and asking others for feedback is also a great way to grow - way to go!

    • ShroomerOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Thank you. Also about point number 1, I realized that the rand() function is actually part of <cstdlib> and not <random> so it turns out I included it for nothing.