Kata del mes de Agosto del 2011: Minesweeper
JavaScript PHP Ruby Groovy C++ Python Other
Latest commit 1530530 Apr 9, 2012 @12meses12katas Merge pull request #14 from francoisperron/master
fperron java version
Permalink
Failed to load latest commit information.
0xwille Commit inicial Aug 21, 2011
ahurt2000 Added parser test - GREEN. It correctly parses the input Aug 24, 2011
andrewnix Solucion completa en C++ Aug 27, 2011
cibernox Test fixed Sep 27, 2011
eLobato All tests are green. Solution completed. I miss some refactoring Aug 31, 2011
ericminio Gemfile.lock added Oct 29, 2011
fperron/src
ggalmazor Refactorizaciones a go go Aug 22, 2011
gnomo567 Added parser test - GREEN. It correctly parses the input Aug 24, 2011
gonzalo123/php
ianmonge Tested the class Meniweeper Aug 27, 2011
lantoli Added parser test - GREEN. It correctly parses the input Aug 24, 2011
rchavarria Added parser test - GREEN. It correctly parses the input Aug 24, 2011
rmhdev/php (php) Solución para parametros que hagan referencia a más de un Mines… Aug 21, 2011
sourcerebels Una vuelta de tuerca mas Oct 6, 2011
soyangel Added parser test - GREEN. It correctly parses the input Aug 24, 2011
README Added parser test - GREEN. It correctly parses the input Aug 24, 2011

README

About this Kata
Kata originated here: acm.uva.es/p/v101/10189.html

Difficulty: Easy

Problem Description

Have you ever played Minesweeper? It's a cute little game which comes within a certain Operating System whose name we can't really remember. Well, the goal of the game is to find all the mines within an MxN field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, take the following 4x4 field with 2 mines (which are represented by an * character):

*...
....
.*..
....
The same field including the hint numbers described above would look like this:
*100
2210
1*10
1110
You should write a program that takes input as follows:
The input will consist of an arbitrary number of fields. The first line of each field contains two integers n and m (0 < n,m <= 100) which stands for the number of lines and columns of the field respectively. The next n lines contains exactly m characters and represent the field. Each safe square is represented by an "." character (without the quotes) and each mine square is represented by an "*" character (also without the quotes). The first field line where n = m = 0 represents the end of input and should not be processed.

Your program should produce output as follows:

For each field, you must print the following message in a line alone:

Field #x:

Where x stands for the number of the field (starting from 1). The next n lines should contain the field with the "." characters replaced by the number of adjacent mines to that square. There must be an empty line between field outputs.

Clues

As you may have already noticed, each square may have at most 8 adjacent squares.

Suggested Test Cases

This is the acceptance test input:

4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
and output:
Field #1:
*100
2210
1*10
1110

Field #2:
**100
33200
1*100

Info: http://codingdojo.org/cgi-bin/wiki.pl?KataMinesweeper