moserrya / Bee-Breeding

This is a constant time solution to a shortest path problem that originally appeared in the ACM Programming Contest World Finals

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This challenge originated with the 1999 ACM Programming Contest World Finals. The core of the problem is this: Take a honeycomb, with one cell arbitrarily labeled 1 with the surrounding cells labeled clockwise in the following fashion:

      __    __    __    __       
     __\ /__\ /__\  /__\  /__    
 __/  \__/  \__/53\__/  \__/  \__
/  \__/  \__/52\__/54\__/  \__/  \
\__/  \__/51\__/31\__/55\__/  \__/
/  \__/50\__/30\__/32\__/56\__/  \
\__/49\__/29\__/15\__/33\__/57\__/
/  \__/28\__/14\__/16\__/34\__/  \
\__/48\__/13\__/ 5\__/17\__/58\__/
/  \__/27\__/ 4\__/ 6\__/35\__/  \
\__/47\__/12\__/ 1\__/18\__/59\__/
/  \__/26\__/ 3\__/ 7\__/36\__/  \
\__/46\__/11\__/ 2\__/19\__/60\__/
/  \__/25\__/10\__/ 8\__/37\__/  \
\__/45\__/24\__/ 9\__/20\__/61\__/
/  \__/44\__/23\__/21\__/38\__/  \
\__/70\__/43\__/22\__/39\__/62\__/
/  \__/69\__/42\__/40\__/63\__/  \
\__/  \__/68\__/41\__/64\__/  \__/
/  \__/  \__/67\__/65\__/  \__/  \
\__/  \__/  \__/66\__/  \__/  \__/
/__\  /__\  /__\__/__\  /__\   

Design a program that finds the shortest distance between any two cells. For example, the distance between cells 19 and 30 is 5.

The time complexity of this solution is O(1), assuming n is the number of cells.

To try it out:

Hive.len_shortest_path(cell1, cell2)

hive_spec.rb includes complete test coverage and shows how to use all of the methods.

About

This is a constant time solution to a shortest path problem that originally appeared in the ACM Programming Contest World Finals


Languages

Language:Ruby 100.0%