
F-PROT for DOS will display an expiration warning after a determined number of days. The authors of F-PROT have set their program to display this warning when (to the best of their estimates) a new version of F-PROT would be released. Thus, by knowing when the expiration warning will occur, you have a pretty good idea of when the next version will be available.
If you are looking for the latest version of F-PROT for DOS and updates to F-PROT signature files, go to my Computer Tips, Tricks and Tools page.
This page describes a Binary Search for F-PROT's expiration date, which is very much like finding a word in a dictionary by successively comparing the word you're looking for against those pages arranged in alphabetically order, and dividing the dictionary in halves accordingly until you arrive at the page that contains the word you're looking for.
For this experiment, you will need a calendar, a current copy of F-PROT, and your PC computer:
1) change your computer's current date to any date six months into the future (let's call this the "end date"); count the number of days from today's date to the end date, and write down this number.
2) run F-PROT, and observe that the expiration warning is displayed on your screen.
3) using your calendar, take half of the number of days you used in step 1; round down to the nearest whole number. This is your new pivot date (a guess); set your computer's date to this pivot date.
4) run F-PROT, and see if an expiration warning is produced;
4a) if you find an expiration warning, look for another pivot date by taking half of the number of days between the current and pivot dates.
4b) if you don't find an expiration warning, the next pivot date is half of the number of days between the pivot and end date.
5) Set your computer's date to the new pivot date you calculated in 4a or 4b. Repeat step 4 until you converge on a single non-divisible pivot date.
6) F-PROT will most likely be released on the day an expiration warning is first generated (this means that there is no warning generated the day before).
7) You are guaranteed a result in log(step 1 total number of days)/log(2) + 1 guesses.
8) Make sure you reset the computer's date to today's date at the end of this experiment.
Suppose you have a list of 60 numbers in ascending order. Joe Blow picks 10 as his secret number. You are to use the Binary Search Algorithm to figure out his secret number. The only hints he can give you is whether your pivot (guess) number is greater or smaller than his secret number.
Number of guesses to a guaranteed result: Roundup(log(60)/log(2)) + 1 = 7
Guess #1: 60 / 2 = 30.
Ask: Is 30 > secret number?
Reply: Yes. So new pivot is 30.
Guess #2: 30 / 2 = 15.
Ask: Is 15 > secret number?
Reply: Yes. So new pivot is 15.
Guess #3: 15 / 2 = 7.
Ask: Is 7 > secret number?
Reply: No. So pivot is 15 + 7 = 22
Guess #4: 22 / 2 = 11.
Ask: Is 11 > secret number?
Reply: Yes. So pivot is 11 + 7 = 18
Guess #5: 18 / 2 = 9.
Ask: Is 9 > secret number?
Reply: No. So pivot is 11 + 9 = 20
Guess #6: 20 / 2 = 10.
At this point, 10 has to be the secret number.
You are visitor number