あなたの疲れた、あなたの貧しい人々、自由に呼吸したいあなたの群がった大衆をください


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と呼びます。md5hashを 持っています8c66bbb9684f591c34751661ce9b5cea。オプションで、末尾に改行があると想定できます0928ff6581bc207d0938b193321f16e6。この場合、md5ハッシュはです。

単一の文字列を取り込むプログラムまたは関数を作成します。文字列がSの場合、1行に1つずつ順番に出力さ、詩が描く自由の女神が求める人々のタイプを説明する6つのフレーズ:

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

(この正確な文字列は、オプションで単一の末尾の改行が続きますが、入力Sの出力でなければなりません。)

以下のために少なくとも一つである入力文字列ではない S、あなたの出力は、上記の6行以外の任意の文字列でなければなりません。これはTIRED、入力がの場合にのみ出力するのと同じくらい簡単GIVE ME YOUR TIREDです。このルールは、純粋なハードコーディングを防ぐためのものです。それ以外の場合、入力文字列がSでないとき、コードは何でもできます。

これは、出力に比較的近い入力が与えられる場合、本質的に一定出力の課題です。もちろん、ほとんどの場合入力を無視して出力をハードコードすることもできますが、たとえば、出力に必要な入力の部分文字列を削除する方がよい場合があります。

参考のため、Sの6つの出力行のゼロベースのインデックスと長さは次のとおりです。

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

バイト単位の最短コードが優先されます。


ルールによると、入力がSに等しくないときに入力を単純に出力できるように思えます。それは正しいですか?
アーナルド

はい、それは有効なオプションです。
カルビンの趣味

1
出力が改行を含む実際の単一の文字列か、コンソール上で文字列と区別できない行の配列を出力するプログラムであるかどうかは重要ですか?
-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

入力文字列を分割し、1つおきの要素を取得して、改行で結合します。“ÇŒȷœ%LRw⁹ƊƓɠ‘は、コードページインデックスのリストであり、それらのインデックスで1を使用してゼロのリストをœṗ作成し、そのリストの真のインデックスで入力をパーティション分割し、最初の要素を削除し、m22番目ごとの要素を取得し、改行で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

Mathematica、86バイト

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

入力として文字のリストを取り、文字列を返す名前のない関数。入力の関連部分文字列を抽出し、改行で連結するだけです。


1
私の入力形式はs ではなくsのStringリストですCharacter
グレッグマーティン

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.