Beri aku lelah, miskin, massa meringkukmu yang ingin bernafas lega

19

Sebuah plakat perunggu di alas Patung Liberty menampilkan puisi " The New Colossus " oleh Emma Lazarus, yang sebagian isinya berbunyi:

Berikan aku lelahmu, malangmu,
kerumunanmu yang ingin bernafas lega,
Sampah yang malang dari pantaimu yang luas.
Kirim ini, tunawisma, tost-tost kepada saya,
saya angkat lampu saya di samping pintu emas!

Untuk menyederhanakan bagian puisi ini untuk tantangan ini, kami akan membuatnya menjadi huruf besar dan mengganti baris baru dengan garis miring ( /), menjaga koma dan tanda baca lainnya seperti:

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!

Kami akan memanggil string ini S. Memiliki hash md5 8c66bbb9684f591c34751661ce9b5cea . Anda dapat mengasumsikan bahwa ia memiliki baris tambahan, di mana hash md5 adalah 0928ff6581bc207d0938b193321f16e6.

Tulis program atau fungsi yang menggunakan satu string. Ketika string adalah S, output berurutan , satu per baris, enam frasa yang menggambarkan tipe orang yang dilukiskan oleh puisi Lady Liberty:

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

(String yang tepat ini, opsional diikuti oleh satu baris baru, harus menjadi output Anda untuk input S.)

Untuk setidaknya satu string input yang bukan S, output Anda harus berupa string selain dari enam baris di atas. Ini bisa sesederhana keluaran hanya TIREDjika inputnya saja GIVE ME YOUR TIRED. Aturan ini untuk mencegah hardcoding murni. Jika tidak, ketika string input bukan S, kode Anda dapat melakukan apa saja.

Ini pada dasarnya adalah tantangan output konstan di mana Anda diberi input yang relatif dekat dengan output. Anda tentu saja sebagian besar mengabaikan input dan meng-hardcode output, tetapi mungkin lebih baik, misalnya, menghapus substring dari input yang diperlukan untuk output.

Untuk referensi, berikut adalah indeks berbasis nol dan panjang dari enam jalur output di S:

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

Kode terpendek dalam byte menang.

Hobi Calvin
sumber
Menurut aturan, sepertinya kita hanya bisa mengeluarkan input ketika tidak sama dengan S. Apakah itu benar?
Arnauld
Itu opsi yang valid, ya.
Hobi Calvin
1
Apakah masalah apakah outputnya adalah string tunggal aktual dengan baris baru vs program yang menghasilkan array garis, yang pada konsol tidak dapat dibedakan dari string?
briantis
3
Saya tidak berpikir larangan hardcoding diperlukan karena hardcoding terlalu panjang.
xnor
1
@ Brianantist Kedengarannya ok.
Hobi Calvin

Jawaban:

9

Jelly , 19 byte

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

Cobalah online! atau coba dengan teks lain .

Bagaimana?

Mengindeks ke dalam daftar semua irisan berdekatan dari string input yang tidak kosong dan bergabung dengan umpan baris.

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

Kode sebelumnya, 22 byte:

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

Partisi string input, mengambil setiap elemen kedua dan bergabung dengan umpan garis. “ÇŒȷœ%LRw⁹ƊƓɠ‘adalah daftar indeks halaman kode, membuat daftar nol dengan yang di indeks itu, œṗmempartisi input pada indeks yang sebenarnya dari daftar itu, menghapus elemen pertama, m2mengambil setiap elemen kedua, dan Ybergabung dengan umpan baris.

Jonathan Allan
sumber
7

JavaScript (ES6), 128 69 byte

Dapat menampilkan baris kosong atau sampah saat input berbeda 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`))

Arnauld
sumber
7

Bash , 76 65 60 byte

echo "TIRED
POOR
${1:36:39}
${1:81:37}
HOMELESS
${1:146:12}"

Cobalah online!

Mitchell Spector
sumber
3

Mathematica , 71

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

PowerShell , 72 byte

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

Cobalah online!

Penjelasan

Ini adalah solusi regex yang sangat jelek.

Memisahkan string ke dalam array pada /atau .atau ,dan kemudian mengganti bagian-bagian dari setiap string yang cocok dengan pola pertama, yang memberikan array -replacestring d, kemudian menggunakan -matchoperator untuk mengembalikan array elemen yang cocok dengan pola kedua (yang menghilangkan dari baris kosong dan 2 baris yang tidak difilter sebelumnya).

briantis
sumber
1

Mathematica, 86 byte

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

Fungsi tanpa nama mengambil daftar karakter sebagai input dan mengembalikan string. Ekstrak saja substring yang relevan dari input dan gabungkan dengan baris baru.

Greg Martin
sumber
1
Format input saya bukan daftar Stringtetapi Characters.
Greg Martin
0

TI-Basic, 58 byte

Sangat mudah. Dispseperti println, jadi ada baris baru di antaranya.

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

Retina , 38 32 byte

Ini mungkin dapat ditingkatkan, tetapi ini adalah pekerjaan untuk regex!

!`(?<=R |HE ).*?(?=[,.])|\w+-\w+

Cobalah online!

Leo
sumber