Sorry, to bring this post up, but i have to set something straight here in case someone does find this thread through the search engine. The idea of simple deleting the packs which doesn't contain at least one rare, epic or legendary is not completely right without adjustments. The Problem is that you don't cut random samples, but specific ones. Therefore, you Change the probabilites of each rarities. I still use this Approach, but i had to adjust the probabilies in a way, so that after the cutting of those specific samples the rarities occur with the correct probabilities again.
By the way: The Programm does calculate the expected amount of packs needed to complete a set and it is quite accurate i would say. I had planned some extensions, but i decided to not continue any more (at least for now). However, if someone is interested in the Code, i would gladly share it. But i am not a pro, so don't expect to much ;)