import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class AnswExercise4 {
static final String REG_WHITESPACE = "\\s+";
//가로바의 존재 여부(첫번째 행, 중간 행, 마지막 행)
static final char[][] hor = {{1,0,1},{0,0,0},{1,1,1},{1,1,1},{0,1,0},
{1,1,1},{1,1,1},{1,0,0},{1,1,1},{1,1,1}};
//세로바의 존재 여부(위 왼쪽, 위 오른쪽, 아래 왼쪽, 아래 오른쪽)
static final char[][] ver = {{1,1,1,1},{0,1,0,1},{0,1,1,0},{0,1,0,1},{1,1,0,1},
{1,0,0,1},{1,0,1,1},{0,1,0,1},{1,1,1,1},{1,1,0,1}};
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = "";
String[] sLine;
int s = 0;
String numLine = "";
try {
while((line = br.readLine()) != null){
line = line.trim().replaceAll(REG_WHITESPACE, " ");
sLine = line.split(REG_WHITESPACE);
s = setNumber(Integer.parseInt(sLine[0])); //숫자를 표시하는 크기( 1<= s <= 10)
numLine = setNumLine(sLine[1]); //표현할 숫자(0<=numLine<=99999999)
// 0 0 이 들어오면 끝낸다.
if(s == 0 && numLine == "0"){
return;
}
String[] hor_bar = {" ".substring(0, s),"---------".substring(0, s)};
String[] ver_bar = {" ","|"};
char[] num = numLine.toCharArray();
String[][] fld = new String[num.length][5];
for(int i=0; i<num.length; i++){
int no = num[i] - '0';
//첫번 행의 가로바
fld[i][0] = " " + hor_bar[hor[no][0]] + " ";
//위쪽 세로바
fld[i][1] = ver_bar[ver[no][0]] + hor_bar[0] + ver_bar[ver[no][1]];
//중간 행의 가로바
fld[i][2] = " " + hor_bar[hor[no][1]] + " ";
//아래쪽 세로바
fld[i][3] = ver_bar[ver[no][2]] + hor_bar[0] + ver_bar[ver[no][3]];
//마지막 행의 가로바
fld[i][4] = " " + hor_bar[hor[no][2]] + " ";
}
//출력(출력 부분은 수정해야함.)
StringBuffer sb = new StringBuffer();
sb.append(System.getProperty("line.separator"));
for(int b=0; b<5; b++){
if(b==1 || b==3){
for(int i=0; i<s; i++){
for(int a=0; a<num.length; a++){
sb.append(fld[a][b]);
}
sb.append(System.getProperty("line.separator"));
}
}else{
for(int a=0; a<num.length; a++){
sb.append(fld[a][b]);
}
sb.append(System.getProperty("line.separator"));
}
}
System.out.println(sb.toString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static int setNumber(int number){
int l_number = Math.min(10, Math.max(number, 0));
if(l_number != number){
throw new IllegalArgumentException("s must be betwwen 1 and 10");
}
return l_number;
}
private static String setNumLine(String numLine){
int l_numLine = Math.min(99999999, Math.max(Integer.parseInt(numLine), 0));
if(l_numLine != Integer.parseInt(numLine)){
throw new IllegalArgumentException("n must be betwwen 0 and 99999999");
}
return numLine;
}
}
댓글 없음 :
댓글 쓰기