title: Household chores scheduling algorithm
body: <h2>Backstory</h2>
  
  <p>So here's the thing. I live in the household of three and the eldest of us has grown tired of doing all the household chores by herself. We have tried making different schedules for tasks but there were <strong>always</strong> problems because either one of us was not at home and chores were left undone or someone felt that they were doing more work than others leading to resentment and unwillingness to complete a chore.</p>
  
  <h2>Problem</h2>
  
  <p>Humans err, but computer programs are infallible, right? The idea is that a computer program could be used to fairly distribute the chores to be done so that no one can feel like he or she is doing more work. I am trying to come up with an algorithm that would distribute the chores conforming to these criteria:</p>
  
  <ul>
  <li>It should evenly distribute the chores in the long term with probability of roughly 1/3. </li>
  <li>It should return an ordered list of people so if the first one is unavailable, the second can complete it.</li>
  <li>It should avoid scheduling multiple chores per person on a same day.</li>
  <li>It should avoid scheduling the same chore to the same person for multiple consecutive times.</li>
  <li>It should be deviation-tolerant. If chore was not done by the scheduled person, it should still remain fair provided that the actual person who did the chore was fed back.</li>
  <li>It should work with different chores with different frequencies (you need to do the dishes every day but only clean the bathroom once a week, ...)</li>
  </ul>
  
  <p>My question is: <strong>What would be the best/coolest/fairest way to implement this algorithm?</strong>
  (ridiculously oversophisitcated solutions are appreciated :D)</p>
  
  <hr>
  
  <h2>What have I tried?</h2>
  
  <p>I figured a simple way to implement such an algorithm would be to define a cost table for different criteria and then just use the weighted random numbers to select the person but I think this will not be fair in the long term (it really has to limit towards 1/3 per person or it won't be accepted :)).</p>