/**
 * Examples that illustrate arithmetic on the circle.
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class ArithmeticOnTheCircle {
    /**
     * A method to hold the fragments.
     *
     * @param args  The command-line arguments
     */
    @SuppressWarnings("checkstyle:innerassignment")  
    public static void main(String[] args) {
//[pattern0
        int cardinality, change, current, passes, remainder;
//]pattern0

        cardinality = change = current = passes = remainder = 1;
//[pattern1
        passes = (current + change) / cardinality;        
//]pattern1

//[pattern2
        remainder = (current + change) % cardinality;
//]pattern2

        // Some specific examples...

        // Times
        cardinality = 24;
        current = 17;
        change = 12; // 93
        
        remainder = (current + change) % cardinality;
        
        System.out.printf("Times: %d\n", remainder);
        

        // Weights
        cardinality = 16;
        current = 9;
        change = 14;
        
        remainder = (current + change) % cardinality;
        
        System.out.printf("Weights: %d\n", remainder);


        // Day of the Week
        cardinality = 7;
        current = 3;
        change = 516; //6;
        
        remainder = (current + change) % cardinality;
        
        System.out.printf("Day of the Week: %d\n", remainder);
    }
}
