Me dê seu cansado, seu pobre, Suas massas amontoadas ansiando por respirar livremente


19

Uma placa de bronze no pedestal da Estátua da Liberdade exibe o poema " O Novo Colosso ", de Emma Lazarus, parte do qual se lê:

Me dê seu cansado, seu pobre,
Suas massas amontoadas ansiando por respirar livremente,
O lixo miserável de sua costa fervilhante.
Mande-os, sem-teto, tempestades para mim,
levanto minha lâmpada ao lado da porta dourada!

Para simplificar esta seção do poema para esse desafio, colocaremos tudo em maiúsculas e substituiremos as novas linhas por barras ( /), mantendo vírgulas e outras pontuações como são:

GIVE ME YOUR TIRED, YOUR POOR,/YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,/THE WRETCHED REFUSE OF YOUR TEEMING SHORE./SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,/I LIFT MY LAMP BESIDE THE GOLDEN DOOR!

Vamos chamar essa string S. Ele tem um hash md5 8c66bbb9684f591c34751661ce9b5cea . Opcionalmente, você pode assumir que ele possui uma nova linha à direita, nesse caso o hash md5 é 0928ff6581bc207d0938b193321f16e6.

Escreva um programa ou função que utilize uma única string. Quando a sequência é S, com saída em ordem , uma por linha, as seis frases que descrevem o tipo de pessoa que o poema representa Lady Liberty pedindo:

TIRED
POOR
HUDDLED MASSES YEARNING TO BREATHE FREE
WRETCHED REFUSE OF YOUR TEEMING SHORE
HOMELESS
TEMPEST-TOST

(Essa sequência precisa, opcionalmente seguida por uma única nova linha à direita, deve ser sua saída para a entrada S.)

Para pelo menos uma sequência de entrada que não seja S, sua saída deve ser qualquer sequência que não seja as seis linhas acima. Isso pode ser tão simples quanto produzir apenas TIREDse a entrada for apenas GIVE ME YOUR TIRED. Esta regra é para impedir a codificação pura. Caso contrário, quando a sequência de entrada não for S, seu código poderá fazer qualquer coisa.

Este é essencialmente um desafio de saída constante, no qual você recebe uma entrada relativamente próxima da saída. Obviamente, você poderia ignorar a entrada e codificar a saída, mas talvez seja melhor, por exemplo, retirar as substrings da entrada necessária para a saída.

Para referência, aqui estão os índices e comprimentos baseados em zero das seis linhas de saída em S:

13 5, 25 4, 36 39, 81 37, 136 8, 146 12

O código mais curto em bytes vence.


De acordo com as regras, parece que podemos simplesmente gerar a entrada quando ela não é igual a S. Isso está correto?
Arnauld

Essa é uma opção válida, sim.
Passatempos de Calvin

11
Importa se a saída é uma única string real com novas linhas versus o programa que gera uma matriz de linhas, que no console será indistinguível da string?
precisa saber é o seguinte

3
Eu não acho que a proibição de codificação foi necessária porque ela é muito longa.
Xnor

11
@ briantist Isso parece ok.
Passatempos de Calvin

Respostas:


9

Geléia , 19 bytes

Ẇ“©ØḌKAƑ⁶2ɼU’b8ȷ¤ịY

Experimente online! ou tente com outro texto .

Quão?

Indexa na lista de todas as fatias contíguas não vazias da sequência de entrada e se junta aos feeds de linha.

Ẇ“©ØḌKAƑ⁶2ɼU’b8ȷ¤ịY - Main link: s
                ¤   - nilad followed by link(s) as a nilad
 “©ØḌKAƑ⁶2ɼU’       - base 250 number, 27003436588466956354336
              8ȷ    - 8 * 1e3 = 8000
             b      - convert to base, [824,635,7086,6796,1544,2336]
                 ị  - index into
Ẇ                   - all non-empty contiguous slices of s
                  Y - join with line feeds

Código anterior, 22 bytes:

“ÇŒȷœ%LRw⁹ƊƓɠ‘ṬœṗµḊm2Y

Particiona a sequência de entrada, pega cada segundo elemento e se une aos feeds de linha. “ÇŒȷœ%LRw⁹ƊƓɠ‘é uma lista de índices da página de códigos, faz uma lista de zeros com os que estão nesses índices, œṗparticiona a entrada nos índices de verdade dessa lista, remove o primeiro elemento, m2pega todos os segundos e Yse junta aos feeds de linha.


7

JavaScript (ES6), 128 69 bytes

Pode gerar linhas vazias ou algum lixo quando a entrada for diferente de S.

let f =

s=>[837,1604,2343,5221,8712,9356].map(n=>s.substr(n>>6,n&63)).join`
`

console.log(f(`GIVE ME YOUR TIRED, YOUR POOR,
YOUR HUDDLED MASSES YEARNING TO BREATHE FREE,
THE WRETCHED REFUSE OF YOUR TEEMING SHORE.
SEND THESE, THE HOMELESS, TEMPEST-TOST TO ME,
I LIFT MY LAMP BESIDE THE GOLDEN DOOR!`))

console.log(f(`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`))



3

Mathematica , 71

Column@StringTake[#,List@@@{14|18,26|29,37|75,82|118,137|144,147|158}]&

2

PowerShell , 72 bytes

"$args"-split'[/,.]'-replace'^.*?(YOUR|\bTHE) |^ | TO ME'-match'^[^S G]'

Experimente online!

Explicação

Esta é uma solução regex bastante ruim.

Dividindo a string em uma matriz em /ou .ou ,e, em seguida, substituindo partes de cada string que correspondem ao primeiro padrão, o que fornece uma matriz de -replaced strings, use o -matchoperador para retornar uma matriz dos elementos que correspondem ao segundo padrão (que se livrará das linhas em branco e 2 linhas que não foram filtradas antes).


1

Mathematica, 86 bytes

Riffle[s=#;s~Take~#&/@{{14,18},{26,29},{37,75},{82,118},{137,144},{147,158}},"
"]<>""&

Função sem nome, recebendo uma lista de caracteres como entrada e retornando uma string. Apenas extrai as substrings relevantes da entrada e concatena com novas linhas.


11
Meu formato de entrada não é Stringapenas uma lista de Characters.
Greg Martin

0

TI-Basic, 58 bytes

Muito simples. Dispé como println, então há novas linhas no meio.

Disp "TIRED","POOR",sub(Ans,37,39),sub(Ans,82,37),"HOMELESS",sub(Ans,147,12

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.