/* Subject: Contest submission for problem #1, file 1.java */ /* kelvinso@imail.EECS.Berkeley.EDU */ /* Wed Sep 10 20:52:32 PDT 2003 */ /*___CONTEST_SUBMISSION___ kelvinso 1 */ import java.io.InputStream; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.StreamTokenizer; import java.util.LinkedList; import java.util.ListIterator; import java.util.Hashtable; import java.util.Enumeration; import java.lang.Double; class P1 { public static void main(String[] arg) throws Exception{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StreamTokenizer streamTokenizer = new StreamTokenizer(in); LinkedList listOfMatrix = new LinkedList(); while (streamTokenizer.nextToken() != StreamTokenizer.TT_EOF) { Double size = new Double(streamTokenizer.nval); if(size.intValue() == 0) break; char[][] table = new char[size.intValue()][size.intValue()]; listOfMatrix.addLast(table); for(int i = 0; i< size.intValue(); i++) { streamTokenizer.nextToken(); String thisLine = streamTokenizer.sval; for(int j = 0; j< size.intValue(); j++) { table[i][j] = thisLine.charAt(j); } } } ListIterator iterator = listOfMatrix.listIterator(); while(iterator.hasNext()) { Hashtable letterToResult = new Hashtable(); char[][] matrix = (char[][]) iterator.next(); int size = matrix.length; LinkedList list = new LinkedList(); for(int i = 0; i<=20 ; i++) { Hashtable table = new Hashtable(); list.addLast(table); } for(int i = 0; i=matrixSize) return false; if(matrix[row][column] != triangle.letter) return false; for(int i = 0; i< size; i++ ) { row++; column++; if(row<0 || column >=matrixSize) return false; if(matrix[row][column] != triangle.letter) return false; } } else if(triangle.direction ==3) { int row = triangle.row + size; int column = triangle.column; if(row>= matrixSize || column >=matrixSize) return false; if(matrix[row][column] != triangle.letter) return false; for(int i = 0; i< size; i++ ) { row--; column++; if(row>=matrixSize || column >=matrixSize) return false; if(matrix[row][column] != triangle.letter) return false; } } else if(triangle.direction ==4) { int row = triangle.row + size; int column = triangle.column; if(row>= matrixSize || column < 0) return false; if(matrix[row][column] != triangle.letter) return false; for(int i = 0; i< size; i++ ) { row--; column--; if(row>=matrixSize || column <0) return false; if(matrix[row][column] != triangle.letter) return false; } } return true; } } class RightTriangle { public int row; public int column; public int direction; public char letter; public int size; public RightTriangle() {} public RightTriangle(int r, int c, int d, char letter, int s) { row = r; column = c; direction = d; this.letter = letter; size = s; } public int hashCode() { return (row*20) + column + direction; } public boolean equals(Object obj) { RightTriangle rt = (RightTriangle) obj; return (row == rt.row) && (column == rt.column) && (direction == rt.direction) && (letter == rt.letter); } public String toString() { return "row=" + row + " column=" + column + " direction=" + direction + " size=" + (size); } } class Int{ public int value; public Int(int value) { this.value = value; } }