complete day 4 in straightforward way
This commit is contained in:
		
							parent
							
								
									c9ca250a9a
								
							
						
					
					
						commit
						cbbd95f7ab
					
				
					 2 changed files with 106 additions and 0 deletions
				
			
		
							
								
								
									
										59
									
								
								04-a.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								04-a.kts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| import java.util.Scanner | ||||
| 
 | ||||
| val scanner = Scanner(System.`in`) | ||||
| 
 | ||||
| val matrix = ArrayList<CharArray>() | ||||
| 
 | ||||
| while (scanner.hasNextLine()) { | ||||
|     val line = scanner.nextLine() | ||||
|     matrix.add(line.toCharArray()) | ||||
| } | ||||
| 
 | ||||
| var count = 0 | ||||
| 
 | ||||
| matrix.forEachIndexed { row, line -> | ||||
|     line.forEachIndexed { col, char -> | ||||
|         count += searchFrom(matrix, row, col) | ||||
|     } | ||||
| } | ||||
| println(count) | ||||
| 
 | ||||
| fun searchFrom(matrix: ArrayList<CharArray>, row: Int, col: Int): Int { | ||||
|     return (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row, col + 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row, col + 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row, col + 3, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row, col - 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row, col - 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row, col - 3, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row + 1, col + 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row + 2, col + 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row + 3, col + 3, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row + 1, col, 'M') | ||||
|         && safeCheckMatrix(matrix, row + 2, col, 'A') | ||||
|         && safeCheckMatrix(matrix, row + 3, col, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row + 1, col - 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row + 2, col - 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row + 3, col - 3, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row - 1, col + 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row - 2, col + 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row - 3, col + 3, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row - 1, col, 'M') | ||||
|         && safeCheckMatrix(matrix, row - 2, col, 'A') | ||||
|         && safeCheckMatrix(matrix, row - 3, col, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'X') | ||||
|         && safeCheckMatrix(matrix, row - 1, col - 1, 'M') | ||||
|         && safeCheckMatrix(matrix, row - 2, col - 2, 'A') | ||||
|         && safeCheckMatrix(matrix, row - 3, col - 3, 'S') | ||||
|     ) 1 else 0) | ||||
| } | ||||
| 
 | ||||
| fun safeCheckMatrix(matrix: ArrayList<CharArray>, row: Int, col: Int, target: Char): Boolean { | ||||
|     return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target | ||||
| } | ||||
							
								
								
									
										47
									
								
								04-b.kts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								04-b.kts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| import java.util.* | ||||
| 
 | ||||
| val scanner = Scanner(System.`in`) | ||||
| 
 | ||||
| val matrix = ArrayList<CharArray>() | ||||
| 
 | ||||
| while (scanner.hasNextLine()) { | ||||
|     val line = scanner.nextLine() | ||||
|     matrix.add(line.toCharArray()) | ||||
| } | ||||
| 
 | ||||
| var count = 0 | ||||
| 
 | ||||
| matrix.forEachIndexed { row, line -> | ||||
|     line.forEachIndexed { col, char -> | ||||
|         count += searchFrom(matrix, row, col) | ||||
|     } | ||||
| } | ||||
| println(count) | ||||
| 
 | ||||
| fun searchFrom(matrix: ArrayList<CharArray>, row: Int, col: Int): Int { | ||||
|     return (if (safeCheckMatrix(matrix, row, col, 'A') && | ||||
|         safeCheckMatrix(matrix, row - 1, col - 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row - 1, col + 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row + 1, col - 1, 'S') && | ||||
|         safeCheckMatrix(matrix, row + 1, col + 1, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && | ||||
|         safeCheckMatrix(matrix, row + 1, col - 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row + 1, col + 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row - 1, col - 1, 'S') && | ||||
|         safeCheckMatrix(matrix, row - 1, col + 1, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && | ||||
|         safeCheckMatrix(matrix, row - 1, col - 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row + 1, col - 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row - 1, col + 1, 'S') && | ||||
|         safeCheckMatrix(matrix, row + 1, col + 1, 'S') | ||||
|     ) 1 else 0) + (if (safeCheckMatrix(matrix, row, col, 'A') && | ||||
|         safeCheckMatrix(matrix, row - 1, col + 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row + 1, col + 1, 'M') && | ||||
|         safeCheckMatrix(matrix, row - 1, col - 1, 'S') && | ||||
|         safeCheckMatrix(matrix, row + 1, col - 1, 'S') | ||||
|     ) 1 else 0) | ||||
| } | ||||
| 
 | ||||
| fun safeCheckMatrix(matrix: ArrayList<CharArray>, row: Int, col: Int, target: Char): Boolean { | ||||
|     return row in matrix.indices && col in matrix[row].indices && matrix[row][col] == target | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue