Hodor é um personagem de mente lenta, mas carinhoso, no seriado Game of Thrones ( ele também está nos livros ). A única palavra que ele diz é 'hodor' .
Surpreendentemente, apesar de não ter muito vocabulário, Hodor sempre fala em frases completas com letras maiúsculas e pontuação corretas e, de fato, transmite significado.
Hodor é capaz de expressar todos os 128 caracteres ASCII , embora seja necessário uma frase inteira para dizer cada um. Cada personagem tem uma representação exata e única como uma frase. Uma sequência ASCII é Hodorizada traduzindo todos os caracteres da sequência para seus equivalentes de sentença Hodor e juntando todas as sentenças. Como todos os caracteres são mapeados para sentenças exatas, todas as seqüências ASCII têm uma única representação Hodorizada única.
Personagens Hodorizantes
Hodor divide seus 128 caracteres expressáveis em 4 conjuntos de 32 usando 4 tipos diferentes de pontuação para as frases que representam os caracteres.
A frase termina com ...
.
se o código de caractere ASCII mod 4 for 0..[newline][newline]
(para um novo parágrafo) se o código mod 4 for 1.?
se o código mod 4 for 2.!
se o código mod 4 for 3.
Por exemplo, o código de caractere ASCII para b
é 98 e 98 mod 4 é 2, portanto a sentença de Hodor b
certamente terminará ?
.
O conteúdo da frase é uma das 32 seqüências distintas que contêm apenas a palavra 'hodor'. Cada um dos 32 caracteres de um tipo de pontuação específico é mapeado para uma sequência de conteúdo de frase diferente. Portanto, com 32 cadeias de conteúdo de sentenças e 4 tipos de pontuação, todos os 128 caracteres ASCII podem ser representados como sentenças Hodor distintas.
Para determinar o conteúdo da sentença para um caractere com código ASCII C, calcule (floor(C / 4) + 16) mod 32
; tudo depois dos dois pontos nessa linha nesta lista é o conteúdo da frase:
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
Pode-se observar que, além do HODOR
caso especial, essas cadeias são geradas pela união de mais e mais hodor
's, e todas as outras cadeias possuem uma vírgula no meio do caminho entre todas as palavras (com a "metade maior" à direita da vírgula, por um valor ímpar). número de palavras).
Juntando o conteúdo da frase com a pontuação, podemos formar as frases Hodor para todos os 128 caracteres (o número à esquerda é o código do caractere):
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]
devem ser substituídos por novas linhas reais.)
Cordas Hodorizantes
Hodorizar uma string realmente envolve apenas concatenar todas as frases dos caracteres da string. Existem apenas algumas ressalvas:
- Um espaço é inserido após cada frase, exceto as
.[newline][newline]
pontuadas e a última frase. - Se a última frase for pontuada com
.[newline][newline]
, a pontuação se tornará...
para que não haja espaço em branco à direita.
Exemplos
A cadeia F0
é Hodorizada como
HODOR? Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor.
F
tem código ASCII 70. 70 mod 4 é 2, então a primeira frase termina em?
.(floor(70 / 4) + 16) mod 32
é 1, então o conteúdo éHODOR
.0
tem código ASCII 48. 48 mod 4 é 0, então a segunda frase termina em.
.(floor(48 / 4) + 16) mod 32
é 28; portanto, o conteúdo é 15hodor
associado sem vírgula.- Observe que não há espaço à direita.
A cadeia CEE
é Hodorizada como
Hodor! HODOR.
HODOR...
- Observe que não há espaço antes da última frase.
- Observe que a pontuação da última frase foi alterada para
...
.
A corda
Hodor's real name is Walder.
Did you know?
é 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!
(supondo que a nova linha seja única \n
)
Desafio
Escreva um programa ou função que capte uma string ASCII e aodorize, imprimindo ou retornando a string resultante. Tome entrada de qualquer maneira padrão (do arquivo de texto, linha de comando, stdin, função arg).
A solução com o menor número de bytes vence. O desempatador é uma publicação anterior. ( Contador de bytes acessíveis ) .
Respostas:
Hodor! Hodor hodor? Hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor hodor hodor, hodor hodor hodor hodor hodor hodor hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor hodor. Hodor hodor hodor hodor hodor? Hodor hodor hodor hodor hodor hodor hodor hodor hodor.
Hodor hodor hodor, hodor hodor hodor hodor. Hodor hodor, hodor hodor hodor.
Hodor hodor hodor hodor hodor hodor hodor hodor!
Esse é apenas o idioma e o tamanho do cabeçalho !? Não importa, então, vamos apenas codificar o post em ASCII antigo e chato. Desculpe se você tiver problemas para entender a publicação, Hodor.
CJam, 85 bytes
Aqui está a minha tentativa. Algumas partes deste código pareceram bastante desajeitadas quando eu as escrevi, então é provável que você consiga superar isso!
Experimente online.
Explicação
fonte
Hodor,
602582 bytesAqui está uma versão ungolfed ... você sabe ... para facilitar a leitura:
Sim, existe uma linguagem chamada Hodor . (E é bastante novo.) É essencialmente apenas uma substituição de string para JavaScript. O JS correspondente se parece com isso:
Portanto, minha submissão é uma função que pega uma string e retorna o equivalente Hodorizado.
Infelizmente, parece não haver nenhuma informação sobre como o Hodor realmente funciona (além do código-fonte do intérprete), mas ele vem com um script de tradução JS2HD.
Observe que as substituições de Hodor também são aplicadas nos literais de strings. Então, enquanto você pode apenas chamar a função acima como
Você também pode usar o seguinte:
onde
Hodor... HooodorrHodor HooodorrHodor
será substituído porCEE
. Observe que isso significa que, se sua própria string contiver determinadas formas,Hodor
você terá que codificá-la ou será substituída. Por exemplo,"Hodor. "
é realmente"m"
em JavaScript. O problema é que as letras[dhor]
(sem distinção entre maiúsculas e minúsculas) não são substituídas, portanto você não pode nem codificar isso. Uma solução é dividir o literal, como"Hod"+"or. "
, de modo que a etapa de substituição não encontre nada para decodificar.fonte
...
vez das novas linhas, não....
..
poderia ser substituído por qualquer coisa. É um espaço reservado para o espaço que geralmente está lá, que é removido com a finalr.slice(0,-1)
.Python 2,
219198 bytesExperimente aqui
Usa o mesmo método que o JavaScript de Martin e vários bytes mais curtos no Python. Faço uso da útil divisão inteira do Python 2.7. Graças ao Sp3000 por jogar golfe.
E para seu próprio entretenimento e para meu próprio prazer e curiosidade ...
Aqui está como uma função lambda !!!
Python 2, 349
Experimente aqui , junto com uma versão mais antiga do programa acima.
Criar isso envolveu substituições cada vez mais profundas, além de alguma criatividade extra.
j
é substituído pors[i]
.c
é substituído porord(s[i])
.Todo
n
é substituído por(ord(s[i])/4+16)%32
.n%2
, então eu uso(ord(s[i])/4%2
.Finalmente,
a
é substituído por(['']*(((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):]
.fonte
[:0]
dessa maneira para obter um barbante vazio.MUMPS ,
284236 bytesNova versão: Depois de analisá-lo por um tempo, criei uma versão mais curta (236 bytes):
Primeira versão:
Maldito seja, CJam! Talvez eu possa salvar alguns bytes usando o ObjectScript (existem operadores de lista), mas duvido.
Aqui está uma versão um pouco detalhada:
fonte
C # 378 bytes
É a minha primeira vez jogando golfe, tão nua comigo.
fonte
hodor
. Você pode provavelmente também remover alguns, se não todas essas novas linhas, e vários espaços (por exemplo, apósfor
oder aif
). No entanto, você provavelmente deve contar ausing
diretivaSystem
ou se qualificar totalmenteConsole
.public
palavra-chave para salvar alguns bytes. Você também pode remover o espaço entre[]
e o nome real da variável que contém a matriz. Além disso, não é necessário converter uma string em uma matriz de caracteres quando você itera sobre todos os caracteres de uma string em um foreach; você pode simplesmente fazerforeach (char c in h)
.C ++,
547452 bytesUngolfed:
fonte
\r\n
vez de\n
? Além disso, por que você ainda precisa da maioria dessas quebras de linha?#include
,using namespace std;
etc.