ขอให้คุณเหนื่อยอ่อนคนจนฝูงอันโหยหาที่จะหายใจได้ฟรี


19

แผ่นป้ายสำริดในฐานของอนุสาวรีย์เทพีเสรีภาพแสดงบทกวี " The New ยักษ์ใหญ่ " โดยเอ็มม่าลาซารัสส่วนที่อ่าน:

ให้ฉันเหนื่อยยากจนของ
ฝูง huddled ของคุณโหยหาที่จะหายใจฟรี
ปฏิเสธอนาถของฝั่งกำเนิดของคุณ
ส่งคนจรจัดที่วุ่นวายให้ฉัน
ฉันยกโคมไฟของฉันไปที่ประตูทอง!

ในการทำให้บทกวีในส่วนนี้ง่ายขึ้นสำหรับความท้าทายนี้เราจะทำทุกอย่างให้เป็นตัวพิมพ์ใหญ่และแทนที่บรรทัดใหม่ด้วยเครื่องหมายทับ ( /) โดยใช้เครื่องหมายจุลภาคและเครื่องหมายวรรคตอนอื่น ๆ ดังนี้:

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!

เราจะเรียกสายนี้เอสก็มีกัญชา md5 8c66bbb9684f591c34751661ce9b5ceaคุณอาจเลือกที่จะถือว่ามันมีขึ้นบรรทัดใหม่ซึ่งในกรณีกัญชา md5 0928ff6581bc207d0938b193321f16e6คือ

เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสายเดียว เมื่อสตริงคือ S เอาต์พุตตามคำสั่งหนึ่งคำต่อหนึ่งวลีหกวลีที่อธิบายประเภทของบทกวีที่แสดงถึง Lady Liberty ที่ขอ:

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 นั้นถูกต้องหรือไม่
Arnauld

นั่นคือตัวเลือกที่ถูกต้องใช่
งานอดิเรกของ Calvin

1
มันสำคัญไหมว่าเอาต์พุตเป็นสตริงเดี่ยวจริงที่มีบรรทัดใหม่และโปรแกรมส่งเอาต์พุตอาร์เรย์ของบรรทัดซึ่งบนคอนโซลจะแยกไม่ออกจากสตริง?
ต้มตุ๋น

3
ฉันไม่คิดว่าการห้ามฮาร์ดโค้ดนั้นเป็นสิ่งจำเป็นเพราะฮาร์ดโค้ดยาวเกินไป
xnor

1
@ Briantist นั่นฟังดูโอเค
งานอดิเรกของ Calvin

คำตอบ:


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⁹ƊƓɠ‘คือรายการดัชนีหน้ารหัสทำรายการศูนย์ที่มีดัชนีอยู่ที่ดัชนีเหล่านั้นœṗพาร์ติชั่นใส่พาร์ติชั่นที่ดัชนีความจริงของรายการนั้นลบองค์ประกอบแรกเอาองค์ประกอบแรก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]'

ลองออนไลน์!

คำอธิบาย

นี่คือทางออกที่ regex เส็งเคร็งสวย

แยกสตริงเป็น array ในนั้น/หรือ.หรือ,แล้วชิ้นส่วนแทนของแต่ละสายที่ตรงกับรูปแบบครั้งแรกซึ่งจะช่วยให้อาร์เรย์ของ-replaced สตริงแล้วใช้-matchประกอบการจะกลับอาร์เรย์ขององค์ประกอบที่ตรงกับรูปแบบที่สอง (ซึ่งได้รับการกำจัด ของบรรทัดว่างและ 2 บรรทัดที่ไม่ได้รับการกรองมาก่อน)


1

Mathematica, 86 ไบต์

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

ฟังก์ชั่นที่ไม่ได้ตั้งชื่อใช้รายการของอักขระเป็นอินพุตและส่งคืนสตริง เพียงแยกสารตั้งต้นที่เกี่ยวข้องของอินพุตและเชื่อมโยงกับบรรทัดใหม่


1
รูปแบบการป้อนของฉันไม่ได้เป็นStringแต่รายชื่อของCharacters
Greg Martin

0

TI-Basic, 58 ไบต์

ตรงไปตรงมามาก Dispเป็นเช่นprintlnนั้นจึงมีการขึ้นบรรทัดใหม่ในระหว่าง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.