2 edited tags
| link
    Tweeted twitter.com/#!/StackCodeGolf/status/67059661018378240
1
source | link

Rational Counting Function

Create a function that takes a natural number (starting from 0 inclusive), and returns a pair of positive integers, which are the numerator and denominator respectively. Use the diagonal traversal. Previous-counted numbers must be skipped. (you can memorize the set of skipped values)

Diagram:

enter image description here

Red are skipped values

Values:

  • f(0) = 1, 1
  • f(1) = 2, 1
  • f(2) = 1, 2
  • f(3) = 1, 3
  • f(4) = 3, 1 (notice the skip)
  • f(5) = 4, 1
  • f(6) = 3, 2
  • f(7) = 2, 3
  • f(8) = 1, 4
  • f(9) = 1, 5
  • f(10) = 5, 1 (notice the skip)

You may use the Rational data structure and their operations if they exist. Shortest code wins.