Na cena de abertura do Cavaleiro das Trevas , há um diálogo bastante embaraçoso entre um agente da CIA e o vilão Bane.
Agente da CIA: “Se eu tirar essa [máscara], você vai morrer?”
Bane: "Seria extremamente doloroso ..."
Agente da CIA: "Você é um cara grande."
Bane: "... para você."
Não é certo se Bane pretende dizer "doloroso para você" ou "grandalhão para você". Vamos resolver esse problema de uma vez por todas através do código de golfe!
Desafio
Sua tarefa é escrever um programa que reordene o diálogo acima, dependendo de um número inteiro fornecido como entrada.
As palavras de diálogo dos agentes da CIA são:
If
I
pull
that
off
will
you
die?
You're
a
big
guy.
As palavras de diálogo de Bane são:
It
would
be
extremely
painful...
for
you!
Por favor note que die?
, You’re
, painful...
e you!
são consideradas como palavras individuais.
- Dado um número inteiro n como entrada, converta-o em binário
- Lendo os dígitos binários da esquerda para a direita, imprima a próxima palavra da caixa de diálogo do agente da CIA, se o dígito for
1
, e a próxima palavra da caixa de diálogo Bane, se o dígito for0
. As palavras devem ser separadas por um espaço. Quando o alto-falante mudar, adicione um avanço de linha. Além disso, prefixe cada linha de diálogo com o nome do alto-falante (BANE:
ouCIA:
).
Você pode assumir que a entrada sempre começa com 1 em formato binário e possui 12 e 7 zeros.
Exemplo
522300
Convertido em binário:
1111111100000111100
O número começa com 8, então produzimos as 8 primeiras palavras do diálogo com agentes da CIA e as prefixamos com a CIA:
CIA: If I pull that off will you die?
Então temos 5 zeros, então obtemos as 5 primeiras palavras do diálogo de Bane:
BANE: It would be extremely painful...
Depois, existem quatro, então produzimos as 4 próximas palavras da CIA:
CIA: You’re a big guy.
Então 2 zeros:
BANE: for you!
Resultado final:
CIA: If I pull that off will you die?
BANE: It would be extremely painful...
CIA: You’re a big guy.
BANE: for you!
Mais casos de teste:
494542
CIA: If I pull that
BANE: It would be
CIA: off
BANE: extremely
CIA: will you die? You're
BANE: painful... for
CIA: a big guy.
BANE: you!
326711
CIA: If
BANE: It would
CIA: I pull that off will you
BANE: be extremely painful... for
CIA: die? You're
BANE: you!
CIA: a big guy.
Respostas:
Pitão - 138 bytes
Eu deveria procurar comprimir o roteiro do filme.
Conjunto de Teste .
fonte
JavaScript (ES6),
203201 bytesEdit: economizou 2 bytes emprestando descaradamente a
trim()
idéia da resposta da ETHproductionsCasos de teste
Mostrar snippet de código
fonte
JavaScript (ES6),
209202201 bytesAbordagem antiga:
Snippet de teste
fonte
trim()
ideia. Eu tinha certeza de que havia algo melhor do que isso,slice(1)
mas não conseguia descobrir.C ++ 11 (GCC),
298293bytesUma função lambda que pega um número inteiro e retorna o diálogo como a
std::string
. Você pode vê-lo em ação aqui .Versão ungolfed (com alguma explicação):
fonte
JavaScript (ES6),
252222226bytesUso
Notas
Isso está em andamento, acho que ainda posso raspar alguns bytes, mas fique à vontade para deixar sugestões nos comentários.
fonte
Python 3.6, 232 bytes
Edite , de forma equivalente:
fonte
Japonês, 121 bytes
Contém muitos não imprimíveis, então é melhor testá-lo online .
fonte
Perl 6 , 211 bytes
fonte
C #,
398390385396389 bytesInicie com o número de entrada como parâmetro.
Ungolfed:
Voltar para 396 bytes porque não notei a regra "sem nova linha no início".
fonte
s.Replace("1",c[k++]).Replace("0",b[l++])
não substitui por palavras correspondentes. Parece que o C # substitui a string uma vez e a coloca em alguns lugares.Ruby, 204 + 1 = 205 bytes
Requer a
-n
bandeira.fonte
PHP, 198 bytes
fonte
Perl, 205 bytes
Coloque isso em um arquivo chamado 494542 e execute assim:
Testado em perl v5.22
fonte
Clojure, 401 bytes
Invocação:
Ungolfed
fonte