참고사이트: https://www.pharmabraille.com/pharmaceutical-braille/the-braille-alphabet/
출처: 순천향대학교 청소년 정보보호 페스티벌 http://yisf.sch.ac.kr/
올해 순천향대학교 예선 대회 문제로 나온 문제를 복원 및 수정한 문제입니다.

다음을 만족하는 점자 변환 프로그램을 작성하시오(단, 숫자는 입력하지 않습니다).
테스트 입력1
input:
1
WHATISTHEKEY
output:
OX XO XO OX OX OX OX XO XO XO XO XX
XX XX OO XX XO XO XX XX OX OO OX OX
OX OO OO XO OO XO XO OO OO XO OO XX
테스트 입력2
input:
2
OO OO OO OO OO OO OO OO OO OO OO OX XO OO OX OX OO OO OO OX OX OO OX XO OO OO OO OO OX OO OO OO XO OO OX XO OO OX OO OX OO OX XO OX XO OO OO OX OO OO OX OX XO OO XO OO OO OX OO OO OO OX OX
XO XX XO XX OO XX OO XO XO OO XO OX OO XO OX OO XO OO XX OX OO XO OX OO XO XX XX OX OX XX XO OX XO XO OX OO OX OX OX OX XO OX OO OX OO XO OX OX XX OX OX OX OO OX XO XX OX OX OO XX XX OX OO
XO OX XX XO XO XX XO XX XO XO XX OX OX XX OX XO XX XO XX OX XO XX OX OX XX OO XO OO XO OX XX OO OX XX OX OX OO XO OO XO OO OX OX OX OX XO OO XO OX OO XO OX OX OO OX OX OO XO XO XX XO OX XO
output:
;.?!"';'\?/?"/?\?:!).?(?\)),\\;).)\(.)"!/
6개의 풀이가 있습니다.
class braille:
'''
self.string: 문자열
self.bcode : 첨자
self.ncode : 첨자숫자코드
'''
char = ',;:.?!"\'()/\\- '
code = ('1', '12', '14', '145', '15', '124', '1245', '125', '24', '245', '13', '123', '134',
'1345', '135', '1234', '12345', '1235', '234', '2345', '136', '1236', '2456', '1346', '13456', '1356',
'2', '23', '25', '256', '236', '235', '3 2356', '3 236', '5 126', '5 345', '456 34', '456 16', '36', '0',
'56', '3456')
def __init__(self, inp): # 한줄 문자열만 변환
if '\n' not in inp: # 여러줄은 첨자로 인식
self.string = inp
self.__char_to_braille()
elif '\n' in inp:
self.bcode = inp
self.__braille_to_char()
def __char_to_braille(self):
self.ncode = []
for i in range(len(self.string)):
if self.string[i] in self.char:
self.ncode.append(self.code[self.char.index(self.string[i])+26])
elif self.string[i].isdigit():
if not(i > 0 and self.string[i-1].isdigit()) and\
not(i > 1 and self.string[i-1] == '.' and self.string[i-2].isdigit()): self.ncode.append(self.code[-1])
self.ncode.append(self.code[int(self.string[i])-1] if self.string[i] != '0' else self.code[9])
elif self.string[i].isalpha():
if i > 0 and self.string[i-1].isdigit(): self.ncode.append(self.code[-2])
self.ncode.append(self.code[int(self.string[i], 36)-10])
else: raise
self.ncode = ' '.join(self.ncode)
self.bcode = '\n'.join(' '.join(i) for i in zip(*(self.__code_to_braille(i) for i in self.ncode.split())))
def __code_to_braille(self, v):
if v == '0': return [' ', ' ', ' ']
ret = [['O' for j in range(2)] for i in range(3)]
for i in v:
ret[(int(i)-1)%3][(int(i)-1)//3] = 'X'
return [''.join(i) for i in ret]
def __braille_to_char(self):
self.ncode = ' '.join(self.__braille_to_code(i) for i in zip(*(i.split(' ') for i in self.bcode.splitlines())))
self.ncode = self.ncode.replace('0 0','0')
tmp, flag_num, self.string = '', False, []
for i in self.ncode.split():
if i == '3456' : flag_num = True; continue
elif i == '56' : flag_num = False; continue
elif i == '256' : self.string.append('.'); continue
elif i in self.code[10:]: flag_num = False
if tmp: i = f'{tmp} {i}'
if i in ('3', '5', '456'): tmp = i; continue
else : tmp = ''
idx = self.code.index(i)
if flag_num: self.string.append(str(idx+1)[-1])
else:
if idx > 25: self.string.append(self.char[idx-26])
else: self.string.append(chr(idx+97))
self.string = ''.join(self.string)
def __braille_to_code(self, v):
if '' in v: return '0'
return ''.join(str(j*3+i+1) for j in range(2)
for i in range(3) if v[i][j] == 'X')
if __name__ == '__main__':
test = ['100 cm', '25.4cm', 'The Braille Alphabet',
'''\
OX XO XX OO XX OO XX XX
OX OO OX XX OX OX OO OO
XX OO OO OX OO OX OO XO''', '''\
XO XO XO XO XO OO OX XO XO XO XX OO
XX OX XO XO OX XO XX OX XX XO OX XX
OO OO XO XO XO OO OX XO XO XO OO XO''', '''\
XO OX OX XX OO OX OX OX OX XX XO XX OX XX XX XX XO OX XO XX XX OO XX XO XX OX OX
XX XX XX XO XX OX OO OX OO OO OX OX XO OX XX OX OX XX OO OX XX XX OO OX OO OX OO
OO XO XO XO OO OX XO OX XO OO XO OO OO XO OO OO XO OO OO XO OO OX OO XO XO OX XO''']
for j in (braille(i) for i in test):
print(j.string, j.ncode, j.bcode, sep='\n')
print()
결과
100 cm
3456 1 245 245 0 14 134
OX XO OX OX XX XX
OX OO XX XX OO OO
XX OO OO OO OO XO
25.4cm
3456 12 15 256 145 56 14 134
OX XO XO OO XX OO XX XX
OX XO OX XX OX OX OO OO
XX OO OO OX OO OX OO XO
The Braille Alphabet
2345 125 15 0 12 1235 1 24 123 123 15 0 1 123 1234 125 1 12 15 2345
OX XO XO XO XO XO OX XO XO XO XO XO XX XO XO XO XO OX
XX XX OX XO XX OO XO XO XO OX OO XO XO XX OO XO OX XX
XO OO OO OO XO OO OO XO XO OO OO XO XO OO OO OO OO XO
14.4cm
3456 1 145 256 145 56 14 134
OX XO XX OO XX OO XX XX
OX OO OX XX OX OX OO OO
XX OO OO OX OO OX OO XO
hello, world!
125 15 123 123 135 2 0 2456 135 1235 123 145 235
XO XO XO XO XO OO OX XO XO XO XX OO
XX OX XO XO OX XO XX OX XX XO OX XX
OO OO XO XO XO OO OX XO XO XO OO XO
http://codingdojang.com/
125 2345 2345 1234 25 456 34 456 34 14 135 145 24 1345 1245 145 135 245 1 1345 1245 256 14 135 134 456 34
XO OX OX XX OO OX OX OX OX XX XO XX OX XX XX XX XO OX XO XX XX OO XX XO XX OX OX
XX XX XX XO XX OX OO OX OO OO OX OX XO OX XX OX OX XX OO OX XX XX OO OX OO OX OO
OO XO XO XO OO OX XO OX XO OO XO OO OO XO OO OO XO OO OO XO OO OX OO XO XO OX XO
최대한 참고 사이트의 규칙대로 변환하였습니다
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try {
System.out.println("1번 : 알파벳을 점자로\r\n2번 : 점자를 알파벳으로");
byte select = sc.nextByte();
if (select == 1) {
char[][] result_char;
ArrayList<char[][]> result = new ArrayList<>();
System.out.println("알파벳을 입력하세요.");
String st = new Scanner(System.in).nextLine();
for (int i = 0; i < st.length(); i++) {
result.add(Braille(st.charAt(i)));
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < result.size(); j++) {
result_char = result.get(j);
System.out.print(result_char[i][0]);
System.out.print(result_char[i][1] + " ");
}
System.out.println("");
}
} else if (select == 2) {
String[] st = {"", "" ,""};
System.out.println("점자를 입력해 주세요.");
st[0] = new Scanner(System.in).nextLine();
st[1] = new Scanner(System.in).nextLine();
st[2] = new Scanner(System.in).nextLine();
if (st[0].length() != st[1].length() || st[1].length() != st[2].length()
|| st[0].length() != st[2].length()) {
System.out.println("점자를 제대로 입력해 주세요.");
}else{
System.out.println(Louis(st[0], st[1], st[2]));
}
} else {
System.out.println("종료합니다.");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static String Louis(String Line_One, String Line_Two, String Line_Three) {
String result = "";
ArrayList<char[][]> Arr_Char = new ArrayList<>();
for (int i = 0; i < Line_One.length(); i += 3) {
char[][] char_at = { { 'X', 'X' }, { 'X', 'X' }, { 'X', 'X' } };
for (int j = 0; j < 3; j++) {
if (j == 0) {
char_at[j][0] = Line_One.charAt(i);
char_at[j][1] = Line_One.charAt(i + 1);
} else if (j == 1) {
char_at[j][0] = Line_Two.charAt(i);
char_at[j][1] = Line_Two.charAt(i + 1);
} else if (j == 2){
char_at[j][0] = Line_Three.charAt(i);
char_at[j][1] = Line_Three.charAt(i + 1);
}
}
Arr_Char.add(char_at);
}
for (int i = 0; i < Arr_Char.size(); i++) {
char[][] char_at = Arr_Char.get(i);
if (char_at[0][1] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O' && char_at[2][1] == 'O') {
result += 'Z';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O'
&& char_at[2][1] == 'O') {
result += 'Y';
} else if (char_at[0][0] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O' && char_at[2][1] == 'O') {
result += 'X';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O' && char_at[2][1] == 'O') {
result += 'W';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O' && char_at[2][1] == 'O') {
result += 'V';
} else if (char_at[0][0] == 'O' && char_at[2][0] == 'O' && char_at[2][1] == 'O') {
result += 'U';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O') {
result += 'T';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[2][0] == 'O') {
result += 'S';
} else if (char_at[0][0] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O') {
result += 'R';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O'
&& char_at[2][0] == 'O') {
result += 'Q';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[2][0] == 'O') {
result += 'P';
} else if (char_at[0][0] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O') {
result += 'O';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][1] == 'O' && char_at[2][0] == 'O') {
result += 'N';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[2][0] == 'O') {
result += 'M';
} else if (char_at[0][0] == 'O' && char_at[1][0] == 'O' && char_at[2][0] == 'O') {
result += 'L';
} else if (char_at[0][0] == 'O' && char_at[2][0] == 'O') {
result += 'K';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O') {
result += 'J';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O') {
result += 'I';
} else if (char_at[0][0] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O') {
result += 'H';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O') {
result += 'G';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O' && char_at[1][0] == 'O') {
result += 'F';
} else if (char_at[0][0] == 'O' && char_at[1][1] == 'O') {
result += 'E';
} else if (char_at[0][1] == 'O' && char_at[1][0] == 'O' && char_at[1][1] == 'O') {
result += 'D';
} else if (char_at[0][0] == 'O' && char_at[0][1] == 'O') {
result += 'C';
} else if (char_at[0][0] == 'O' && char_at[1][0] == 'O') {
result += 'B';
} else if(char_at[0][0] == 'O'){
result += 'A';
} else {
result += " ";
}
}
return result;
}
public static char[][] Braille(char C) {
char[][] result = { { 'X', 'X' }, { 'X', 'X' }, { 'X', 'X' } };
if (C == 'A' || C == 'a') {
result[0][0] = 'O';
} else if (C == 'B' || C == 'b') {
result[0][0] = 'O';
result[1][0] = 'O';
} else if (C == 'C' || C == 'c') {
result[0][0] = 'O';
result[0][1] = 'O';
} else if (C == 'D' || C == 'd') {
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
} else if (C == 'E' || C == 'e') {
result[0][0] = 'O';
result[1][1] = 'O';
} else if (C == 'F' || C == 'f') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][0] = 'O';
} else if (C == 'G' || C == 'g') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
} else if (C == 'H' || C == 'h') {
result[0][0] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
} else if (C == 'I' || C == 'i') {
result[0][1] = 'O';
result[1][0] = 'O';
} else if (C == 'J' || C == 'j') {
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
} else if (C == 'K' || C == 'k') {
result[0][0] = 'O';
result[2][0] = 'O';
} else if (C == 'L' || C == 'l') {
result[0][0] = 'O';
result[1][0] = 'O';
result[2][0] = 'O';
} else if (C == 'M' || C == 'm') {
result[0][0] = 'O';
result[0][1] = 'O';
result[2][0] = 'O';
} else if (C == 'N' || C == 'n') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
} else if (C == 'O' || C == 'o') {
result[0][0] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
} else if (C == 'P' || C == 'p') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][0] = 'O';
result[2][0] = 'O';
} else if (C == 'Q' || C == 'q') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
} else if (C == 'R' || C == 'r') {
result[0][0] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
} else if (C == 'S' || C == 's') {
result[0][1] = 'O';
result[1][0] = 'O';
result[2][0] = 'O';
} else if (C == 'T' || C == 't') {
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
} else if (C == 'U' || C == 'u') {
result[0][0] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
} else if (C == 'V' || C == 'v') {
result[0][0] = 'O';
result[1][0] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
} else if (C == 'W' || C == 'w') {
result[0][1] = 'O';
result[1][0] = 'O';
result[1][1] = 'O';
result[2][1] = 'O';
} else if (C == 'X' || C == 'x') {
result[0][0] = 'O';
result[0][1] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
} else if (C == 'Y' || C == 'y') {
result[0][0] = 'O';
result[0][1] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
} else if (C == 'Z' || C == 'z') {
result[0][0] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
} else if (C == '#') {
result[0][1] = 'O';
result[1][1] = 'O';
result[2][0] = 'O';
result[2][1] = 'O';
}
return result;
}
}
어렵다기 보다는 귀찮은 작업이네요.
알파벳을 점자로 변환할때는 #까지 가능하게 했지만,
점자에서 알파벳으로 변환할때는 귀찮아서 #을 생략했습니다.
jum_dict={'A':['XO','OO','OO'],
'B':['XO','XO','OO'],
'C':['XX','OO','OO'],
'D':['XX','OX','OO'],
'E':['XO','OX','OO'],
'F':['XX','XO','OO'],
'G':['XX','XX','OO'],
'H':['XO','XX','OO'],
'I':['OX','XO','OO'],
'J':['OX','XX','OO'],
}
def char2jum(string):
print('ouput:')
#소문자 대문자 구분이 없길래 다 대문자로 바꿔줬습니다.
string=string.upper()
for i in range(3):
jums=''
try:
for a in string:
jums+=jum_dict[a][i]+' '
except:
print('string is not in dict')
break
print(jums)
def jum2char(jums):
print('ouput:')
result=''
keylist=list(jum_dict.keys())
vallist=list(jum_dict.values())
for i in range(len(jums[0])):
char=[jums[0][i],jums[1][i],jums[2][i]]
result+=keylist[vallist.index(char)]
print(result)
while (1):
mode=int(input("input : \n"))
if mode ==1:
string=input()
char2jum(string)
elif mode==2:
jums=[]
for _ in range(3):
temp=input()
jums.append(temp.split())
jum2char(jums)
else:
print("choice mode 1 or 2")
딕셔너리는 다 완성하지 못했습니다. ㅜㅜ 너무도 귀찮은 작업이네요
# statement => code list
def e_map(stm):
a_code = ['1', '12', '14', '145', '15', '124', '1245', '125', '24', '245', '13', '123', '134',
'1345', '135', '1234', '12345', '1235', '234', '2345', '136', '1236', '2456', '1346', '13456', '1356']
dic = {alp:code for (alp, code) in zip('ABCDEFGHIJKLMNOPQRSTUVWXYZ', a_code)}
return [dic[alp] for alp in stm]
# emap(statement) => code_lst => braille
def encode(stm):
code_lst = e_map(stm)
# ['124', '346', ... ] 모양의 코드 리스트로 문자열 br에 점자를 찍어낸다.
br = [[], [], []]
for code in code_lst:
for i in range(3):
br[i].append(
('X' if str(i + 1) in code else 'O') + \
('X' if str(i + 4) in code else 'O')
)
return '\n'.join([' '.join(row) for row in br])
# code list => chars
def d_map(code_lst):
c_code = ['2', '23', '25', '256', '236', '235', '3', '3 2356', '45 236', '45 356', '3 236', '3 356', '5 126', '5 345',
'456 34', '456 16', '36', '6 36']
dic = {code:ch for (code, ch) in zip(c_code, ''',;:.?!‘““”‘’()/\\––''')}
# 코드 리스트를 출력할 특수문자들로 바꾼다.
# 크기 2인 코드를 고려하며, 크기 2인 코드를 크기 1인 코드보다 우선한다.
chars = ''
i = 0
while i < len(code_lst):
long_code = code_lst[i] + ' ' + code_lst[i + 1]
if long_code in c_code:
chars += dic[long_code]
i += 1
else:
chars += dic[code_lst[i]]
i += 1
return chars
# braille => raw_code_lst => d_map(raw_code_lst) => chars
def decode(br):
# 입력받은 점자 br로 코드 리스트를 만든다. 단, 크기 2인 코드는 고려하지 않는다.
br = [row.split() for row in br.split('\n')]
raw_code_lst = ['' for b in br[0]]
for j in range(len(br[0])):
for i in range(3):
if br[i][j][0] is 'X':
raw_code_lst[j] += (str(i + 1))
for i in range(3):
if br[i][j][1] is 'X':
raw_code_lst[j] += (str(i + 4))
return d_map(raw_code_lst)
input_data1 = ['1', 'WHATISTHEKEY']
input_data2 = ['2', '''\
OO OO OO OO OO OO OO OO OO OO OO OX XO OO OX OX OO OO OO OX OX OO OX XO OO OO OO OO OX OO OO OO XO OO OX XO OO OX OO OX OO OX XO OX XO OO OO OX OO OO OX OX XO OO XO OO OO OX OO OO OO OX OX
XO XX XO XX OO XX OO XO XO OO XO OX OO XO OX OO XO OO XX OX OO XO OX OO XO XX XX OX OX XX XO OX XO XO OX OO OX OX OX OX XO OX OO OX OO XO OX OX XX OX OX OX OO OX XO XX OX OX OO XX XX OX OO
XO OX XX XO XO XX XO XX XO XO XX OX OX XX OX XO XX XO XX OX XO XX OX OX XX OO XO OO XO OX XX OO OX XX OX OX OO XO OO XO OO OX OX OX OX XO OO XO OX OO XO OX OX OO OX OX OO XO XO XX XO OX XO''']
for (m, s) in [input_data1, input_data2]:
func = encode if m is '1' else decode
print(func(s))
bra = ['100','110','300','320','120','310','330','130','210','230','101','111','301',
'321','121','311','331','131','211','231','103','113','232','303','323','123','223']
def c(i):
return '1' if i == 'XO' else '2' if i == 'OX' else '3' if i == 'XX' else '0'
def braille(i):
if i == 1:
i = list(input())
for x in range(3):
for a in i:
a = int(bra[ord(a)-65][x])
print('XO' if a == 1 else 'OX' if a == 2 else 'XX' if a == 3 else 'OO', end = ' ')
print('\n')
else:
i = [input().split(),input().split(),input().split()]
for x in range(len(i[0])):
print(chr(bra.index(c(i[0][x])+c(i[1][x])+c(i[2][x]))+65),end = '')
아직 문제를 제대로 이해를 하지 못해 최대한 나름대로 풀어봤습니다.
수정해주시면 즉시 고치겠으며 대문자로만 고려를 했습니다.
using System;
using System.Collections.Generic;
using System.Text;
namespace solution2
{
class Program
{
public static Dictionary<char, int> dic = new Dictionary<char, int>()
{
{'A',1 },{'B',5},{'C',3},{'D',11},{'E',9},{'F',7},{'G',15},{'H',13},{'I',6},{'J',14},{'K',17},
{'L',21},{'M',19},{'N',27},{'O',25},{'P',23},{'Q',31},{'R',29},{'S',22},{'T',30},{'U',49},
{'V',53},{'W',46},{'X',51},{'Y',59},{'Z',57}
};
static void Main(string[] args)
{
Console.WriteLine("점자 변환 프로그램:");
Console.WriteLine("\t1을 입력하면 문자 한 줄을 입력 받고 점자(XO로 이루어진)로 바꿔서 출력합니다");
Console.WriteLine("\t2를 입력하면 점자(XO로 이루어진) 세 줄을 입력 받고 문자로 바꿔서 출력합니다.");
string n = Console.ReadLine();
if (n == "1")
{
//string input = "WHATISTHEKEY";
Console.Write("문자 한 줄을 입력하세요: ");
string input = Console.ReadLine();
convertToBraille(input);
}
else if (n == "2")
{
// 특수 문자는 하지 않았어요....
//string[] input = { "OX XO XO OX OX OX OX XO XO XO XO XX",
// "XX XX OO XX XO XO XX XX OX OO OX OX",
// "OX OO OO XO OO XO XO OO OO XO OO XX" };
Console.WriteLine("점자(XO로 이루어진) 세 줄을 입력하세요: ");
string[] input = new string[3];
for (int i = 0; i < 3; i++)
{
Console.Write("{0}번 줄 입력: ",i+1);
input[i] = Console.ReadLine();
}
convertToText(input);
}
}
private static void convertToBraille(string word)
{
Console.Clear();
int len = word.Length;
char[,] tmp = new char[3, 2];
int su = 0;
for (int i = 0; i < len; i++)
{
su = dic[word[i]];
for (int r = 0; r < 3; r++)
{
for (int c = 0; c < 2; c++)
{
if (su % 2 == 1)
tmp[r, c] = 'X';
else
tmp[r, c] = 'O';
su /= 2;
}
}
print(i, tmp);
}
}
private static void print(int v, char[,] munja)
{
for (int x = 0; x < 3; x++)
{
Console.SetCursorPosition(v * 5, x);
for (int y = 0; y < 2; y++)
{
Console.Write(" {0}", munja[x, y]);
}
Console.WriteLine();
}
}
private static void convertToText(string[] input)
{
int su = input[0].Length + 1;
string word = "";
string[] wordSu = new string[su / 3];
for (int i = 0; i < 3; i++)
{
for (int n = 0; n < su-1; n++)
{
if (input[i][n] == ' ')
continue;
else if (input[i][n] == 'O')
wordSu[n / 3] = '0' + wordSu[n / 3];
else if (input[i][n] == 'X')
wordSu[n / 3] = '1' + wordSu[n / 3];
}
}
for (int i = 0; i < su/3; i++)
{
int val = Convert.ToInt32(wordSu[i], 2);
foreach (var k in dic.Keys)
{
if (dic[k] == val)
word += k;
}
}
Console.WriteLine("\n\n {0}", word);
}
}
}
// 아파벳 대문자만 해 보았습니다.