User Tools

Site Tools


neighbors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
neighbors [2025/05/27 10:52] – created frchrisneighbors [2025/07/16 11:52] (current) frchris
Line 1: Line 1:
 ====== Neighbors ====== ====== Neighbors ======
  
-This game from Math Games with Bad Drawings can be played with 1 to 30 people.  Everyone has an empty 5 by 5 grid.  A random number from 1 to 10 is chosen, and everyone must place it into their grid. After the grid is filled a score is computed.  On each row, circle any groups with 2 or more of the same number, and add these circled numbers.  Do the same for each column.  The score is the sum of these numbers.+This game from **Math Games with Bad Drawings** by Ben Orlin.  It can be played with 1 to 30 people.  Everyone has an empty 5 by 5 grid.  A random number from 1 to 10 is chosen, and everyone must place it into their grid. After the grid is filled a score is computed.  On each row, circle any groups with 2 or more of the same number, and add these circled numbers.  Do the same for each column.  The score is the sum of these numbers. 
 + 
 +<code java Neighbors.java> 
 +import java.util.Scanner; 
 +/** 
 + * Neighbors game from Math Games with Bad Drawings by . 
 + * 
 + * @author (your name) 
 + * @version (a version number or a date) 
 + */ 
 +public class Neighbors 
 +
 +    private Grid[] boards; 
 +    private int n; 
 +    public Neighbors(int n){ 
 +        this.n = n; 
 +        boards = new Grid[n]; 
 +        for (int i = 0; i < n; i++){ 
 +            boards[i] = new Grid(); 
 +        } 
 +    } 
 + 
 +    public Grid get(int i){ 
 +        return boards[i]; 
 +    } 
 + 
 +    public String toString(){ 
 +        String result = "";    
 +        for (int i = 0; i< n; i++){ 
 +            result += "\nPlayer "+(1+i)+":\n"; 
 +            result += boards[i].toString()+"\n"; 
 + 
 +        } 
 +        return result; 
 +    } 
 +    public static int getInt(Scanner kb, String prompt){ 
 +        System.out.print(prompt); 
 +        String num = kb.nextLine(); 
 +        int result = "012345".indexOf(num); 
 +        if (result <0) { 
 +             System.out.println("Type a number from 1 to 5"); 
 +             return getInt(kb, prompt); 
 +        } 
 +        return result; 
 +    } 
 +    public static void testScoring(){ 
 +        int[][] arr1 = {{8, 8, 4, 4, 3}, 
 +                        {8, 8, 1, 4, 3}, 
 +                        {6, 7,10, 7, 3}, 
 +                        {6, 6, 5, 7, 7}, 
 +                        {2, 2, 5, 9, 9}};//85 
 +        Grid g1 = new Grid(arr1); 
 +        int[][] arr2 ={ {2, 2, 3, 3, 7}, 
 +                        {8, 8, 3, 7, 7}, 
 +                        {8, 8,10, 7, 9}, 
 +                        {4, 5, 6, 6, 5}, 
 +                        {4, 4, 6, 1, 5}};//100 
 +        Grid g2 = new Grid(arr2); 
 +        int[][] arr3 ={ {6, 8, 8, 1, 7}, 
 +                        {6, 6, 8, 8, 7}, 
 +                        {5,10, 3, 9, 7}, 
 +                        {5, 4, 4, 9, 7}, 
 +                        {2, 2, 4, 3, 3}};//92 
 +        Grid g3 = new Grid(arr3); 
 +        System.out.println( g1 +"\nscore:" + g1.score() + "(Should be 173)"); 
 +        System.out.println( g2 +"\nscore:" + g2.score() + "(Should be 172)"); 
 +        System.out.println( g3 +"\nscore:" + g3.score() + "(Should be 154)"); 
 +    } 
 +    public static void main(String[] args) 
 +    {         
 +        Scanner kb = new Scanner(System.in); 
 +        System.out.print("How many players? "); 
 +        String line = kb.nextLine(); 
 +        int n = Integer.parseInt(line); 
 +        Neighbors game = new Neighbors(n); 
 +        //System.out.println(game); 
 +        for (int i = 1; i <= 25; i++){ 
 +            int roll = 1 + (int)(10*Math.random()); 
 +            System.out.println("Random Number "+i+" is "+roll); 
 +            for (int player = 0; player < n; player++){ 
 +                System.out.println(game); 
 +                boolean okay; 
 +                do {  
 +                    String prompt = "Player "+(player+1)+", choose a row (1 to 5) to place "+roll+":"; 
 +                    int row = getInt(kb, prompt); 
 +                    prompt = "Player "+(player+1)+", choose a column (1 to 5):"; 
 +                    int col = getInt(kb, prompt); 
 +                    okay = game.get(player).set(roll, row, col);  
 +                } while (!okay); 
 + 
 +            } 
 +        } 
 +        System.out.println(game); 
 +    } 
 + 
 +
 + 
 +</code> 
 + 
 +<code java Grid.java> 
 + 
 +/** 
 + * Write a description of class Grid here. 
 + * 
 + * @author  
 + * @version (a version number or a date) 
 + */ 
 +public class Grid 
 +
 +    // instance variables - replace the example below with your own 
 +    private int[][] grid; 
 + 
 +    /** 
 +     * Constructor for objects of class Grid 
 +     */ 
 +    public Grid() 
 +    { 
 +        grid = new int[5][5]; 
 +    } 
 +    public Grid(int[][] arr){ 
 +        grid = arr; 
 +    } 
 +    public boolean set(int number, int row, int col){ 
 +        if (grid[row-1][col-1] > 0) 
 +            return false; 
 +        grid[row-1][col-1] = number; 
 +        return true; 
 +    } 
 +    public int score(){ 
 +        int total = 0; 
 +        for (int[] row: grid){ 
 +            int b = 0; 
 +            int e; 
 +            do {               
 +                e = b+1; 
 +                int run = 1; 
 +                int value = row[b]; 
 +                while ( e < 5 && row[b]==row[e]){ 
 +                    run++; 
 +                    e++; 
 +                } 
 +                if (run >1) 
 +                    total += run*row[b];                
 +                b =e ; 
 +            }while (e < 5);    
 +        } 
 +        //columns 
 +        System.out.println(" row total:"+total); 
 +        for(int col =0; col < 5 ; col++){ 
 +            int b = 0; 
 +            int e; 
 +            do { 
 +                e = b+ 1; 
 +                int run =1; 
 +                int value = grid[b][col]; 
 +                while ( e < 5 && grid[b][col] == grid[e][col]){ 
 +                    run++; 
 +                    e++; 
 +                } 
 +                if (run >1 ) 
 +                    total += run*grid[b][col]; 
 +                b = e; 
 +            }while (e<5); 
 +        } 
 +         return total; 
 +    } 
 +    public String toString() 
 +    { 
 +        String result="|"; 
 +        for (int[] row: grid){ 
 +            for(int cell: row) 
 +            { 
 +                if(cell<10) 
 +                   result += " "; 
 +                result +=  + cell +" |"; 
 +            } 
 +            result += "\n|"; 
 +        } 
 +        int last = result.length()-2; 
 +        return result.substring(0, last)+ "Score: "+score(); 
 +    } 
 +
 + 
 +</code> 
 + 
 +Back to [[New Labs]]
neighbors.1748357574.txt.gz · Last modified: 2025/05/27 10:52 by frchris

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki