problem-specifications icon indicating copy to clipboard operation
problem-specifications copied to clipboard

Exercise Idea: Kafka Printer

Open sshine opened this issue 5 years ago • 14 comments

This exercise idea is based on a story from my current work place: My boss'es Ubuntu had a bug that made his printer, when asked to print N copies of something, instead print copies. So for our Thursday status meeting, he'd hope that the number of people who show up, for whom he would bring a copy of his status report, was targetable with as few print requests as possible.

For example, if 13 people would show up to the meeting, he would first ask the printer of 3 copies (yielding 9 copies), and then 2 copies (yielding 4 copies), with a final result of 3² + 2² = 13 copies. For some numbers of employees, this was simply not possible with two print jobs, and he'd need to consult the printer a third time.

The exercise is to write a function that computes the groan factor, being the minimal number of print jobs it takes to print N copies of a status report when the printer gives you back copies.

Examples:

  • It takes 1 print job to print 1 copy because 1² = 1.
  • It takes 2 print jobs to print 5 copies: 2² + 1² = 5.
  • It takes 3 print jobs to print 11 copies: 3² + 1² + 1² = 11.

The suggested exercise name underlines the kafkaesque hope that a specific number of employees N show up on Thursdays such that ∃ a, b ∈ ℕ₀: a² + b² = N for optimal working conditions.

sshine avatar Aug 15 '19 13:08 sshine