Twenty golfers wish to play in foursomes for 5 days. Is it possible for each golfer to play no more than once with any other golfer?
Find out for yourself.
This is known in mathematics as the Social Golfer Problem. Over Thanksgiving 2017, my dad posed a very similar problem: 28 students in discussion groups of size 4, rotated five times so that no two students are grouped together twice – with additional constraints restricting certain students from ever being grouped together. Puzzling over the problem together led us into the world of combinatorics.
It turns out the Social Golfer Problem (and the closely related Kirkman’s Schoolgirl Problem) are solved, but full generalizations of them are hard – even for computers. I went looking for an existing solution and couldn’t find one I was happy with. Dad assured me that it didn’t need to be perfect, just good enough for a teacher trying to organize a group. So I built my own:
Good-Enough Golfers is a near-solver for this class of scheduling problems. It attempts to schedule g x p players into g groups of size p for w weeks such that players meet a minimum number of times. Real solutions to this problem can be extremely slow, but GEG’s approximations are fast and often good enough for real-world purposes.
It’s also free and open-source.
I just concluded another full year with all of my work public on GitHub. 2017 was my eleventh full year as a software professional, and my third year at Code.org.
Continue reading “My work in 2017”
I just finished my tenth full year as a software professional, and I’m starting my third year with Code.org. One of the perks of this job is that all of my work is public on GitHub. So let’s put it under a microscope!
Continue reading “My work in 2016”
Did you know we had one of these? Neither did I. But apparently this is its eleventh year, and it’s as good a time as any to go learn something new about protecting your data online.
My favorite cybersecurity tip? If you don’t use a good password manager, you should. A password manager makes it relatively painless to use long, secure passwords. It also enables you to use a different password for every online account, mitigating the damage if one of your passwords is discovered. It’s also simply less stressful than trying five passwords every time you visit a website.
I’m partial to KeePassX, but LastPass and RoboForm are also popular. Any of them is better than continuing to use one password for all of your accounts.
You can find more resources at StaySafeOnline.org, or for this month’s theme, Stop-Think-Connect. They even have ways for faith-based organizations to get involved. Awesome!