Дай мені твоїй втомився, твій бідний, твій згублений маси, що прагнуть дихати вільно


19

Бронзова дошка на п'єдесталі статуї Свободи показує вірш « The New Colossus » Емми Лазарус, частина якої говорить:

Дай мені твоїй втомився, твій бідний,
твій згублений маси, що прагнуть вільно дихати,
жалюгідна відмова твого кипучого берега.
Надішліть ці, бездомні, бурхливі тости,
я піднімаю лампу біля золотих дверей!

Щоб спростити цей розділ поеми для цього виклику, ми зробимо все це великими літерами та замінимо нові рядки косою рисою ( /), зберігаючи коми та інші розділові знаки таким чином:

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!

Ми будемо називати цей рядок S. Він має хд хд 8c66bbb9684f591c34751661ce9b5cea . Ви необов'язково можете припустити, що у нього є зворотний новий рядок, і в цьому випадку хд md5 є 0928ff6581bc207d0938b193321f16e6.

Напишіть програму або функцію, яка займає один рядок. Коли рядок є S, виведіть порядок , по одному на рядок, шість фраз, що описують тип людей, на яких зображений вірш Леді Свободи:

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

(Цей точний рядок, необов'язково супроводжуваний окремим кінцевим новим рядком, повинен бути результатом для введення S.)

За принаймні , один вхідного рядка, яка НЕ S, результат повинен бути будь-який рядок, крім шести рядків вище. Це може бути настільки ж простим, як TIREDі вихідний, лише якщо вхід лише GIVE ME YOUR TIRED. Це правило полягає у запобіганні чистого жорсткого кодування. В іншому випадку, коли рядок вводу не є S, ваш код може зробити що завгодно.

Це, по суті, виклик з постійним виходом, коли ви отримуєте вхід, що знаходиться близько до результату. Звичайно, ви можете здебільшого ігнорувати вхід і жорсткий код виводу, але, можливо, краще буде, скажімо, викреслити підрядки вводу, необхідні для виводу.

Для довідки, ось нульові показники та довжини шести вихідних рядків у S:

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

Виграє найкоротший код у байтах.


Згідно з правилами, здається, ми можемо просто вивести вхід, коли він не дорівнює S. Це правильно?
Арнольд

Це вірний варіант, так.
Захоплення Кальвіна

1
Чи має значення, чи є вихід фактичним єдиним рядком з новими рядками проти програми, що виводить масив рядків, який на консолі буде не відрізнятись від рядка?
британіст

3
Я не думаю, що заборона жорсткого кодування не потрібна, оскільки жорстке кодування занадто довго.
xnor

1
@briantist Це звучить нормально.
Захоплення Кальвіна

Відповіді:


9

Желе , 19 байт

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

Спробуйте в Інтернеті! або спробуйте це з іншим текстом .

Як?

Індексується у список усіх непустих суміжних фрагментів вхідного рядка та з'єднується з каналами рядків.

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

Попередній код, 22 байти:

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

Розділяє вхідний рядок, займає кожен другий елемент і з'єднується з каналами рядків. “ÇŒȷœ%LRw⁹ƊƓɠ‘являє собою список індексів кодової сторінки, складає список нулів з тими, що знаходяться в цих індексах, œṗрозділяє вхід на truthy індекси цього списку, видаляє перший елемент, m2бере кожен другий елемент і Yприєднується до каналів рядків.


7

JavaScript (ES6), 128 69 байт

Може виводити порожні рядки або сміття, якщо вхід відрізняється від 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`))




2

PowerShell , 72 байти

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

Спробуйте в Інтернеті!

Пояснення

Це досить шалене рішення для регулярного генерування.

Розділити рядок на масив на /або .або ,потім замінити частини кожної рядки, що відповідають першому шаблону, який дає масив -replaced рядків, а потім за допомогою -matchоператора повернути масив елементів, що відповідають другому шаблону (який позбавляється порожніх рядків та 2 рядки, які раніше не фільтрувались).


1

Математика, 86 байт

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

Безіменна функція, що приймає список символів як введення та повертає рядок. Просто витягує відповідні підрядки введення та з'єднує нові рядки.


1
Мій формат введення - це не Stringсписок, а перелік Characters.
Грег Мартін

0

TI-Basic, 58 байт

Дуже прямо. Dispце як println, тож між ними є нові рядки.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.