Ranking Solution for Hash Code 2022

Vincenzo Palazzo
3 min readJan 15, 2022

In this short article, I will describe my solution for the practice round of Hash Code 2022, written in Dart, and with a particular architecture solution.

I’m describing the solution in the article because I would like to receive feedback if anyone wants to share and improve the solution.

We can discuss any type of problem and solution regarding the google competition on the G-challenges repository under the discussion.

In addition, any type of PR is welcome, and if someone is interesting to know how I’m designing this repository you can write me on Twitter or post your solution with my architecture with the hash #gchallenges.

One Pizza Hash Code 2022 solution

Let Jump to our solution, and basically, my last solution written in dart is available with the following pull request.

The algorithm tries to calculate the score of a user in terms of goodness. In particular, a user is good for the Pizzeria if and only if the like ingredients are calculated with the formula like_rank = user_like_ingredient / tot_like_ingredient and how a user it is bad for the pizzeria with the dislike_rank = -(user_dislike_ingredient / tot_dislike_ingredient) + 1.

After that, we calculate the total rank with the following formula

rank_user = like_rank + dislike_rank

Where the rank_user should be a value between [0 and 2], when we have the following tank we sort the list of users by rank in decreasing order and we start to check if the user can be a good use for the pizzeria.

In this case, we have two situations, described as follows:

  • The Client is a good candidate for the pizza, in this case, add all the ingredients to two global lists for the Pizza, one for the like ingredient and the other one for the dislike ingredient.
  • The Client is not a good candidate for the pizza, and in this case, that and ingredient that like to the user it is already inserted inside the dislike list.

The complexity time of the algorithm is O(Clients * dislike_ingredients) and the following is the score given by the google scoring function

Conclusion

In conclusion, I create this medium post not to say that my solution is good, but only to have a chat with other people that are involved in solving this problem.

I found really difficult to find someone that is doing the same problem around me. However, thanks to StarkPrince for a great talk on Reddit that give me some good ideas for implementing this ranking strategy.

If you like this post and my solution please consider supporting me by following on Twitter and Github.

Ah don’t forget to start also the repository G-challenges

--

--

Vincenzo Palazzo

I'm an Open Source software developer, and in my free time, I'm a master's student. My main focus is to build some tools useful for other developers.