끈을 냄새 맡다


48

Hodor는 쇼에 느린 마음하지만 사랑스러운 캐릭터입니다 왕좌의 게임 ( 그가의 물론뿐만 아니라). 그가 말한 유일한 단어는 '취취' 입니다.

놀랍게도, 어휘가 많지 않지만 Hodor는 항상 정확한 대문자와 문장 부호를 사용하여 완전한 문장으로 말하고 실제로 의미를 전달합니다.

Hodor는 128 개의 ASCII 문자를 모두 표현할 수 있지만 각 문자를 말하기 위해서는 전체 문장이 필요합니다. 각 문자에는 문장으로 하나의 정확한 표현이 있습니다. ASCII 문자열은 문자열의 모든 문자를 해당 Hodor 문장 으로 번역 한 다음 모든 문장을 결합하여 Hodorized 됩니다. 모든 문자는 정확한 문장으로 매핑되므로 모든 ASCII 문자열에는 단일 한 고유 한 Hodorized 표현이 있습니다.

훈제 문자

Hodor는 문자를 나타내는 문장에 4 가지 유형의 문장 부호를 사용하여 128 개의 표현 가능한 문자를 32의 4 개 세트로 나눕니다.

문장은 ...로 끝납니다

  • .ASCII 문자 코드 mod 4가 0 인 경우
  • .[newline][newline] (코드 단락 4가 1 인 경우)
  • ? 코드 모드 4가 2 인 경우
  • ! 코드 모드 4가 3 인 경우

예를 들어, ASCII 문자 코드 b는 98이고 98 mod 4는 2이므로 Hodor의 문장 b은로 끝나야 ?합니다.

문장의 내용은 단어 'hodor'만 포함하는 32 개의 고유 한 문자열 중 하나입니다. 특정 문장 부호 유형의 32 자 각각은 다른 문장 내용 문자열에 매핑됩니다. 따라서 32 개의 문장 내용 문자열과 4 개의 문장 부호 유형을 사용하면 128 개의 ASCII 문자를 별개의 Hodor 문장으로 표현할 수 있습니다.

ASCII 코드 C의 문자에 대한 문장 내용을 결정하려면 계산 (floor(C / 4) + 16) mod 32; 이 목록에서 해당 줄의 콜론 뒤의 모든 것은 문장 내용입니다.

0:Hodor
1:HODOR
2:Hodor hodor
3:Hodor, hodor
4:Hodor hodor hodor
5:Hodor, hodor hodor
6:Hodor hodor hodor hodor
7:Hodor hodor, hodor hodor
8:Hodor hodor hodor hodor hodor
9:Hodor hodor, hodor hodor hodor
10:Hodor hodor hodor hodor hodor hodor
11:Hodor hodor hodor, hodor hodor hodor
12:Hodor hodor hodor hodor hodor hodor hodor
13:Hodor hodor hodor, hodor hodor hodor hodor
14:Hodor hodor hodor hodor hodor hodor hodor hodor
15:Hodor hodor hodor hodor, hodor hodor hodor hodor
16:Hodor hodor hodor hodor hodor hodor hodor hodor hodor
17:Hodor hodor hodor hodor, hodor hodor hodor hodor hodor
18:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
19:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor
20:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
21:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor
22:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
23:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor
24:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
25:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor
26:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
27:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor
28:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
29:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor
30:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor
31:Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor

HODOR특별한 경우를 제외하고 이러한 문자열은 점점 더 많은 것을 결합하여 생성되며 hodor다른 모든 문자열은 모든 단어 사이에 쉼표가 중간에 쉼표가 있음을 알 수 있습니다 (홀수의 경우 쉼표의 "큰 반") 단어 수).

문장 부호와 문장 내용을 결합하면 모든 128 문자에 대해 Hodor 문장을 만들 수 있습니다 (왼쪽 숫자는 문자 코드 임).

0:Hodor hodor hodor hodor hodor hodor hodor hodor hodor.
1:Hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
2:Hodor hodor hodor hodor hodor hodor hodor hodor hodor?
3:Hodor hodor hodor hodor hodor hodor hodor hodor hodor!
4:Hodor hodor hodor hodor, hodor hodor hodor hodor hodor.
5:Hodor hodor hodor hodor, hodor hodor hodor hodor hodor.[newline][newline]
6:Hodor hodor hodor hodor, hodor hodor hodor hodor hodor?
7:Hodor hodor hodor hodor, hodor hodor hodor hodor hodor!
8:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
9:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
10:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
11:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
12:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor.
13:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor.[newline][newline]
14:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor?
15:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor!
16:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
17:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
18:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
19:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
20:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor.
21:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor.[newline][newline]
22:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor?
23:Hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor!
24:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
25:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
26:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
27:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
28:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor.
29:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor.[newline][newline]
30:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor?
31:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor!
32:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
33:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
34:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
35:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
36:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor.
37:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
38:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor?
39:Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor!
40:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
41:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
42:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
43:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
44:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor.
45:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
46:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor?
47:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor!
48:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
49:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
50:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
51:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
52:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor.
53:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
54:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor?
55:Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor!
56:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
57:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
58:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor?
59:Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor!
60:Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor.
61:Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
62:Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor?
63:Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor!
64:Hodor.
65:Hodor.[newline][newline]
66:Hodor?
67:Hodor!
68:HODOR.
69:HODOR.[newline][newline]
70:HODOR?
71:HODOR!
72:Hodor hodor.
73:Hodor hodor.[newline][newline]
74:Hodor hodor?
75:Hodor hodor!
76:Hodor, hodor.
77:Hodor, hodor.[newline][newline]
78:Hodor, hodor?
79:Hodor, hodor!
80:Hodor hodor hodor.
81:Hodor hodor hodor.[newline][newline]
82:Hodor hodor hodor?
83:Hodor hodor hodor!
84:Hodor, hodor hodor.
85:Hodor, hodor hodor.[newline][newline]
86:Hodor, hodor hodor?
87:Hodor, hodor hodor!
88:Hodor hodor hodor hodor.
89:Hodor hodor hodor hodor.[newline][newline]
90:Hodor hodor hodor hodor?
91:Hodor hodor hodor hodor!
92:Hodor hodor, hodor hodor.
93:Hodor hodor, hodor hodor.[newline][newline]
94:Hodor hodor, hodor hodor?
95:Hodor hodor, hodor hodor!
96:Hodor hodor hodor hodor hodor.
97:Hodor hodor hodor hodor hodor.[newline][newline]
98:Hodor hodor hodor hodor hodor?
99:Hodor hodor hodor hodor hodor!
100:Hodor hodor, hodor hodor hodor.
101:Hodor hodor, hodor hodor hodor.[newline][newline]
102:Hodor hodor, hodor hodor hodor?
103:Hodor hodor, hodor hodor hodor!
104:Hodor hodor hodor hodor hodor hodor.
105:Hodor hodor hodor hodor hodor hodor.[newline][newline]
106:Hodor hodor hodor hodor hodor hodor?
107:Hodor hodor hodor hodor hodor hodor!
108:Hodor hodor hodor, hodor hodor hodor.
109:Hodor hodor hodor, hodor hodor hodor.[newline][newline]
110:Hodor hodor hodor, hodor hodor hodor?
111:Hodor hodor hodor, hodor hodor hodor!
112:Hodor hodor hodor hodor hodor hodor hodor.
113:Hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
114:Hodor hodor hodor hodor hodor hodor hodor?
115:Hodor hodor hodor hodor hodor hodor hodor!
116:Hodor hodor hodor, hodor hodor hodor hodor.
117:Hodor hodor hodor, hodor hodor hodor hodor.[newline][newline]
118:Hodor hodor hodor, hodor hodor hodor hodor?
119:Hodor hodor hodor, hodor hodor hodor hodor!
120:Hodor hodor hodor hodor hodor hodor hodor hodor.
121:Hodor hodor hodor hodor hodor hodor hodor hodor.[newline][newline]
122:Hodor hodor hodor hodor hodor hodor hodor hodor?
123:Hodor hodor hodor hodor hodor hodor hodor hodor!
124:Hodor hodor hodor hodor, hodor hodor hodor hodor.
125:Hodor hodor hodor hodor, hodor hodor hodor hodor.[newline][newline]
126:Hodor hodor hodor hodor, hodor hodor hodor hodor?
127:Hodor hodor hodor hodor, hodor hodor hodor hodor!

( [newline]는 실제 개행 문자로 대체됩니다.)

훈제 끈

문자열을 냄새 맡는 것은 실제로 문자열의 모든 문자 문장을 연결하는 것과 관련이 있습니다. 몇 가지주의 사항이 있습니다.

  • 문장 .[newline][newline]부호와 마지막 문장을 제외한 모든 문장 뒤에 공백이 삽입됩니다 .
  • 마지막 문장이로 구두점을 .[newline][newline]찍으면 구두점이 ...뒤에 공백이 없게됩니다.

F0은 다음과 같이 Hodorized

HODOR? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
  • FASCII 코드 70이 있습니다. 70 mod 4는 2이므로 첫 번째 문장은로 끝납니다 ?. (floor(70 / 4) + 16) mod 321이므로 내용은 HODOR입니다.
  • 0ASCII 코드 48을가집니다. 48 mod 4는 0이므로 두 번째 문장은로 끝납니다 .. (floor(48 / 4) + 16) mod 32내용은 28이므로 내용은 15이며 hodor쉼표없이 묶여 있습니다.
  • 후행 공백이 없습니다.

CEE은 다음과 같이 Hodorized

Hodor! HODOR.

HODOR...
  • 마지막 문장 앞에 공백이 없습니다.
  • 마지막 문장 문장 부호가로 변경되었습니다 ....

Hodor's real name is Walder.
Did you know?

다음과 같이 Hodorized입니다

Hodor hodor. Hodor hodor hodor, hodor hodor hodor! Hodor hodor, hodor hodor hodor. Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor, hodor hodor hodor.

Hodor hodor hodor hodor hodor.

Hodor hodor hodor, hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor, hodor hodor hodor? Hodor hodor hodor hodor hodor.

Hodor hodor hodor, hodor hodor hodor.

Hodor hodor, hodor hodor hodor.

Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor.

Hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor, hodor hodor! Hodor hodor hodor hodor hodor.

Hodor hodor hodor, hodor hodor hodor. Hodor hodor, hodor hodor hodor. Hodor hodor, hodor hodor hodor.

Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor? HODOR. Hodor hodor hodor hodor hodor hodor.

Hodor hodor, hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor.

Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor hodor.

Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor? Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor!

( 개행 은 단일 이라고 가정 \n)

도전

ASCII 문자열을 가져 와서 Hodorize하여 결과 문자열을 인쇄하거나 반환하는 프로그램이나 함수를 작성하십시오. 텍스트 파일, 명령 행, stdin, 함수 arg에서 표준 방식으로 입력하십시오.

가장 적은 바이트를 가진 솔루션이 이깁니다. Tiebreaker는 이전 게시물입니다. ( 핸디 바이트 카운터 )


1
이 도전은 시즌 1-4를 다시보고 그가 실제로 무엇을 말하고 있는지 발견하고 싶습니다 . : D
mbomb007

24
다음 버전의 Ook를 찾았습니다 .
ASCIIThenANSI

8
악취 악취. 냄새 냄새 냄새, 냄새 냄새 냄새! 악취 악취, 악취 악취. 냄새 냄새 냄새, 냄새 냄새 냄새! 악취 악취 악취 악취 악취 악취? 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 ...
Adam Davis

1
@AdamDavis Hodorception!
Martin Ender

1
나는이 질문에 HODOR로 대답 하지만 SE와 충돌 할 수 있다고 생각합니다.
caird coinheringaahing

답변:


26

호도! 악취 악취? 악취 악취 악취 악취.

악취 악취, 악취 악취.

악취 악취 악취 악취 악취 악취, 악취 악취 악취 악취 악취 악취. 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취. 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취, 악취 악취 악취 악취 악취 악취 악취.

악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취 악취. 악취 악취 악취 악취? 악취 악취 악취 악취 악취 악취 악취.

악취 악취 악취, 악취 악취 악취 악취. 악취 악취, 악취 악취.

악취 악취 악취 악취 악취 악취!

그것은 단지 언어와 크기 헤더입니다!? 그런 다음 신경 쓰지 말고 지루한 오래된 ASCII로 게시물을 인코딩하십시오. 게시물을 이해하는데 어려움이 있다면 죄송합니다.


CJam, 85 바이트

여기 내 시도가 있습니다. 이 코드의 일부는 내가 작성했을 때 다소 어색한 느낌이 들었으므로 이길 가능성이 있습니다!

qW%{'@^4md('.X1$N?_++a"?!."XLS?f++=\(_)2md","*1$)"hodor":Ha*H@+@(2/\tS*0:X'HtHeu?}%W%

온라인으로 사용해보십시오.

설명

qW%             "Read and reverse the input.";
{               "Map each character c:";
  '@^4md          "Calculate (c^64)/4, which is the sentence content determiner,
                    and c%4, which is the sentence ending determiner.";
  (               "Calculate c%4-1 for later.";
  '.X1$N?_++      "Produce the sentence ending string for the case that c%4==1,
                   which is '.' followed by two copies of:
                    - '.' if this is the first processed (last actual) character
                    - or a newline otherwise.
  a"?!."XLS?f     "Produce a list of the sentence ending strings for the cases
                   that c%4 is 2, 3, or 0, which are:
                    - '?', '!', and '.' if this is the first processed character
                    - or these punctuation marks each followed by a space
                      otherwise.";
  ++=\            "Prepend the sentence ending string for the case that c%4==1
                   to the list for the other cases and select the element at the
                   index (c%4-1)%4 as the correct sentence ending string.";
  (               "Calculate (c^64)/4-1 for later.";
  _)2md           "Calculate the quotient and remainder of the sentence content
                   content determiner divided by 2.";
  ","*            "Produce a string of commas with a length of the remainder
                   calculated above (either 0 or 1).";
  1$)"hodor":Ha*  "Produce a list of copies of 'hodor' with a length of the
                   quotient calculated above plus one.";
  H@+@(2/\t       "Append the string of commas (either empty or one comma) to
                   the middle 'hodor'.";
  S*              "Join the sentence words into a string a space between each.";
  0:X             "Signal that later characters are not the first processed.";
  'Ht             "Capitalize the first letter of the sentence (always 'h').";
  Heu             "Produce the string 'HODOR'.";
  ?               "Select the correct sentence content, which is 'HODOR' if 
                   (c^64)/4-1 is zero or the full sentence produced before that
                   otherwise.";
}%
W%              "Reverse the reversed translation to obtain the forward one.";
                "Implicitly print the result.";

1
더 읽기 쉽게 Hodor에 설명을 게시하십시오.
Magic Octopus Urn

102

Hodor, 602 582 바이트

HoDoRHoDoR HODOR! (Hodor ){r='';Hodor!? =Hodor .Hodor!? hodor? HODOR? hodor! hodor. h;HODOR{}(Hodor? =0;Hodor? <Hodor!? ;++Hodor? ){hodor =Hodor .hodor hHODOR rHodor... odhodor? hodor?!? hodor. (Hodor? );HODOR? =(0|hodor /4+16)%32;r+='H';HODOR =HHHOOODDDDOOORRR!!! hodor?!? rrHODOR HODOR!?! (0|HODOR? /2+2);HOdor!!!(HODOR? %2)HODOR [0|(HODOR? +1)/4]=',';r+=HODOR? ==1?'ODOR':HODOR .HODOR?! oHodor? HODOR? (' hodor').Hodor Hodor!? Hodor? hodor hodor? (2);r+=['. ',Hodor? ==Hodor!? -1?'....':'.\HODOR? \HODOR? ','? ','! '][hodor %4]}HODOR:: r.Hodor Hodor!? Hodor? hodor hodor? (0,-1)}

다음은 골프 용 버전입니다 ... 알다시피 ... 가독성 :

HoDoRHoDoR HODOR! (Hodor ){
    r='';
    Hodor!? =Hodor .Hodor!? hodor? HODOR? hodor! hodor. h;
    HODOR{}(Hodor? =0;Hodor? <Hodor!? ;++Hodor? ){
        hodor =Hodor .hodor hHODOR rHodor... odhodor? hodor?!? hodor. (Hodor? );
        HODOR? =(0|hodor /4+16)%32;
        r+='H';
        HODOR =HHHOOODDDDOOORRR!!! hodor?!? rrHODOR HODOR!?! (0|HODOR? /2+2);
        HOdor!!!(HODOR? %2)HODOR [0|(HODOR? +1)/4]=',';
        r+=HODOR? ==1?'ODOR':HODOR .HODOR?! oHodor? HODOR? (' hodor').Hodor Hodor!? Hodor? hodor hodor? (2);
        r+=['. ',Hodor? ==Hodor!? -1?'....':'.\HODOR? \HODOR? ','? ','! '][hodor %4]
    }
    HODOR:: r.Hodor Hodor!? Hodor? hodor hodor? (0,-1)
}

네, Hodor 라는 언어가 있습니다 . (그리고 그것은 새롭습니다.) 본질적으로 JavaScript를 문자열로 대체 한 것입니다. 해당 JS는 다음과 같습니다.

function f(s){
  r='';
  l=s.length;
  for(i=0;i<l;++i){
    c=s.charCodeAt(i);
    n=(0|c/4+16)%32;
    r+='H';
    a=new Array(0|n/2+2);
    if(n%2)a[0|(n+1)/4]=',';
    r+=n==1?'ODOR':a.join(' hodor').slice(2);
    r+=['. ',i==l-1?'....':'.\n\n','? ','! '][c%4]
  }
  return r.slice(0,-1)
}

따라서 제 제출은 문자열을 가져 와서 Hodorised 동등 물을 반환하는 함수입니다.

불행히도, Hodor의 실제 작동 방식에 대한 정보는 없지만 (통역사의 소스 코드는 제외) JS2HD 번역 스크립트와 함께 제공됩니다.

Hodor의 대체는 문자열 리터럴 내에서도 적용됩니다. 따라서 위의 함수를 다음과 같이 호출 할 수 있습니다.

HODOR! ("CEE")

다음을 사용할 수도 있습니다.

HODOR! ("Hodor... HooodorrHodor HooodorrHodor ")

여기서 Hodor... HooodorrHodor HooodorrHodor치환한다 CEE. 이것이 당신의 캐릭터 자체가 포함 된 경우 특정 형태의 것을 의미합니다 Hodor당신이 것 가지고 그것을 인코딩, 또는 다른 사람이 대체됩니다. 예를 들어 "Hodor. "실제로 "m"JavaScript입니다. 캐치는 문자 [dhor](대소 문자를 구분하지 않음)가 전혀 바뀌지 않았기 때문에 이것을 인코딩 할 수도 없습니다. 한 가지 해결책은 리터럴을 분할 "Hod"+"or. "하여 대체 단계에서 디코딩 할 항목을 찾지 못하도록하는 것입니다.


36
이것은 나를 너무 행복하게 만듭니다.
Alex A.

1
@AlexA. "냄새! 냄새 냄새! 냄새?"
MikeTheLiar

마지막 문장의 문장 부호는 ...개행 문자 가 아니라 개행 문자 ....입니다.
mbomb007

1
@ mbomb007 네 번째 .는 무엇이든 대체 할 수 있습니다. 일반적으로 존재하는 공간의 자리 표시 자이며 final로 제거됩니다 r.slice(0,-1).
Martin Ender

1
582 바이트 만의 -65535 보너스 Hodor 프로그래밍 언어를 사용하여 이 답변을 점수 제공 -59713을 ;-)이 답변가 분명 승자와 수
조쉬

5

파이썬 2, 219 198 바이트

여기 사용해보십시오

Martin의 JavaScript와 동일한 방법을 사용하며 Python에서 몇 바이트 더 짧습니다. 파이썬 2.7의 편리한 정수 나누기를 사용합니다. 골프를하신 Sp3000에게 감사합니다.

def f(s,r='',i=2):
    for j in s:c=ord(j);n=(c/4+16)%32;a=['']*(n/2+2);a[-~n/4]=','[:n%2];r+='H'+[' hodor'.join(a)[2:],'ODOR'][n==1]+['. ',['.\n\n',4*'.'][i>len(s)],'? ','! '][c%4];i+=1
    return r[:-1]

그리고 당신의 엔터테인먼트와 나의 즐거움과 호기심을 위해서 ...

여기 람다 함수입니다 !

파이썬 2, 349

위 프로그램의 이전 버전과 함께 여기 에서 시도하십시오 .

f=lambda s:'H'.join(['']+[('ODOR'if(ord(s[i])/4+16)%32==1 else' hodor'.join((['']*(((ord(s[i])/4+16)%32)/2+2))[:((ord(s[i])/4+16)%32+1)/4]+([',']if ord(s[i])/4%2 else[''])+(['']*(((ord(s[i])/4+16)%32)/2+2))[((ord(s[i])/4+16)%32+1)/4+1*(ord(s[i])/4%2<1):])[2:])+['. ',4*'.'if i+2>len(s)else'.\n\n','? ','! '][ord(s[i])%4]for i in range(len(s))])[:-1]

이를 만들려면 좀 더 심도 있고 깊은 대체물과 창의력이 필요했습니다.

  • 모두 j로 교체됩니다 s[i].
  • 모두 c로 교체됩니다 ord(s[i]).
  • 모두 n로 교체됩니다 (ord(s[i])/4+16)%32.

    • 필요한 곳만 제외하고 대신 n%2사용 (ord(s[i])/4%2합니다.
  • 마지막으로 a로 대체됩니다 (['']*(((ord(s[i])/4+16)%32)/2+2))[:((ord(s[i])/4+16)%32+1)/4]+([',']if ord(s[i])/4%2 else[''])+(['']*(((ord(s[i])/4+16)%32)/2+2))[((ord(s[i])/4+16)%32+1)/4+1*(ord(s[i])/4%2<1):].

    • 값을 할당 할 수 없기 때문에 목록을 반으로 나누고 조건부로 쉼표를 추가 한 다음 마지막 반을 다시 추가해야합니다.

1
나는 생각 198을 준다?
Sp3000

쿨, 나는 당신이 [:0]그런 식으로 빈 문자열을 얻을 수있는 줄 몰랐어요 .
mbomb007

4

MUMPS , 284 236 바이트

새 버전 : 잠시 동안 본 후에 더 짧은 버전 (236 바이트)을 생각해 냈습니다.

H(H) S L=$L(H) F O=1:1:L D
 .S D=$A($E(H,O)),R=D#4,P=$S('R:".",R=2:"?",R=3:"!",O=L:"...",1:"."_$C(10,10)),E=D\4+16#32,(S,Q)="hodor" F F=1:1:E\2 S Q=S_$S(E#2&(F=(E\4+1)):", ",1:" ")_Q,$E(Q)="H" S:E=1 Q="HODOR"
 .W Q_P_$S(L=O:"",1:" ")
 Q

첫 번째 버전 :

H(H) S L=$L(H) F O=1:1:L D
 .S S=$C(10),D=$A($E(H,O)),R=D#4,P=$S('R:".",R=2:"?",R=3:"!",O=L:"...",1:"."_S_S),E=D\4+16#32,(S,Q)="hodor ",G=6*(E+1\4) F F=1:1:E\2 S Q=S_Q
 .S Q=$E(Q,1,$L(Q)-1) S:E=1 Q="HODOR" S:E#2&(E>2) Q=$E(Q,1,G-1)_","_$E(Q,G,99) S $E(Q)="H" W Q_P_$S(L=O:"",1:" ")
 Q

젠장, CJam! 어쩌면 ObjectScript (목록 연산자가 있음)를 사용하여 바이트를 절약 할 수 는 있지만 의심합니다.

다음은 다소 장황한 버전입니다.

VH(H)
 F I=1:1:$L(H) D              ; iterate over input string H
 .S O=$E(H,I)                 ; O is a single char
 .S D=$A(O)                   ; ascii code (dec)
 .S R=D#4                     ; #: mod, $S: $SELECT(condition:result,cond...)
 .S P=$S(R=0:".",R=2:"?",R=3:"!",I=$L(H):"...",1:"."_$C(10)_$C(10))
 .S E=D\4+16#32               ; \: integer division
 .S (S,Q)="hodor "            ; hodor
 .F J=1:1:E\2 S Q=S_Q         ; build hodor -"list"
 .I E=1 S Q="HODOR"           ; HODOR
 .I E'=1 S Q=$E(Q,1,$L(Q)-1)  ; remove trailing _
 .;                           ; insert ,
 .I E#2,E>2 S Q=$E(Q,1,6*(E+1\4)-1)_","_$E(Q,6*(E+1\4),99)
 .S $E(Q)="H"                 ; ^h->^H
 .W Q_P_$S($L(H)=I:"",1:" ")  ; Write and remove trailing _
 Q

1

C # 378 바이트

string x(string h){string[]f={". ",".\n\n","? ","! "};string[]a=new string[32];string s="";int i,j,c=0;for(i=0;i<32;i++){a[i]="hodor";if(i==1)a[i]=a[i].ToUpper();else{for(j=0;j<i/2;j++){if(i%2==1&&j==c/2)a[i]+=",";a[i]+=" hodor";}if(i%2==1)c++;a[i]=char.ToUpper(a[i][0])+a[i].Substring(1);}}foreach(char b in h){s+=a[(int)(Math.Floor((double)b/4)+16)%32]+f[(int)b%4];}return s;}

골프는 처음이야, 나랑 맨손으로


1
프로그래밍 퍼즐 및 코드 골프 스택 교환에 오신 것을 환영합니다! 대신 단일 문자 함수 이름을 사용하여 일부 바이트를 저장할 수 있습니다 hodor. 당신은 아마도 (후 예를 들어, 어떤 경우되지 않은 줄 바꿈 모두 여러 공백을 제거 할 수 있습니다 for데르 if). 그러나 using지시어 수를 세 System거나 정규화해야 Console합니다.
Martin Ender

도움을 주셔서 감사합니다. 나는 바이트를 개선하고 절약하려고 노력할 것입니다 : D.
GonacFaria

C # 코드를 골프로 칠할 때 특정 액세스 수정자를 가질 필요는 없습니다. public키워드를 삭제하여 바이트를 절약 할 수 있습니다 . 또한 []배열을 보유하는 변수의 실제 이름과 사이의 공백을 제거 할 수도 있습니다 . 또한 foreach에서 문자열의 모든 문자를 반복 할 때 문자열을 char 배열로 변환 할 필요는 없습니다. 당신은 단순히 할 수 있습니다 foreach (char c in h).
ProgramFOX

1
편집했습니다. 감사합니다. 378 바이트로 줄이십시오. 재미 있습니다.
GonacFaria

0

C ++, 547452 바이트

void H(string s){string e[4]={".",".\n\n","?","!"};string r;char c,m;int n=s.size();for(int i=0;i<n;i++){r.clear();c=s.at(i);m=c%4;r.append(A(c));r.append(e[m]);if(i==n-1){int k=r.size();r.pop_back();if(m==1){r.pop_back();r.append("..");}}cout<<r.c_str();}}string A(char x){string h("Hodor");int c=((int )floor(x/4)+16)%32;int n=c;bool o=(c%2==1);if(n==1)h="HODOR";else{while(n>1){h.append("hodor");if(o&&n==(int )(c/2)){h.append(",");}n--;}}return h;}

언 골프 드 :

#include <iostream>
#include <math.h>
using namespace std;
void Hodorise(string s);
string FromAscii(char c);

void Hodorise(string s)
{
string end[4] = {". ",".\n\n","? ","! "};
string res;
char c, m;
int n = s.size();
for (int i = 0; i < n; i++)
{
res.clear();
c = s.at(i);
m = c % 4;
res.append(FromAscii(c));
res.append(end[m]);
if (i == n - 1)
{
int k = res.size();
res.pop_back();
if (m == 1)
{
res.pop_back();
res.append("..");
}

}
cout << res.c_str();
}
}

string FromAscii(char c)
{
string hodor("Hodor");
int code = ((int)floor(c / 4) + 16) % 32;
int n = code;
bool odd = (code % 2 == 1);
if (n == 1)hodor = "HODOR";
else
{
while (n > 1)
{
hodor.append(" hodor");
if (odd && n==(int)(code/2))
{
hodor.append(",");
}
n--;
}
}
return hodor;
}
#define N 3
int main()
{
string x[N] = { "F0", "CEE", "Hodor's real name is Walder.\nDid you know ?" };
for (size_t i = 0; i < N; i++)
{
cout << endl << x[i].c_str() << ":\n";
Hodorise(x[i]);
}

char c;
cin >> c;
return 0;
}

1
505 바이트 만 계산합니다. \r\n대신 줄 바꿈을 계산 했습니까 \n? 또한 왜 대부분의 줄 바꿈이 필요합니까?
Martin Ender

2
제출을 포함 할 필요가 #include, using namespace std;
Potatoswatter

답변을 제출하는 대부분의 사람들은 #include 또는 imports 등을 포함하지 않습니다
bacchusbeale
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.