(re-submit of an idea from last round and the one before that because 3rd time's the charm?)
Chain (or belt) drive system
I propose a variation on this challenge by Ell over on PCG - minus the golfing requirement, of course. (Disclosure: I've already done this challenge in JavaScript)
To quote the original:
Your program will be given a list of sprockets, specified as (x, y, radius)
triplets. The resulting chain drive system is comprised of these sprockets, connected together by a closed taut chain passing over each of them, in order. [...]
For example, given the input
(0, 0, 16), (100, 0, 16), (100, 100, 12), (50, 50, 24), (0, 100, 12)
the output should look something like
(Please do check out the original challenge in its entirety, as it includes plentiful examples of input and output, and goes into a lot more detail, all of which Ell explains better than I can hope to do here.)
The original challenge is to generate a fully animated chain drive system, but that's quite a mouthful, so I propose that it can be solved to different degrees:
Analysis without visual output (for example some or all of: calculating the total chain length, whether the chain crosses itself, the rotational offset from one sprocket to the next that's necessary for the chain to mesh, time taken for a link in the chain to make one full circuit, etc.)
Simplified, static visualization showing the spatial layout and chain path
Full-on animation, as per the original challenge
Interactive visualization (animated or not), e.g. with customizable settings or even click and drag sprockets
And the chain doesn't need to be a chain nor do the sprockets need to be sprockets; it could just be a belt drive system, i.e. plain circles and lines. This would add a lot of flexibility as things won't need to mesh (and radii and placements won't be constrained), but you'd still be calculating tangent points etc.. Animation wouldn't be as fun, but one could add indicators to the wheels and belt to show the movement.
Or one could go the other way, and have the chain be properly segmented into rigid links like a bike chain, instead of drawing a smooth arc around the sprockets.
I admit that the challenge appears a little daunting, but it's actually not that bad. If the goal is simply to do that analysis part (i.e. no animation or graphical output), it can be done in pretty much any language. All that's needed is a bit of math; trigonometry and basic geometry (to work out tangent points and arc lengths).
Still, the task does look daunting, which presents a bit of a barrier to entry so I don't know if it's the best fit for a community challenge. But personally I found it to be an interesting (and fun!) task, with plenty of "meat" on its bones.