Donne-moi ta fatigue, tes pauvres, tes masses entassées qui aspirent à respirer librement


19

Une plaque de bronze dans le piédestal de la Statue de la Liberté montre le poème " Le nouveau colosse " d'Emma Lazarus, dont une partie se lit comme suit:

Donnez-moi vos fatigués, vos pauvres,
vos masses entassées qui aspirent à respirer librement,
les misérables ordures de votre rivage grouillant.
Envoyez-moi ces sans-abri, tempête-tost,
je lève ma lampe à côté de la porte d'or!

Pour simplifier cette section du poème pour ce défi, nous allons tout mettre en majuscules et remplacer les sauts de ligne par des barres obliques ( /), en conservant les virgules et autres signes de ponctuation tels quels:

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!

Nous appellerons cette chaîne S. Elle a un hachage md5 8c66bbb9684f591c34751661ce9b5cea . Vous pouvez éventuellement supposer qu'il a une nouvelle ligne de fin, auquel cas le hachage md5 l'est 0928ff6581bc207d0938b193321f16e6.

Écrivez un programme ou une fonction qui accepte une seule chaîne. Lorsque la chaîne est S, sortie dans l'ordre , une par ligne, les six phrases qui décrivent le type de personnes que le poème représente Lady Liberty demandant:

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

(Cette chaîne précise, éventuellement suivie d'une seule nouvelle ligne de fin, doit être votre sortie pour l'entrée S.)

Pour au moins une chaîne d'entrée qui n'est pas S, votre sortie doit être une chaîne autre que les six lignes ci-dessus. Cela pourrait être aussi simple que de sortir uniquement TIREDsi l'entrée est uniquement GIVE ME YOUR TIRED. Cette règle vise à empêcher le codage en dur pur. Sinon, lorsque la chaîne d'entrée n'est pas S, votre code peut faire quoi que ce soit.

Il s'agit essentiellement d'un défi à sortie constante où vous obtenez une entrée qui est relativement proche de la sortie. Vous pouvez bien sûr ignorer la plupart du temps l'entrée et coder en dur la sortie, mais il peut être préférable, par exemple, de supprimer les sous-chaînes de l'entrée nécessaires à la sortie.

Pour référence, voici les indices de base zéro et les longueurs des six lignes de sortie dans S:

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

Le code le plus court en octets gagne.


Selon les règles, il semble que nous pouvons simplement sortir l'entrée quand elle n'est pas égale à S. Est-ce correct?
Arnauld

C'est une option valable, oui.
Calvin's Hobbies

1
Est-il important que la sortie soit une chaîne unique réelle avec des retours à la ligne par rapport au programme produisant un tableau de lignes qui, sur la console, ne pourront pas être distinguées de la chaîne?
briantist

3
Je ne pense pas que l'interdiction de codage en dur était nécessaire car le codage en dur est trop long.
2017

1
@briantist Cela semble correct.
Calvin's Hobbies

Réponses:


9

Gelée , 19 octets

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

Essayez-le en ligne! ou essayez-le avec un autre texte .

Comment?

Indexe dans la liste de toutes les tranches contiguës non vides de la chaîne d'entrée et rejoint les sauts de ligne.

Ẇ“©ØḌ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

Code précédent, 22 octets:

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

Partitionne la chaîne d'entrée, prend chaque deuxième élément et se joint aux sauts de ligne. “ÇŒȷœ%LRw⁹ƊƓɠ‘est une liste d'index de page de code, crée une liste de zéros avec des uns à ces index, œṗpartitionne l'entrée aux index véridiques de cette liste, supprime le premier élément, m2prend chaque deuxième élément et se Yjoint aux sauts de ligne.


7

JavaScript (ES6), 128 69 octets

Peut générer des lignes vides ou des ordures lorsque l'entrée est différente 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 octets

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

Essayez-le en ligne!

Explication

Ceci est une solution regex assez merdique.

Fractionner la chaîne en un tableau sur /ou .ou ,puis remplacer les parties de chaque chaîne qui correspondent au premier modèle, ce qui donne un tableau de -replaced chaînes, puis utilisez l' -matchopérateur pour renvoyer un tableau des éléments qui correspondent au deuxième modèle (qui se débarrasse des lignes vides et 2 lignes qui n'ont pas été filtrées auparavant).


1

Mathematica, 86 octets

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

Fonction sans nom prenant une liste de caractères en entrée et renvoyant une chaîne. Extrait simplement les sous-chaînes pertinentes de l'entrée et concatène avec les retours à la ligne.


1
Mon format d'entrée n'est pas un Stringmais une liste de Characters.
Greg Martin

0

TI-Basic, 58 octets

Très simple. Dispest comme println, il y a donc de nouvelles lignes entre les deux.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.