Gear Train Problem Solver

Mathematical Algorithm for Mechanical Engineering Challenge

Google Foobar Challenge Java, JavaScript, HTML5 Algorithm Design

The Challenge

During the Google Foobar challenge, I encountered this fascinating problem that combines mathematical modeling, algorithm design, and constraint satisfaction. The challenge requires calculating gear configurations where the first gear rotates at exactly twice the speed of the last gear.

Key Requirements

  • Place gears on fixed pegs such that adjacent gears mesh properly
  • Ensure the first gear rotates at exactly 2x the speed of the last gear
  • All gear radii must be at least 1 unit
  • Return the solution as a simplified fraction

Technical Approach

Mathematical Foundation

Derived a system of linear equations based on gear meshing constraints and speed relationships. The solution leverages the principle that for meshing gears, the product of radius and angular velocity remains constant.

Algorithm Design

Implemented an O(n) solution that calculates the first gear's radius using a closed-form formula. The algorithm handles both even and odd numbers of pegs with different mathematical approaches.

Validation System

Built comprehensive validation to ensure all gears meet the minimum radius constraint. The system verifies each gear in the train maintains proper meshing and size requirements.

Core Algorithm

// Calculate the sum with alternating signs
int sum = 0;
for (int i = 0; i < pegs.length - 1; i++) {
    sum += Math.pow(-1, i) * (pegs[i + 1] - pegs[i]);
}

// Apply formula based on peg count parity
if (pegs.length % 2 == 0) {
    numerator = 2 * sum;
    denominator = 3;
} else {
    numerator = 2 * sum;
    denominator = 1;
}

Implementation Highlights

Dual Implementations

Created two solution approaches: one using direct mathematical calculation and another using continued fractions for numerical robustness.

Interactive Visualization

Built multiple visualization tools including an enhanced web demo with real-time animation, mechanical statistics, and example configurations.

Comprehensive Testing

Developed extensive test suite covering edge cases, fractional results, large-scale scenarios, and special patterns.

Cross-Platform GUI

Created Java Swing desktop application for native performance with real-time gear animation and detailed results display.

Interactive Demonstrations

Live Demo Features

  • Real-time gear train visualization with proper proportions
  • Animated rotation showing 2:1 speed ratio
  • Variable speed controls and 12+ example configurations
  • Live mechanical statistics (teeth count, gear ratios, mechanical advantage)
  • Challenge mode for testing different configurations
  • Mathematical formula display option

Real-World Applications

Mechanical Engineering

Gear train design for transmission systems

Robotics

Drive train calculations for precise motion control

Clock Making

Gear ratio calculations for timekeeping mechanisms

Manufacturing

Precision machinery design and optimization

Key Takeaways

Mathematical Modeling

Successfully translated physical constraints into a solvable system of equations, demonstrating the power of mathematical abstraction in solving real-world problems.

Algorithm Optimization

Achieved O(n) time complexity through careful mathematical derivation, avoiding brute-force approaches in favor of elegant closed-form solutions.

Visualization Value

Created interactive visualizations that not only demonstrate the solution but also help users understand the underlying mechanical principles.

Explore the Project

Experience the interactive demonstration or dive into the source code to see the implementation details.