Bir Dize Hodorize


48

Hodor gösterisi üzerinde yavaş fikirli ama sevdirmek karakteridir Thrones Game ( o var içinde kitapların elbette yanı). Söylediği tek kelime 'onur' .

Şaşırtıcı bir şekilde, çok fazla kelime bilgisine sahip olmamasına rağmen, Hodor her zaman doğru büyük harf kullanımı ve noktalama işaretleriyle tam cümleler halinde konuşur ve aslında anlam ifade eder.

Hodor, 128 ASCII karakterinin tümünü ifade etme yeteneğine sahiptir , ancak her birini söylemesi tamamen cümledir. Her karakterin cümle olarak tek ve kesin bir temsili vardır. Bir ASCII dizgisi, dizgideki tüm karakterleri Hodor cümle eşdeğerlerine çevirip ardından tüm cümleleri birleştirerek Hodorize edilir. Tüm karakterler kesin cümlelerle eşlendiğinden, tüm ASCII dizelerinin tek ve benzersiz bir Hodorized gösterimi vardır.

Hodorizing Karakterleri

Hodor, 128 ifade karakterini, karakterleri temsil eden cümleler için 4 farklı noktalama işaretini kullanarak 4'lük 32 kümeye böler.

Cümle biter ...

  • .ASCII karakter kodu mod 4 ise 0.
  • .[newline][newline] (yeni bir paragraf için) mod 4 kod 1 ise.
  • ? mod 4 kod 2 ise.
  • ! mod 4 kod 3 ise.

Örneğin, ASCII karakter kodu b98 ve 98 mod 4 2'dir, bu nedenle Hodor'un cümlesinin bsona ereceği kesindir ?.

Cümlenin içeriği sadece 'hodor' kelimesini içeren 32 farklı diziden biridir. Belirli bir noktalama türünün 32 karakterinden her biri farklı bir cümle içerik dizgisine eşlenir. Böylece 32 cümle içerik dizgisi ve 4 noktalama türü ile 128 ASCII karakterinin tümü farklı Hodor cümleleri olarak gösterilebilir.

ASCII kod C olan bir karakter için cümle içeriğini belirlemek için, hesaplayın (floor(C / 4) + 16) mod 32; Bu listedeki o satırdaki iki noktadan sonraki her şey cümle içeriğidir:

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Özel durum dışında , bu dizgilerin gittikçe daha fazla hodorkişinin katılmasıyla üretildiği ve diğer her dizginin tüm sözcükler arasında virgülün ortasında (tek bir virgülün "büyük yarısı" hakkıyla) virgül olduğu görülebilir. kelime sayısı).

Noktalama işaretiyle cümle içeriğine katılarak, 128 karakterin tümü için Hodor cümleleri oluşturabiliriz (soldaki sayı karakter kodudur):

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]lar gerçek newlines ile değiştirilmelidir.)

Hodorizing Strings

Bir dizgeyi silmek sadece dize karakterlerinin tüm karakter cümlelerini bir araya getirmeyi içerir. Sadece birkaç uyarı var:

  • .[newline][newline]Noktalı olanlar ve son cümle hariç her cümlenin ardından bir boşluk eklenir .
  • Son cümle ile noktalama yapılırsa, noktalama .[newline][newline]işaretleri olur ve ...sonunda boşluk kalmaz.

Örnekler

Dize F0olarak Hodorized

HODOR? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
  • FASCII kod 70'e sahiptir. 70 mod 4 2'dir, yani ilk cümle biter ?. (floor(70 / 4) + 16) mod 321 yani içerik HODOR.
  • 0ASCII kod 48'e sahiptir. 48 mod 4, 0 dır, yani ikinci cümle biter .. (floor(48 / 4) + 16) mod 3228 olduğu için içerik 15 hodor'dir ve virgül içermez.
  • Sonda boşluk olmadığına dikkat edin.

Dize CEEolarak Hodorized

Hodor! HODOR.

HODOR...
  • Son cümleden önce yer olmadığına dikkat edin.
  • Son cümle noktalama işaretinin değiştirildiğine dikkat edin ....

Dize

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

olarak 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!

( newline varsayalım bekar \n)

Meydan okuma

Bir ASCII dizgisinde yer alan ve onu sonuçlandıran dizgeyi yazdırmak veya döndürmek için Hodorizes işlevini çalıştıran bir program veya işlev yazın. Herhangi bir standart şekilde girdi alın (metin dosyasından, komut satırından, stdin, function arg).

En az bayt olan çözüm kazanır. Tiebreaker daha önce yayınlandı. ( Kullanışlı bayt sayacı. )


1
Bu zorluk beni 1-4. Sezonları tekrar izlemek ve gerçekte ne dediğini keşfetmek istememi sağlıyor . : D
mbomb007

24
Harika, bir sonraki Ook sürümünü bulduk .
ASCIIThenANSI

8
Hodor hodor. Hodor hodor kokusu, hodor hodor kokusu! Hodor kokusu, hodor kokusu kokusu. Hodor hodor kokusu, hodor hodor kokusu! Hodor kokusu hodor kokusu hodor kokusu hodor? Hodor hoor hodor hodor onur hodor onur hodor onur hodor onur hodor onur hodor ...
Adam Davis

1
@AdamDavis Hodorception!
Martin Ender

Yanıtlar:


26

Hodor! Hodor kokusu mu? Hodor hodor kokusu hodor kokusu.

Hodor hodor kokusu, hodor hodor kokusu.

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

Hodor hodor kokusu hodor kokusu hodor kokusu kokusu kokusu kokusu kokusu kokusu kokusu kokusu. Hodor hodor kokusu hodor hodor? Hodor kokusu hodor kokusu hodor kokusu hodor kokusu.

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

Hodor hodor onur hodor onur onur onur!

Bu sadece dil ve boyut başlığı! O zaman boşver, hadi sıkıcı eski ASCII'deki yazıyı kodlayalım. Gönderiyi anlamakta güçlük çekiyorsanız üzgünüm, Hodor.


CJam, 85 bayt

İşte benim denemem. Bu kodun bazı kısımları, onları yazdığımda oldukça tıknazdı, bu yüzden bunu aşma olasılığı çok fazla!

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

Çevrimiçi deneyin.

açıklama

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
Açıklamayı daha okunaklı hale getirmek için Hodor’daki açıklamayı yayınlayın.
Magic Octopus Urn

102

Hodor, 602 582 bayt

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)}

İşte okunmamış bir versiyon ... bilirsin ... okunabilirlik için:

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)
}

Evet, Hodor diye bir dil var . (Ve oldukça yeni.) Aslında sadece JavaScript yerine bir dize değişimi. Karşılık gelen JS şöyle görünür:

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)
}

Dolayısıyla benim gönderim, bir dize alan ve Hodorised eşdeğerini döndüren bir işlevdir.

Ne yazık ki, Hodor'un gerçekte nasıl çalıştığı hakkında herhangi bir bilgi yok gibi görünüyor (tercümanın kaynak kodundan ayrı olarak), ancak bir JS2HD çeviri komut dosyasıyla birlikte geliyor.

Hodor'un sübstitüsyonlarının string değişmezleri içinde de uygulandığını unutmayın. Yani yukarıdaki işlevi sadece

HODOR! ("CEE")

Aşağıdakileri de kullanabilirsiniz:

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

burada Hodor... HooodorrHodor HooodorrHodorile ikame edilecektir CEE. Bu araçlar, dize kendisi içeriyorsa belli biçimlerinin o Not Hodorsana edeceğiz sahip bunu kodlamak için, ya da başka ikame edilecektir. Örneğin "Hodor. "aslında "m"JavaScript'te. [dhor]Akılda kalıcı olan harflerin (büyük / küçük harf küçük harflerle ) hiç değiştirilmemesidir, bu yüzden bunu bile kodlayamazsınız. Bir çözüm, "Hod"+"or. "ikame adımının kodu çözülecek bir şey bulamayacak şekilde, değişmez maddeyi bölmektir.


36
Bu beni çok mutlu ediyor.
Alex A.

1
@AlexA. Sanırım "HOROR! HOROR HORURSA HORSA HORURU!" Demek istemiştin.
MikeTheLiar

Son cümle noktalama işaretleri sadece ...yeni satırlar yerine değil .....
mbomb007

1
@ mbomb007 Dördüncü .herhangi bir şeyle değiştirilebilir. Finalde kaldırılan, genellikle oradaki alan için bir yer tutucudur r.slice(0,-1).
Martin Ender

1
582 bayt, ancak Hodor programlama dilini kullanmak için -65535 bonusu ile bu cevabı -59713 olarak verir ve bu cevabı açık bir kazanan yapar ;-)
Josh

5

Python 2, 219 198 bayt

Burada dene

Martin'in JavaScript'i ile aynı yöntemi kullanır ve Python'da daha kısa olan bayt sayısıdır. Python 2.7'nin kullanışlı tamsayı bölümünü kullanıyorum. Bazı golf oyunları için Sp3000'e teşekkürler.

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]

Kendi eğlencen, zevk ve merakım için ...

İşte bir lambda işlevi olarak !!!

Python 2, 349

Burada , yukarıdaki programın eski bir sürümü ile birlikte deneyin .

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]

Bunun yaratılması, daha derin ve daha derin ikamelerin yanı sıra bazı ekstra yaratıcılıkları da içeriyordu.

  • Her jbiri ile değiştirilir s[i].
  • Her cbiri ile değiştirilir ord(s[i]).
  • Her nbiri ile değiştirilir (ord(s[i])/4+16)%32.

    • Sadece ihtiyacım olan yer dışından%2 , (ord(s[i])/4%2onun yerine kullanıyorum.
  • Sonunda, aile değiştirilir (['']*(((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):].

    • Bunun nedeni, bir değer atayamayacağımızdır, bu yüzden listeyi ikiye bölmeliyiz, şartlı olarak virgül ekleyip son yarıyı tekrar eklemeliyiz.

1
İnanıyorum bu 198 verir?
Sp3000,

Harika, [:0]boş dize almak için böyle dilimleyebileceğini bilmiyordum .
mbomb007

4

MUMPS , 284 236 bayt

Yeni sürüm: Bir süre baktıktan sonra daha kısa bir sürümle geldim (236 bytes):

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

İlk versiyon:

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

Kahretsin, CJam! Belki ObjectScript kullanarak bazı baytları kaydedebilirim (liste operatörleri var), fakat bundan şüpheliyim.

İşte biraz ayrıntılı sürüm:

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 Bayt

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;}

Bu benim ilk golf oynamam, bu yüzden benimle çıplak.


1
Programlama Bulmacaları ve Kod Golf Yığın Değişimine Hoş Geldiniz! Bazı baytları, yerine tek karakterli bir işlev adı kullanarak kaydedebilirsiniz hodor. Ayrıca tüm bu yeni satırların bazılarını ve birkaç boşluğu da kaldırabilirsiniz (örneğin foroder'den sonra if). Ancak, büyük olasılıkla usingyönergeyi saymalı Systemveya tam olarak nitelemeniz gerekir Console.
Martin Ender

Yardımınız için teşekkürler, bazı baytları iyileştirmeye ve kaydetmeye çalışacağım: D.
GonacFaria

C # kodu ile golf oynadığınızda, belirli bir erişim değiştiricisine sahip olmanız gerekmez; Böylece, publicbazı baytları kaydetmek için anahtar kelimeyi bırakabilirsiniz . []Diziyi tutan değişkenin asıl adı ile asıl adı arasındaki boşluğu da kaldırabilirsiniz . Ayrıca, foreach içindeki bir dizgenin tüm karakterlerini yinelediğinizde dizgiyi karakter dizisine dönüştürmek gerekmez; basitçe yapabilirsin foreach (char c in h).
ProgramFOX

1
Düzenlendi, teşekkürler. Onu 378 bayta indirmeyi başar. Bu eğlenceli.
GonacFaria

0

C ++, 547 452 bayt

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;}

Ungolfed:

#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
Sadece 505 bayt sayıyorum. Satır sonlarını bunun \r\nyerine olarak saydınız \nmı? Ayrıca, neden bu satır sonlarının çoğuna hiç ihtiyaç duyuyorsunuz?
Martin Ender

2
Teslim eklemesi gereken #include, using namespace std;vb
Potatoswatter

Cevapları gönderen çoğu kişi #include veya imports vs sayılmaz
bacchusbeale 20:15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.