피곤하고 가난하고 네가 숨 쉬고 싶어하는 사람들


19

청동 플라크 의 받침대에있는 자유의 여신상 시 "표시 새로운 거상 읽고 일부가 엠마 나사로에 의해을"

피곤하고 가난한 사람들,
숨 쉬고 싶어하는 당신의 뭉친 사람들,
끔찍한 해안을 거부하십시오.
집없는 노숙자에게 보내십시오,
나는 황금 문 옆에 램프를 들어 올립니다!

이 과제에 대한시의이 섹션을 단순화하기 위해 모든 대문자를 만들고 /쉼표와 기타 문장 부호를 그대로 유지하면서 개행을 슬래시 ( ) 로 바꿉니다 .

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라고 부릅니다 . md5 hash가 8c66bbb9684f591c34751661ce9b5cea 있습니다. 선택적으로 후행 줄 바꿈이 있다고 가정 할 수 있습니다.이 경우 md5 해시는 0928ff6581bc207d0938b193321f16e6입니다.

하나의 문자열에 걸리는 프로그램이나 함수를 작성. 문자열이 S 인 경우 , 한 줄에 하나씩 순서대로 출력 되며 ,시에서 Lady Liberty가 요구하는 사람들의 유형을 설명하는 6 개의 문구는 다음과 같습니다.

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

(이 정확한 문자열은 선택적으로 단일 후행 줄 바꿈이 뒤에 오는 입력 S의 출력이어야합니다.)

S 가 아닌 입력 문자열이 하나 이상인 경우 출력은 위의 6 줄 이외의 문자열이어야합니다. 입력이 유일한 경우 에만 출력하는 것처럼 간단 할 수 있습니다 . 이 규칙은 순수한 하드 코딩을 방지하는 것입니다. 그렇지 않으면 입력 문자열이 S가 아닌 경우 코드에서 어떤 작업을 수행 할 수 있습니다.TIREDGIVE ME YOUR TIRED

이것은 본질적으로 당신이 상대적으로 가까운 출력되는 입력을 주어 일정한 출력 도전이다. 당신은 물론 대부분의 입력을 무시하고 출력을 하드 코딩하지만 말에 더 좋을 수도, 출력에 필요한 입력의 문자열을 제거 할 수있다.

참고로, 여기에서 제로 지수 및 S에서 여섯 개 출력 라인의 길이는 :

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

의 짧은 코드는 승리 바이트.


규칙에 따르면 S와 같지 않을 때 입력을 간단히 출력 할 수있는 것 같습니다. 맞습니까?
Arnauld

즉 예, 유효한 옵션입니다.
칼빈의 취미

1
이는 출력이 문자열과 구별 될 콘솔 라인의 배열을 출력하는 프로그램 VS 바꿈과 실제로 단일 문자열인지 중요합니까?
briantist

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⁹ƊƓɠ‘코드 페이지 인덱스의리스트이며, 그 인덱스에서의 것들과 0들의리스트를 만들어, œṗ파티션이 목록의 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]'

온라인으로 사용해보십시오!

설명

이것은 꽤 엉뚱한 정규식 솔루션입니다.

분할에 배열 문자열 /이나 .또는 ,다음의 배열을 제공하는 제 1 패턴과 일치 각 스트링의 교체 부품, -replaceD 문자열 다음 사용 -match없애는 제 2 패턴과 일치하는 요소들의 어레이 (반환 연산자 빈 줄과 이전에 필터링되지 않은 2 줄).


1

수학, 86 바이트

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

이름이없는 함수는 문자 목록을 입력으로 가져 와서 문자열을 반환합니다. 입력의 관련 하위 문자열을 추출하고 개행으로 연결합니다.


1
내 입력 형식은 String의 목록 이 아닙니다 Character.
Greg Martin

0

TI 기본, 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.