도전 과제 :
주어진 텍스트에서 가장 일반적으로 사용되는 단어의 ASCII 차트를 작성하십시오.
규칙:
- 단어의 일부로
a-z
및A-Z
(알파벳 문자) 만 허용하십시오 . - 케이싱을 무시하십시오 (
She
==she
목적으로). - 다음과 같은 단어는 무시하십시오.
the, and, of, to, a, i, it, in, or, is
명확한 설명은 : 고려
don't
:이 범위에있는 2 개의 다른 '단어'로 간주 될 수a-z
와A-Z
(don
과t
).선택적으로 (지금 공식적으로 사양을 변경하기에는 너무 늦었습니다) 모든 단일 문자 '단어'를 삭제하도록 선택할 수 있습니다 (이는 잠재적으로 무시 목록을 단축시킬 수 있습니다).
주어진 구문을 분석하고 text
(명령 행 인수를 통해 지정된 파일을 읽거나 파이프 된; presume us-ascii
) word frequency chart
다음과 같은 특성으로 우리를 빌드하십시오 .
- 22 개의 가장 일반적인 단어 (내림차순으로 정렬)에 대한 차트를 표시합니다 (아래 예 참조).
- 막대
width
는 단어의 비례 수를 나타냅니다. 한 칸을 추가하고 단어를 인쇄하십시오. - 이 막대 (공백 단어 공백)가 항상 맞는지 확인하십시오 .
bar
+[space]
+word
+[space]
는 항상 <=80
문자 여야합니다 (가능한 막대와 단어 길이가 다른지 확인하십시오. 주파수에서 크게 다르지 않지만 첫 번째). 이러한 구속 조건 내에서 막대 너비를 최대화 하고 막대를 나타내는 주파수에 따라 적절하게 크기를 조정하십시오.
예를 들면 :
예제의 텍스트는 여기 ( Lewis Carroll의 이상한 나라의 앨리스의 모험)에서 찾을 수 있습니다 .
이 특정 텍스트는 다음 차트를 생성합니다.
_________________________________________________________________________ | _________________________________________________________________________ | 여자 | _______________________________________________________________ | 당신 | ____________________________________________________________ | 말했다 | ____________________________________________________ | 앨리스 | ______________________________________________ | 였다 | __________________________________________ | 그 | ___________________________________ | 같이 | _______________________________ | 그녀 | ____________________________ | 와 | ____________________________ | ...에서 | ___________________________ | 에스 | ___________________________ | 티 | _________________________ | 의 위에 | _________________________ | 모두 | ______________________ | 이 | ______________________ | ...에 대한 | ______________________ | 했다 | _____________________ | 그러나 | ____________________ | 있다 | ____________________ | 아니 | ___________________ | 그들 | __________________ | 그래서
참고로, 위의 차트가 작성되는 빈도는 다음과 같습니다.
[( 'she', 553), ( 'you', 481), ( 'said', 462), ( 'alice', 403), ( 'was', 358), ( 'that ', 330), ('as ', 274), ('her ', 248), ('with ', 227), ('at ', 227), ('s ', 219), ('t ' , 218), ( 'on', 204), ( 'all', 200), ( 'this', 181), ( 'for', 179), ( 'had', 178), ( ' 그러나 ', 175), ('be ', 167), ('not ', 166), ('they ', 155), ('so ', 152)]
두 번째 예 (완전한 사양을 구현했는지 확인) :you
링크 된 Alice in Wonderland 파일 에서
발생하는 모든 항목을 다음 으로 바꾸십시오 superlongstringstring
.
________________________________________________________________ | ________________________________________________________________ | 여자 | _______________________________________________________ | 슈퍼 롱 스트링 | _____________________________________________________ | 말했다 | ______________________________________________ | 앨리스 | ________________________________________ | 였다 | _____________________________________ | 그 | ______________________________ | 같이 | ___________________________ | 그녀 | _________________________ | 와 | _________________________ | ...에서 | ________________________ | 에스 | ________________________ | 티 | ______________________ | 의 위에 | _____________________ | 모두 | ___________________ | 이 | ___________________ | ...에 대한 | ___________________ | 했다 | __________________ | 그러나 | _________________ | 있다 | _________________ | 아니 | ________________ | 그들 | ________________ | 그래서
승자:
가장 짧은 솔루션 (언어 당 문자 수 기준). 즐기세요!
편집 : 지금까지 결과를 요약 한 표 (2012-02-15) (원래 사용자 Nas Banov가 추가) :
언어 편안한 엄격한 ========= ======= ====== GolfScript 130143 펄 185 Windows PowerShell 148 199 매스 매 티카 199 루비 185205 유닉스 툴체인 194228 파이썬 183 243 클로저 282 스칼라 311 하스켈 333 어 336 R 298 자바 스크립트 304 354 그루비 321 MATLAB 404 C # 422 스몰 토크 386 PHP 450 F # 452 TSQL 483 507
숫자는 특정 언어로 가장 짧은 솔루션의 길이를 나타냅니다. "엄격한"은 스펙을 완전히 구현하는 솔루션을 의미합니다 ( |____|
막대를 그립니다 . 첫 번째 막대를 한 ____
줄로 닫고 빈도가 높은 긴 단어의 가능성을 설명합니다). "휴식"은 일부 자유가 해결로 단축되었음을 의미합니다.
500 자보다 짧은 솔루션 만 포함됩니다. 언어 목록은 '엄격한'솔루션의 길이에 따라 정렬됩니다. '유닉스 툴체인 (Unix Toolchain)'은 전통적인 * nix 쉘 과 다양한 툴 (grep, tr, sort, uniq, head, perl, awk) 을 사용하는 다양한 솔루션을 나타내는 데 사용됩니다 .
s
와 t
표현 되는 것을 보게되어 기쁘다 .