Accelerated C++ 예제 source 있으신 분 있나요?

winner의 이미지

복습하고 있는데 acceleratedcpp.com 이 예전과 뭔가 다르더군요...

제 기억이 맞다면 연습문제는 source 가 없었던 것 같습니다.
제가 찾는 것은 연습문제이긴 한데 확인해보기 위해서 이렇게 글을 올립니다.

Chapter 5 의 연습문제 5-1 은 무슨 이야기인지 전혀 모르겠는데 이해하시는 분 계신가요?
AWK 를 공부해야 하는 건지 원...

blueskya의 이미지

소스는 없습니다.

그런데...

원서인지 번역서인지는 모르겠지만..

1.2.3 번의 설명이 잘되어있는데...ㅡㅡ;;

1번은 이해가 가시죠?

2.그문장들을 정렬하죠. (descending이나 ascending 상관없습니다.)

The quick brown fox
quick brown fox The
brown fox The quick
fox The quick brown

정렬후...

brown fox The quick
fox The quick brown
quick brown fox The
The quick brown fox

이렇게 되죠?

자 그러면 3번을 보죠

brown fox The quick 하나만 예를들죠..

3번에 따르면

brown fox The quick

이문장을 시작하는 위치는 The입니다. 맞죠?

이 때 순환색인을 작성하시고. 문장을 되돌리고, 라는 말이나오는데

순환색인은 결국...The라는 단어를 가지고 색인을 찾으면 연관된 quick까지 같이 뿌려주는 것을 말합니다. 즉 시작 색인 단어는 The 입니다.

이를 순환색인으로 만들면 결국 The라는 색인을 검색했을 때 The Quick을 가지고 오게되죠. 같은 이치로 끝 색인 단어는 fox죠..

결국 brown fox를 가지고 오는거죠. 설명이 좀 허접합니다. 글로 설명하기가 좀 그렇네요..쩝;;;;

자.... 원래 문장으로 만들려면 The부터 시작한 문장 The quick를 잘라야하죠? 그리고 끝나는것은 brown fox죠?

이 때가 "순환색인 작성, 문장 되돌리기"를 모두 한것입니다.

그리고 하고나서 만들어진 색인을 출력하면 결국 The quick과 browon fox 이렇게 두개로 나뉘어 출력되는거죠.

나머지도 역시나 같은원리로...2년전에 공부한거라 양해를~ ㅡㅡ;;

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

winner의 이미지

우선 2번 정렬까지는 이해했습니다.

저는 번역서를 갖고 있는데 어떻게 정렬하라는 거야라고 약간 의문이긴 했습니다만 추측대로군요.
하지만 3번에서 책에는 "회전문장을 원래대로 되돌리고 순환색인을 작성합니다." 라고 나옵니다.
뭔가 이상하다 했죠...
번역이 이상한 거였군요.

그건 그렇지만 skyoon 씨의 글도 좀...

제 머리가 많이 딸립니다...

연습문제 source 가 없다는 말씀은 원래 acceleratedcpp.com 에도 없었다는 말씀인가요?

Accelerated C++ 와 Essential C++ 를 복습하고 있습니다.
그런데 왠지 번역서의 정오표를 만드는 느낌이라는... 특히 Essential...

다시 읽고 직접 coding 해보니 읽기만 할 때와 느낌이 다르더군요.

개인적으로 Andrew Koenig 의 책과 예제 source 를 대단히 좋아하는데 직접 coding 해보니
왜이리 overloading 을 많이 하는지(학생성적을 만드는 grade 가 완전 쥐약) coding 하는 제 자신이 헷갈리더군요.

Stanly Lippman 의 책은 많은 분들이 좋아하지만 Essential 의 source 가 조금 옛날 style 같아서 저는 별로였는데
다시 읽어보니(coding 은 안 하고 있습니다.) 익숙해져서 그런지 또 느낌이 괜찮더군요.
(그렇다 하더라도 전체적인 제 생각은 역시 많은 점수는 못 주겠는 것은 또 어쩔 수 없더군요.)

제게 주관이라는 것이 없는 것인지...

blueskya의 이미지

주어진 문장은 The quick brown fox 이 문장이죠?

이문장의 시작 색인 단어는 The이고 끝 색인 단어는 fox입니다.

그러면 brown fox The quick 를 가지고 다시 이야기하죠.

여기서 brown이 시작단어고 quick가 끝단어입니다.

그러면 "회전문장을 원래대로 되돌리고 순환색인을 작성합니다"를 하나씩 해보죠.

이문장에서 원래 시작색인과 끝색인의 위치를 찾습니다.

그러면 정상적인 문장으로 돌리기위해서는 어디부터 어디까지 잘라야하는지 알 수 있죠?

brown은 문장의 시작단어이고 fox는 끝색인이며 The는 시작색인이고 quick은 문장의 끝단어입니다.

그러면 시작색인과 문장의 끝단어가 연결된 것이 같이 잘라지면 The quick과 brown fox가 되죠? 뭐 반대로 잘라도 상관은 없겠죠.

같은 원리로....

fox The quick brown를 해보면

fox는 끝색인이고 The는 시작색인이며 quick brown은 문장의 끝단어들(문장의 일부)입니다.

그러면 시작색인과 문장의끝단어들을 같이 자르면 The quick brown과 fox가 되죠?

순환색인을 작성한다는 것은 색인과 관련있는? 연결된? 단어들을 같이 하나의 색인으로 만드는 것으로 보셔도 됩니다.

원래 원리는 The라는 인덱스를 가지고 관련된 단어들을 다시 색인하여 같이 표현하는 것입니다만...

이렇게 순환색인을 작성하면 The라는 인덱스는 결국 brown fox The quick에서 보면 The quick를 나타내게 되는거죠.

그러면 이것들을 원래 문장 순서 대로 만들어 두개의 색인(시작색인 The와 끝색인 fox)을 출력하면 결국 아래와 같이 됩니다.

           The quick     brown fox
The quick brown     fox
                    The     quick brown fox
                               The quick brown fox

이렇게 관련단어와 같이 통채로 출력이 되는것이죠.

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

winner의 이미지

사실 제가 이해를 못했던 것은 permuted index 자체에 대한 것이었습니다.
문제를 이해못하니 해결을 위한 algorithm 역시 알 수가 없었던 거죠.

Permuted index 에 대해서 이리저리 찾다가
http://www.codeproject.com/libray/PermutedIndex.asp

를 보고 나서 이해했습니다.

제가 가장 이해 못했던 것은 문장순서가 왜 그렇게 나오는 것인가 했거든요.
위 link 에서 index 의 시작위치만 다른 색으로 표시하니 미묘한 느낌과 함께 이해가 가기 시작하더라구요...
(저는 머리가 돌이라 눈으로 명확히 구분이 안되면 이해가 안 가나 봅니다.)

2단 출력의 오른편이 색인이었던 거군요.
부분 match 를 통해서 검색을 하기 위한 것으로 이해했습니다.

말씀하신 원리, 즉 관련된 단어들을 다시 색인하여 같이 표현한다는 말씀은 아직 이해못했지만
(man page 가 permuted index 를 사용한다고 하니 그런 원리를 쓰고 있는거겠죠?)
일단 알고 싶은 것은 다 이해한 것 같고 앞으로 공부하다보면 말씀하신 것도 알 날이 오겠죠...

적어주신 자세한 내용은 제가 coding 할 때 많은 도움이 되리라 봅니다.
단어들의 container 를 만든 후 반복자를 이용해서 index 시작위치를 표현하는
container 를 만든 후 algorithm 을 전개할 것을 생각했습니다.

돌머리인 저를 가르쳐주시기 위해 두번의 자세한 답글, 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.