// // InitPatternPlethora.java // Anneal // // Created by sw on Thu Sep 12 2002. // Copyright (c) 2001 __MyCompanyName__. All rights reserved. // package net.tiac.home.sw.anneal; import java.lang.Integer; import java.awt.*; import java.awt.event.*; import java.applet.Applet; class InitPatternPlethora { public InitPattern [] patterns; public InitPatternPlethora( ) { CheapVector patternV; patternV = new CheapVector( new InitPattern [1], 0 ); // This uses anonymous classes to create an array of // customized InitPattern's: patternV.add( new InitPattern( "Random 50%" ) { public boolean cell( int i, int j ) { return( Math.random() > .5 ); } } ); patternV.add( new InitPattern( "Circuit Board" ) { public Dimension arrayDimension() { // In this case, force sizes to be odd! return( new Dimension( ( maxDimension.width + 1 ) / 2 * 2 - 1, ( maxDimension.height + 1 ) / 2 * 2 - 1 ) ); } public boolean cell( int i, int j ) { return ( i % 2 < 1 && ( j ) % 2 == 1 ); } } ); patternV.add( new InitPattern( "All White" ) { public boolean cell( int i, int j ) { return( false ); } } ); patternV.add( new InitPattern( "Random 1%" ) { public boolean cell( int i, int j ) { return( Math.random() > .99 ); } } ); patternV.add( new InitPattern( "Random 10%" ) { public boolean cell( int i, int j ) { return( Math.random() > .9 ); } } ); patternV.add( new InitPattern( "Random 33%" ) { public boolean cell( int i, int j ) { return( Math.random() > .67 ); } } ); patternV.add( new InitPattern( "Back to Ohio" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 13, 13 ) ); } public boolean cell( int i, int j ) { return( ( i + j * 8 ) % 13 < 1 ); } } ); patternV.add( new InitPattern( "2 x 2" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 2, 2 ) ); } public boolean cell( int i, int j ) { return( i % 2 == 1 && ( j ) % 2 == 1 ); } } ); patternV.add( new InitPattern( "50% grey" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 2, 2 ) ); } public boolean cell( int i, int j ) { return( ( i + j ) % 2 == 1 ); } } ); patternV.add( new InitPattern( "3 x 3" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 3, 3 ) ); } public boolean cell( int i, int j ) { return( i % 3 < 1 && ( j ) % 3 < 1 ); } } ); patternV.add( new InitPattern( "4 x 4" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 4, 4 ) ); } public boolean cell( int i, int j ) { return( i % 4 < 1 && ( j ) % 4 < 1 ); } } ); patternV.add( new InitPattern( "17 x 17" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 17, 17 ) ); } public boolean cell( int i, int j ) { return( ( i + j * 4 ) % 17 < 1 ); } } ); patternV.add( new InitPattern( "10 x 10" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 10, 10 ) ); } public boolean cell( int i, int j ) { return( ( i + j * 3 ) % 10 < 1 ); } } ); patternV.add( new InitPattern( "4 Big Squares" ) { public Dimension arrayDimension() { return( dimensionClosestMultOf( 2, 2 ) ); } public boolean cell( int i, int j ) { return( ( i < maxDimension.width / 2 && j < maxDimension.height / 2 ) || ( i >= maxDimension.width / 2 && j >= maxDimension.height / 2 ) ); } } ); patterns = (InitPattern []) patternV.toArrayClear(); } }