PC/UVa ID : 110102/10189, 인기도 : A, 성공률 : 높음, 레벨 : 1]

관련링크 : http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110102&format=html


말 그대로 지뢰 찾기를 만들라는 것인데, * 가 지뢰고 . 가 안전 지대라 했을 때, 4 x 4 의 지뢰밭이 다음과 같다고 하자. 그러면 오른쪽 처럼 출력되게 하는 프로그램을 만들라 가 이번 문제의 목표이다.

입력

첫번째로 지뢰 밭의 크기를 가로 row X 세로 col 을 받되, 각 길이는 0 ~ 100 사이 값이여야 한다. 또한 0 0 이 입력 되었을 경우 프로그램은 종료되어야 한다.

출력

각 지뢰밭에 대해 Field #x: 라 적혀있는 메세지를 출력 하고, x 필드는 1번부터 시작해 사용자가 끝낼때까지 1씩 올라 간다. 자세한 것은 예제를 보는게 좋을 것이다.

예제

입력
4 4
*....
....
.*..
....

Field #1:
*100
2210
1*10

3 5
**...
.....
.*...

Field #2:
**100
33200
1*100

0 0
정상 종료



총평

루아 입출력 함수 사용법 익히는데 많은 시간이 걸렸다. 여담으론 입력 스트림을 날려버리는 함수가 있으면 매우 좋겠다란 생각을 하게 된다. 스트림을 제어 할 수 있는 언어, 이런 언어가 참 유용하지 않을까란 생각도 한다. 이번 문제에 대해서 이야기 하자면, if 를 쓰지 않고도 충분히 처리 할 수 있다면, 안쓰는게 훨씬 좋지 않을까 한다. 왜냐하면, 코드 분량이 더 늘어나고, 논리적으로 생각 해야 되는 것도 더 늘어나기 때문이다.

최초 if 로 양 사이드 끝이라면, 상하 사이드 끝이라면, 이라는 식으로 의사코드를 짜다가, 코드가 너무 더러워 져서, if 없이 짤 수 있지 않을까? 란 생각을 했다. 다음과 같은 알고리즘을 생각하고, 루아로 만들게 된 것이다.


여담
회사 다니면서, 책 보는 량이 무척 줄었으므로, 포스팅도 하루에 한개씩만... ㅋ


문제 풀이 소스


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요

  1. Favicon of http://www.ikpil.com 농사를 짓는 게임 프로그래머 최익필 2010.01.23 15:13 신고  Addr  Edit/Del  Reply

    내가 짯지만, 지금 주석이 없으니, 무슨 코드인지 모르겠다.