Hodor es un personaje de mente lenta pero entrañable en el programa Game of Thrones ( también está en los libros , por supuesto). La única palabra que dice es "hodor" .
Sorprendentemente, a pesar de no tener mucho vocabulario, Hodor siempre habla en oraciones completas con mayúsculas y puntuación correctas, y de hecho transmite significado.
Hodor es capaz de expresar los 128 caracteres ASCII , aunque le toma una oración completa decir cada uno. Cada personaje tiene una representación única y exacta como una oración. Una cadena ASCII se Hodoriza traduciendo todos los caracteres de la cadena a sus equivalentes de oración Hodor, luego uniendo todas las oraciones. Como todos los caracteres se asignan a oraciones exactas, todas las cadenas ASCII tienen una representación Hodorizada única y única.
Personajes hodorizantes
Hodor divide sus 128 caracteres expresables en 4 conjuntos de 32 mediante el uso de 4 tipos diferentes de puntuación para las oraciones que representan caracteres.
La oración termina con ...
.
si el código de carácter ASCII mod 4 es 0..[newline][newline]
(para un nuevo párrafo) si el código mod 4 es 1.?
si el código mod 4 es 2.!
si el código mod 4 es 3.
Por ejemplo, el código de caracteres ASCII para b
es 98, y 98 mod 4 es 2, por lo que la oración de Hodor b
seguramente terminará en ?
.
El contenido de la oración es una de las 32 cadenas distintas que solo contienen la palabra 'hodor'. Cada uno de los 32 caracteres de un tipo de puntuación particular se asigna a una cadena de contenido de oración diferente. Entonces, con 32 cadenas de contenido de oraciones y 4 tipos de puntuación, los 128 caracteres ASCII se pueden representar como oraciones Hodor distintas.
Para determinar el contenido de la oración para un carácter con código ASCII C, calcule (floor(C / 4) + 16) mod 32
; todo después de los dos puntos en esa línea en esta lista es el contenido de la oración:
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
Se puede ver que, aparte del HODOR
caso especial, estas cadenas se generan uniendo más y más hodor
, y cada otra cadena tiene una coma a mitad de camino entre todas las palabras (con la "mitad más grande" a la derecha de la coma para un extraño número de palabras).
Al unir el contenido de la oración con la puntuación, podemos formar las oraciones de Hodor para los 128 caracteres (el número a la izquierda es el código de caracteres):
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]
Se reemplazarán por líneas nuevas reales).
Hodorizing Strings
Hodorizar una cadena realmente solo implica concatenar todas las oraciones de caracteres de los caracteres de la cadena. Solo hay un par de advertencias:
- Se inserta un espacio después de cada oración, excepto las
.[newline][newline]
puntuadas y la última oración. - Si la última oración se puntúa con
.[newline][newline]
, la puntuación se convierte...
así que no hay espacios en blanco al final.
Ejemplos
La cadena F0
está Hodorizada como
HODOR? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
F
tiene el código ASCII 70. 70 mod 4 es 2, por lo que la primera oración termina en?
.(floor(70 / 4) + 16) mod 32
es 1, entonces el contenido esHODOR
.0
tiene el código ASCII 48. 48 mod 4 es 0, por lo que la segunda oración termina en.
.(floor(48 / 4) + 16) mod 32
es 28, por lo que el contenido estáhodor
unido a 15 sin coma.- Tenga en cuenta que no hay espacio final.
La cadena CEE
está Hodorizada como
Hodor! HODOR.
HODOR...
- Observe que no hay espacio antes de la última oración.
- Observe que la puntuación de la última oración se cambió a
...
.
La cuerda
Hodor's real name is Walder.
Did you know?
es Hodorizado como
Hodor hodor. Hodor hodor hodor, hodor hodor hodor! Hodor hodor, hodor hodor hodor. Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor, hodor hodor hodor? Hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor.
Hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor, hodor hodor! Hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor. Hodor hodor, hodor hodor hodor. Hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor? HODOR. Hodor hodor hodor hodor hodor hodor.
Hodor hodor, hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor? Hodor hodor hodor, hodor hodor hodor! Hodor hodor hodor, hodor hodor hodor hodor! Hodor hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor!
(suponiendo que la nueva línea es única \n
)
Desafío
Escriba un programa o función que tome una cadena ASCII y la hodorice, imprimiendo o devolviendo la cadena resultante. Tome la entrada de cualquier manera estándar (desde un archivo de texto, línea de comando, stdin, función arg).
La solución con la menor cantidad de bytes gana. Tiebreaker es una publicación anterior. ( Práctico contador de bytes ) .
Respuestas:
Hodor! Hodor Hodor? Hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor. Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor hodor.
Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor Hodor. Hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor hodor.
Hodor Hodor Hodor, Hodor Hodor Hodor Hodor. Hodor Hodor, Hodor Hodor Hodor.
Hodor hodor hodor hodor hodor hodor hodor!
¿¡Eso es solo el encabezado de idioma y tamaño !? No importa entonces, simplemente codifiquemos la publicación en un viejo y aburrido ASCII. Lo siento si tienes problemas para entender la publicación, Hodor.
CJam, 85 bytes
Aquí está mi intento. Algunas partes de este código se sintieron bastante torpes cuando las escribí, ¡por lo que es probable que supere esto!
Pruébalo en línea.
Explicación
fuente
Hodor,
602582 bytesAquí hay una versión sin golf ... ya sabes ... para facilitar la lectura:
Sí, hay un idioma llamado Hodor . (Y es bastante nuevo). Es esencialmente solo una sustitución de cadena para JavaScript. El JS correspondiente se ve así:
Por lo tanto, mi sumisión es una función que toma una cadena y devuelve el equivalente Hodorizado.
Desafortunadamente, no parece haber ninguna información sobre cómo funciona realmente Hodor (aparte del código fuente del intérprete), pero viene con un script de traducción JS2HD.
Tenga en cuenta que las sustituciones de Hodor también se aplican dentro de literales de cadena. Entonces, si bien puede llamar a la función anterior como
También puede usar lo siguiente:
donde
Hodor... HooodorrHodor HooodorrHodor
será sustituido conCEE
. Nótese que esto significa, que si su propia cadena contiene ciertas formas deHodor
que te tienen para codificarla, o de lo contrario serán sustituidos. Por ejemplo, en"Hodor. "
realidad está"m"
en JavaScript. El problema es que las letras[dhor]
(sin distinción entre mayúsculas y minúsculas) no se reemplazan en absoluto, por lo que ni siquiera puede codificar esto. Una solución es dividir el literal, como"Hod"+"or. "
, de modo que el paso de sustitución no encuentre nada que decodificar.fuente
...
lugar de las nuevas líneas, no....
..
podría ser reemplazado por cualquier cosa. Es un marcador de posición para el espacio que generalmente está allí, que se elimina con la finalr.slice(0,-1)
.Python 2,
219198 bytesPruébalo aquí
Utiliza el mismo método que el JavaScript de Martin, y es varios bytes más corto en Python. Hago uso de la práctica división entera de Python 2.7. Gracias a Sp3000 por jugar al golf.
Y para su propio entretenimiento y mi propio disfrute y curiosidad ...
¡Aquí está como una función lambda !
Pitón 2, 349
Pruébelo aquí , junto con una versión anterior del programa anterior.
Crear esto implicaba sustituciones cada vez más profundas, así como algo de creatividad extra.
j
se reemplaza cons[i]
.c
se reemplaza conord(s[i])
.Cada
n
se reemplaza con(ord(s[i])/4+16)%32
.n%2
, así que lo uso(ord(s[i])/4%2
en su lugar.Finalmente,
a
se reemplaza con(['']*(((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):]
.fuente
[:0]
así para obtener una cuerda vacía.MUMPS ,
284236 bytesNueva versión: después de mirarlo por un tiempo, se me ocurrió una versión más corta (236 bytes):
Primera versión:
¡Maldita seas, CJam! Tal vez podría guardar algunos bytes usando ObjectScript (hay operadores de lista), pero lo dudo.
Aquí hay una versión algo detallada:
fuente
C # 378 bytes
Es mi primera vez jugando al golf, tan desnudo conmigo.
fuente
hodor
. También es probable que pueda eliminar algunos, si no todos los saltos de línea, y varios espacios (por ejemplo, despuésfor
de oder delif
). Sin embargo, probablemente debería contar lausing
directivaSystem
o calificar completamenteConsole
.public
palabra clave para guardar algunos bytes. También puede eliminar el espacio entre[]
y el nombre real de la variable que contiene la matriz. Además, no es necesario convertir una cadena en una matriz de caracteres cuando itera sobre todos los caracteres de una cadena en un foreach; simplemente puedes hacerforeach (char c in h)
.C ++,
547452 bytesSin golf:
fuente
\r\n
lugar de\n
? Además, ¿por qué necesitas la mayoría de esos saltos de línea?#include
,using namespace std;
etc.