Conway.java


Below is the syntax highlighted version of Conway.java from §1.5 Input and Output.


/******************************************************************************
 *  Compilation:  javac Conway.java
 *  Execution:    java Conway 1
 *  Dependencies: StdOut.java StdIn.java
 *
 *  References: http://mathworld.wolfram.com/LookandSaySequence.html
 *              http://www.btinternet.com/~se16/js/lands2.htm
 *
 *  % echo 1 | java Conway
 *  1 1
 *
 *  % echo 1 | java Conway | java Conway
 *  2 1
 *
 *  % echo 1 | java Conway | java Conway
 *  1 2 1 1
 *
 *  % echo 1 | java Conway | java Conway | java Conway | java Conway
 *  1 1 1 2 2 1
 *
 *  % echo 1 | java Conway | java Conway | java Conway | java Conway | java Conway
 *  3 1 2 2 1 1
 *
 *  % echo 1 | java Conway | java Conway | java Conway | java Conway | java Conway | java Conway
 *  1 3 1 1 2 2 2 1
 *
 *  Remarks
 *  -------
 *    -  only involves digits 1, 2, and 3
 *    -  number of digits is approximately proportional to 1.303577^N
 *
 ******************************************************************************/

public class Conway {
    public static void main(String[] args) {
        int inarow = 1;
        int current = StdIn.readInt();
        while (!StdIn.isEmpty()) {
            int next = StdIn.readInt();
            if (next != current) {
                StdOut.print(inarow + " " + current + " ");
                inarow  = 0;
                current = next;
            }
            inarow++;
        }
        StdOut.println(inarow + " " + current);
    }
}


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Aug 11 10:14:17 EDT 2022.