오늘 당신의 임무는 텍스트 압축기를 발명하는 것입니다.
태스크
두 가지 함수를 작성합니다.
패커 ASCII 문자 (U + 007F에 U + 0000)의 문자열을 수락 가능한 최소의 문자를 포함하는, 유니 코드 문자열 (U + 10FFFF에 U + 0000)를 출력하는 함수이다.
해석기는 인코딩 된 유니 코드 문자열을 받아 정확하게 원래 ASCII 문자열을 출력하는 함수이다.
입력
승인 된 유일한 입력은 ASCII 문자열 (패커 용)과 압축 유니 코드 문자열 (포장 풀기 용)입니다. 사용자 입력 없음, 인터넷 연결 없음, 파일 시스템 사용 없음.
함수는이 영어 단어 목록에 액세스 할 수 있습니다 . 이 목록을 로컬 txt 파일로 사용하거나 소스 코드의 내용을 문자열 또는 문자열 배열 로 복사 할 수 있습니다 .
함수에서 아래 스 니펫을 하드 코딩 할 수 없습니다.
산출
두 기능 모두에 대해 승인 된 유일한 출력은 문자열입니다.
언 패커의 출력은 패커의 입력과 정확히 동일한 문자를 포함해야합니다.
입력 및 출력은 모든 유니 코드 (UTF-8 / 16 / 32, GB18030, ...)를 지원하는 모든 문자 인코딩을 사용할 수 있습니다. 점수는 출력의 유니 코드 문자 수에만 의존하기 때문입니다. 그래도 어떤 인코딩을 사용하고 있는지 확인하십시오.
출력에서 유니 코드 문자 수를 계산하려면 다음 도구를 사용할 수 있습니다. http://mothereff.in/byte-counter
채점
출품작은 10 개의 다음 텍스트 스 니펫 (이 포럼에서 취한)을 포장하고 풀 수 있어야합니다.
점수는 10 묶음 문자열의 크기 (유니 코드 문자) + 두 함수의 크기 (유니 코드 문자)의 합입니다.
사전을 사용하는 경우 크기를 세지 마십시오.
각 스 니펫의 "점수"와 압축 버전을 입력하십시오.
최저 점수가 이깁니다.
데이터
점수를 계산하기 위해 인코딩 할 스 니펫은 다음과 같습니다.
1 : Rick Roll의 가사 (1870b) : 우리는 골프를 코딩하는 데 익숙 하지 않습니다. 규칙을 알고 있습니다.
우린 사랑할 사람이 없어 당신은 규칙을 알고 나도 전념은 제가 생각하는 것입니다 당신은 다른 사람에게서 이것을 얻지 못할 것입니다 기분이 어떤지 말해주고 싶어 이해하게 해줘 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마 우리는 오랫동안 서로를 알고 있었다 당신의 마음은 아프지 만 넌 너무 부끄러워 안에 우리 둘 다 무슨 일이 있었는지 알고 우리는 게임을 알고 있고 그것을 할 것입니다 기분이 어떤지 물어 보면 네가 너무 눈이 멀다고 말하지 마 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마 (오, 포기 해) (오, 포기 해) (오) 절대 포기하지 않을거야 (너를 포기하다) (오) 절대 포기하지 않을거야 (너를 포기하다) 우리는 오랫동안 서로를 알고 당신의 마음은 아프지 만 넌 너무 부끄러워 안에 우리 둘 다 무슨 일이 있었는지 알고 우리는 게임을 알고 있고 그것을 할 것입니다 기분이 어떤지 말해주고 싶어 이해하게 해줘 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마 절대 포기하지 않을거야 절대 실망시키지 않을거야 절대 돌아 다니지 않고 당신을 버리지 않을 것입니다 울지 않을거야 작별 인사를하지 않을거야 거짓말을하지 말고 다치게 하지마
2 : 골퍼 (412b) : 골프 ASCII 예술
'\. . |> 18 >>
\. '. |
O >>. 'O |
\. |
/ \. |
/ /. ' |
jgs ^^^^^^^`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3 : 숫자 다이아몬드 (233b) : 이 다이아몬드 인쇄
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
123456787654321
1234567654321
12345654321
123454321
1234321
12321
121
1
4 : 알파벳 4 번 (107b) : 알파벳을 4 번 인쇄합니다
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5 : Old McDonald의 가사 (203b) : Old MacDonald 기능
올드 맥도날드는 농장, EIEIO, 그 농장에서 그는 소, EIEIO, 여기는 moo moo가 있고 거기에는 moo moo가 있습니다. 여기 moo, moo, 어디서나 moo moo, 오래된 맥도날드는 농장, EIEIO!
6 : Rock around the clock의 가사 (144b) : Rock Around the Clock
1시, 2시, 3시, 4시, 5시, 6시, 7시, 8시, 9시, 10시, 11시, 12시, 우리는 오늘 밤 24 시간 내내 뛸거야
7 : Hello World (296b) : ASCII 예술로 세상에 "Hello"라고 말하십시오 .
_ _ _ _ _ _ _
| | | | ___ | | | ___ __ _____ _ __ | | __ | | |
| | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | |
| _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ |
| _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_)
| /
8 : 아일랜드의 축복 (210b) : 구 아일랜드의 축복
당신을 만나기 위해 길을 올라가 길 바랍니다 바람이 항상 당신의 뒤에 있기를 바랍니다 태양이 당신의 얼굴에 따뜻해 지길 바랍니다 들판에 비가 내립니다 우리가 다시 만날 때까지 하나님 께서 당신의 손에 움켜 쥐시기를 바랍니다.
9 : 노파 가사 가 있었다 (1208b) : 노부부 가 있었다
파리를 삼킨 노파가있었습니다. 그녀가 왜 그 파리를 삼 켰는 지 모르겠어요 아마도 그녀는 죽을 것이다. 거미를 삼킨 노부가 있었어요 그것은 그녀의 내부에서 흔들리며 울부 짖으며 울렸다. 그녀는 거미를 삼켜 파리를 잡았습니다. 그녀가 왜 그 파리를 삼 켰는 지 모르겠어요 아마도 그녀는 죽을 것이다. 새를 삼킨 노부가 있었어요 새를 삼키는 것이 어리석은 일입니다. 그녀는 거미를 잡기 위해 새를 삼켰습니다. 그녀는 거미를 삼켜 파리를 잡았습니다. 그녀가 왜 그 파리를 삼 켰는 지 모르겠어요 아마도 그녀는 죽을 것이다. 고양이를 삼킨 노부가 있었어요 고양이를 삼킨다 고 상상해보십시오. 그녀는 새를 잡기 위해 고양이를 삼 켰고 그녀는 거미를 잡기 위해 새를 삼켰습니다. 그녀는 거미를 삼켜 파리를 잡았습니다. 그녀가 왜 그 파리를 삼 켰는 지 모르겠어요 아마도 그녀는 죽을 것이다. 개를 삼킨 노부가 있었어요 개를 삼키는 돼지. 그녀는 개를 삼켜 고양이를 잡았습니다. 그녀는 새를 잡기 위해 고양이를 삼 켰고 그녀는 거미를 잡기 위해 새를 삼켰습니다. 그녀는 거미를 삼켜 파리를 잡았습니다. 그녀가 왜 그 파리를 삼 켰는 지 모르겠어요 아마도 그녀는 죽을 것이다. 말을 삼킨 노부가 있었어요 그녀는 물론 죽었다.
10 : 게 티즈 버그 주소 (1452b) : 게 티즈 버그 주소는 얼마나 임의적인가
4 점 7 년 전, 우리 조상들은이 대륙에 새로운 나라를 낳았고 자유를 생각하며 모든 사람이 동등하게 창조되었다는 제안에 전념했습니다. 이제 우리는 위대한 내전에 참여하여 그 국가 또는 그렇게 고 안되고 헌신 된 어떤 국가가 오래 견딜 수 있는지 테스트합니다. 우리는 그 전쟁의 큰 전장에서 만납니다. 우리는 그 분야의 일부를 그 나라가 살 수 있도록 목숨을 바친 사람들을위한 마지막 휴게소로 바쳤습니다. 우리가이 작업을 수행하는 것은 전적으로 적합하고 적절합니다. 그러나 더 큰 의미에서, 우리는 헌신 할 수없고, 헌신 할 수 없으며,이 땅을 거둘 수 없습니다. 이곳에서 어려움을 겪고있는 살아남은 자와 용감한 자들은 그것을 가라 앉히거나 감당할 수없는 우리의 가난한 힘보다 훨씬 더 헌신했습니다. 세상은 우리가 여기서 말하는 것을 거의 기억하지 못하고 오래 기억하지 않을 것입니다. 그러나 그들이 여기서 한 일을 결코 잊지 못할 것입니다. 오히려 여기에서 싸운 사람들이 지금까지 고귀하게 발전한 미완성 된 일에 헌신하는 것이 우리를위한 것입니다. 오히려 우리는 우리 앞에 남아있는 위대한 임무에 헌신하기 위해 노력하는 것입니다.이 영광스러운 죽음으로부터 우리는 그들이 헌신의 마지막 수단을 모두 제공 한 원인에 대한 헌신을 강화합니다. 이 나라는 하나님의 밑에 자유의 새로운 탄생을 겪을 것이며, 사람들이 사람들을 위해, 정부가 땅에서 멸망하지 않을 것이라는 헛된 죽음을 겪었다.
총계 (압축되지 않은) : 6135 자 / 바이트.
즐기세요!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...