<prompt> Unda uigaji wa Mchezo wa Maisha wa Conway wa msingi wa Java na vigezo hivi: - Mtumiaji anaweza kufafanua hali ya awali ya gridi ya taifa kwa kubainisha viwianishi vya seli hai. - Uigaji unapaswa kuendeshwa kwa idadi maalum ya vizazi. - Mpango unapaswa kuonyesha gridi baada ya kila kizazi, kuonyesha mabadiliko ya automaton ya mkononi.PLINFORMAT  <response>: agiza java.util.HashSet;agiza java.util.Skena;agiza java.util.Set;darasa la umma GameOfLife utupu tuli wa umma String args Kichanganuzi cha kichanganuzi Kichanganuzi kipya System.in; System.out.printlnIngiza nambari ya seli hai:; int numberOfLiveCells scanner.nextInt; Weka liveCells HashSet mpya; kwa int i 0; i numberOfLiveCells; i System.out.printlnIngiza viwianishi vya seli hai i 1 :; int x scanner.nextInt; int y scanner.nextInt; liveCells.ongezaKiini kipyax, y; System.out.printlnIngiza idadi ya vizazi ili kuiga:; int generations scanner.nextInt; Gridi ya taifa Gridi mpyaliveCells; kwa int i 0; i vizazi; i System.out.printlnKizazi i :; grid.display; grid.nextGeneration; seli ya darasa mwisho int x; mwisho int y; Kiiniint x, int y hii.x x; hii.y y; Batilisha boolean ya umma sawa Kitu o ikiwa hii o itarudi kweli; ikiwa !o exampleof Cell itarudi sivyo; Kiini kiini Kiini o; rudisha x cell.x y cell.y; Batilisha public int hashCode matokeo ya int x; matokeo 31 matokeo y; matokeo ya kurudi; Gridi ya darasa herufi tuli ya kibinafsi LIVE_CELL O; char tuli ya faragha DEAD_CELL .; Seti ya faragha liveCells; GridiWeka liveCells this.liveCells liveCells; void nextGeneration Weka newLiveCells HashSet mpya; kwa seli seli : liveCells int liveNeighbors countLiveNeighborsseli; ikiwa liveNeighbors 2 liveMajirani 3 newLiveCells.ongezaseli; kwa int dx -1; dx 1; dx kwa int dy -1; dy 1; dy ikiwa dx ! 0 dy ! 0 Jirani ya seli Seli mpyaseli.x dx, seli.y dy; ikiwa !liveCells.containsjirani countLiveNeighborsjirani 3 newLiveCells.ongezajirani; liveCells newLiveCells; hesabu ya int ya kibinafsiLiveNeighborsKiini cha seli int hesabu 0; kwa int dx -1; dx 1; dx kwa int dy -1; dy 1; dy ikiwa dx ! 0 dy ! 0 liveCells.inaSeli mpyaseli.x dx, seli.y dy hesabu ; hesabu ya kurudi; onyesho tupu int minX Nambari kamili.MAX_VALUE; int maxX Nambari kamili.MIN_VALUE; int minY Nambari kamili.MAX_VALUE; int maxY Nambari kamili.MIN_VALUE; kwa seli seli : liveCells minX Math.minminX, cell.x; maxX Math.maxmaxX, cell.x; minY Math.minminY, cell.y; maxY Math.maxmaxY, cell.y; kwa int y minY - 1; y maxY 1; y kwa int x minX - 1; x maxX 1; x System.out.printliveCells.containsSeli mpyax, y ? LIVE_CELL : DEAD_CELL; System.out.println; 