반응형
대학시절 '프로그래밍 언어론' 과목의 첫 과제가 "언어가 사고의 한계 지을 수 있을까?" 였다. 그땐 아마 언어로 표현하기 힘든 '사랑의 감정' 등이 있으므로 언어로 표현할 수 없는 것도 사고할 수 있기에 언어가 사고를 완전히 한계 지을 순 없다고 했던것으로 기억한다.
몇년간 직업으로 프로그래밍을 해오며 드는 생각은 '적어도 프로그래밍 언어 안에서는 언어가 사고를 한계 짓는다.'이다. 늘 사용하는 언어, 규칙, 설계에 익숙해져 능숙해 지긴 했지만 대신 문제를 접했을때 하는 사고는 이 틀을 벗어나기 힘들어 졌다.
우연찮은 기회에 참 오랜만에도 프로그래밍 문제를 풀어봤다. : Reverse and Add
+ C 풀이
(이클립스는 왜 말썽 ㅡㅜ)
+ C++ 풀이
몇년간 직업으로 프로그래밍을 해오며 드는 생각은 '적어도 프로그래밍 언어 안에서는 언어가 사고를 한계 짓는다.'이다. 늘 사용하는 언어, 규칙, 설계에 익숙해져 능숙해 지긴 했지만 대신 문제를 접했을때 하는 사고는 이 틀을 벗어나기 힘들어 졌다.
우연찮은 기회에 참 오랜만에도 프로그래밍 문제를 풀어봤다. : Reverse and Add
+ C 풀이
void reverse(const char *str, char *r_str, int start, int end)이런..그다지 깨끗하지 않은 코드가 나와 버렸다. 잠도 오고, 내일 출근해야 하니 이만..
{
if(start > end)
return;
r_str[start] = str[end];
r_str[end] = str[start];
reverse(str, r_str, ++start, --end);
}void func(int x, int cnt)
{
char str[100], r_str[100];
sprintf(str, "%d", x);
r_str[strlen(str)] = 0;
reverse(str, r_str, 0, strlen(str)-1);
if(!strcmp(str, r_str)) {
printf("%d:%s\n", cnt, str);
return;
}
func(atoi(str) + atoi(r_str), ++cnt);
}
(이클립스는 왜 말썽 ㅡㅜ)
+ C++ 풀이
void func(int x)대안언어 축제에서 위 문제를 여러가지 언어로 풀이한 것이 여기 있다. 언어만 다르지 해결 방식이 유사한 풀이도 많지만 이해하기 힘든 몇몇 언어의(특히 J) 풀이 방법은 어떨지 정말 궁금하다.
{
ostringstream toa;
toa << x;
string str(toa.str());
string rstr(str.rbegin(), str.rend());
if(str != rstr)
func(atoi(str.c_str())+atoi(rstr.c_str()));
}
반응형