This is a classic example of poorly structured points of customisation.
For example, when you have:
class Base
{
virtual void Foo();
// pfc5.cpp v2 (c) T.Frogley 2002 | |
// Programming Fun Challenge 5: Polygon Packing | |
// http://www.kuro5hin.org/story/2002/5/24/171054/160 | |
// | |
// My solution does not provide an optimal packing, | |
// instead it produces a reasonable packing, | |
// and very good throughput, scaling very well, | |
// packing thousands of polys in sub-minute times, | |
// rather than hundreds in hours. | |
// |
-- A five digit number minus a four digit number equals 33333, | |
-- where the nine contributing digits are 1-9, each used only once. | |
import Data.List | |
slice start end = take (end - start + 1) . drop start | |
sliced :: String -> [Int] | |
sliced s = [read $ slice 0 4 s, read $ slice 5 9 s] |