要求された天気に合わせて部族のトーテムをセットアップする


11

スー族の村があります。トーテムがあります:

             __
         ___|  |___
   \/    \        /    \/
   /\     ``|  |``     /\
  /^^\      |  |      /^^\
 / /\ \     |  |     / /\ \
''''''''''''''''''''''''''''

トーテムにより、スーはさまざまなタスクを支援するために天気をマスターできます。村人が適切な天気を呼び起こすためにトーテムを適切に装飾するのを助けてください。トーテムにはいくつかの部分があります。

             __
         ___|AA|___
   \/    \BBBBBBBB/    \/
   /\     ``|CC|``     /\
  /^^\      |DD|      /^^\
 / /\ \  13 |EE| 42  / /\ \
''''''''''''''''''''''''''''
  • A以下のためにある () ww
  • B """"""""雪のためです ::::::::
  • C以下のためである雷雨 zz
  • D用です ~~
  • E霧のためです ==

しかし、それだけではありません。トーテムにはウェザーダンサーが必要です。呼び出される要素が多いほど、必要なダンサーの数が多くなります。1つの要素が呼び出される場合、ダンサーが必要です。2つの要素、2人のダンサー。4つの要素を超えて、常に最大4人のダンサーが存在します。呼び出される要素がない場合、ダンサーは必要ありません。トーテムは休む必要があります。

天気ダンサーは順番に現れなければなりません1234。たとえば、ダンサーが2人いる場合、スロット12占有する必要があります。さらに、各ダンサーは異なる図を実行します。

  • 1T
  • 2Y
  • 3K
  • 4X

今、村人たちは彼らの天気予報を表現します。希望する天気要素を含む文を発音します。トーテムとダンサーをセットアップして、彼らの願いを実現します。

チャレンジ

入力として文字列を取り、文の要素(sunrain、…)に一致し、トーテムとそのダンサーが適切に設定された村全体を出力するプログラムを作成します。プログラムは、入力文字列の正確性をチェックする必要はありません(たとえば、太陽雲の両方が含まれない)。単語と一致する必要があります(文字通り):

  • カンマは単語の一部ではないため、入力文字列はwindX says: "I like the wind, it blows the worries away"一致します
  • windywindは2つの異なる単語であるため、入力文字列Y says: "I hope the weather won't get too windy"windと一致しません

一致する単語は、入力文字列の引用部分にあることが保証されています(誰が話しているかを示す最初の部分には、一致する可能性のある単語が含まれることはありません)。

The squaw says: "I want sun and wind for drying the clothes"
             __
         ___|()|___
   \/    \        /    \/
   /\     ``|  |``     /\
  /^^\      |~~|      /^^\
 / /\ \  T  |  |  Y  / /\ \
''''''''''''''''''''''''''''

The warrior thinks: "A good thunderstorm will afraid the invaders. Or a snow storm. Or an impenetrable fog. Or an oppressive sun."
             __
         ___|()|___
   \/    \::::::::/    \/
   /\     ``|zz|``     /\
  /^^\      |  |      /^^\
 / /\ \  TK |==| XY  / /\ \
''''''''''''''''''''''''''''

The papoose shouts: "I WANNA GO OUTSIDE PLAY UNDER THE SUN!"
             __
         ___|()|___
   \/    \        /    \/
   /\     ``|  |``     /\
  /^^\      |  |      /^^\
 / /\ \  T  |  |     / /\ \
''''''''''''''''''''''''''''

The wise grandma whispers: "The totem is an illusion"
             __
         ___|  |___
   \/    \        /    \/
   /\     ``|  |``     /\
  /^^\      |  |      /^^\
 / /\ \     |  |     / /\ \
''''''''''''''''''''''''''''

The shaman confides: "I perform my magic hidden in the fog, under the rain or at least under heavy clouds"
             __
         ___|ww|___
   \/    \""""""""/    \/
   /\     ``|  |``     /\
  /^^\      |  |      /^^\
 / /\ \  TK |==|  Y  / /\ \
''''''''''''''''''''''''''''

The village chief claims: "The meat of bison is better preserved in the snow, or dried under a burning sun. My Pa' used to say that heavy wind and a thunderstorm could help too, but I have no clue how. And despite everyone contradicting me, I am persuaded a good fog will do as well"
             __
         ___|()|___
   \/    \::::::::/    \/
   /\     ``|zz|``     /\
  /^^\      |~~|      /^^\
 / /\ \  TK |==| XY  / /\ \
''''''''''''''''''''''''''''

これはので、バイト単位の最短回答が勝ちです。説明が奨励されます。


sunand cloudsとorの両方rainを取得しないと仮定できますsnowか?
ハイパーニュートリノ

@HyperNeutrinoこれはすでにチャレンジで指定されています。
ジム

あ。私はそれを何度もやりました(チャレンジの一部が欠けています)。すみません:P
HyperNeutrino

笑+1 The papoose shouts: "I WANNA GO OUTSIDE PLAY UNDER THE SUN!"。また、このチャレンジは、私が思っていたよりもずっと痛みが少なく、とても楽しかったです。チャレンジのおかげで:P :)
HyperNeutrino

このような挑戦が恋しいです。あまりにもハードではなく、あまりにもFGITW、あまりにも実際に言語をゴルフではなく、コードにあなたを必要とするのではなく、小さな4-byter見つける
ウリエル

回答:


2

Python、527 524 508 504 481 474 462 461バイト

from re import*
a=r"""!!! __
!! ___|AA|___
   \/!\BBBBBBBB/!\/
   /\! ``|CC|``! /\
  /^^\!  |DD|!  /^^\
 / /\ \  02 |EE| 31  / /\ \
""";s={'sun':'A2()','clouds':'A2w','rain':'B2"','snow':'B2:','thunderstorm':'C2z','wind':'D2~','fog':'E2='};i=0
for y in[w for w in split('\W+',input().lower())if w in s]:i+=1;z=s[y];w=int(z[1]);a=sub(z[0]*w,(z[2:]*w)[:w],a)
for y in range(min(i,4)):a=sub(str(y),'TYKX'[y],a)
print(sub('!',' '*4,sub('[ABCDE0123]',' ',a))+"'"*28)

オンラインでお試しください!


前回のチャレンジでは、誰もが正規表現をどのように使用しているかに失望しました。私はこれで、私は何も持たないと思った。さて、私はちょっと驚いています…
ジム

@Jimも、彼らは間違いなく、関数の本体ではありません
ウリエル

かなり異なるアルゴリズムを使用する別のPythonソリューションを投稿しました。あなたのゴルフとして使用した方が良いと思うなら、私はあなたのものとあまりにも似ていないものを削除します。
ハイパーニュートリノ

@HyperNeutrino私はただそれをゴルフしていたので、あなたが使用したもののいくつかをヒットしたと思う。私は通常、これらの投稿したくないけれども、私は一般的に、私のように、他のソリューションに同じLANGを気にしない
ウリエル


2

Pythonの3473の 464 460バイト

import re
x=re.split('\W+',input().lower())
L='sun clouds rain snow thunderstorm wind fog'.split()
q=sum(map(x.count,L))
print(r'''!    __
!___|#|___
" \/"  \$/" \/
" /\"   ``|%%|``"  /\
  /^^\""  |&&|"" /^^\
 / /\ \  13 |''| 42 / /\ \
'''.translate({33:' '*9,34:' '*2,35:' (w )w'[(L[0]in x)+2*(L[1]in x)::3],36:' ":'[(L[2]in x)+2*(L[3]in x)]*8,37:' z'[L[4]in x],38:' ~'[L[5]in x],39:' ='[L[6]in x],49:' T'[q>0],50:' Y'[q>1],51:' K'[q>2],52:' X'[q>3]})+"'"*28)

オンラインでお試しください!


ovsのおかげで-9バイト-4バイト


あなたがなぜ必要なのかわかりませんs。最後の2行をprint(r...28)460バイトにマージするだけです。
ovs

@ovs whoopsはそのことを忘れていました。ありがとう!
ハイパーニュートリノ

1

JavaScript(ES6)、417バイト

(s,i=x=>s.toLowerCase()[q](/\W+/).includes(x[0]),g=x=>y=>i(x)?y[0]:(j--,"  "),j=4,t="||   \\/|   /\\|  /^^\\| / /\\ \\"[q="split"]`|`.map(x=>x[p="padEnd"](9)))=>`    __    n___|${i`sun`?"()":g`clouds``ww`}|___n${"\\"[p](9,i`rain`?'"':g`snow``:`)}/n \`\`|${g`thunderstorm``zz`}|\`\` n   |${g`wind``~~`}|   n02 |${g`fog``==`}| 31`.replace(/\d/g,m=>m>j?" ":"TYKX"[m])[q]`n`.map((v,k)=>t[k]+v+t[k]).join`
`+`
`[p](28,"'")

ここでのアイデアは、最初にトーテムポールを生成してから、その両側にミラーティキを追加することでした。

2つのヘルパー関数が含まれます。i文字列が入力内の単語の1つであるかどうかを確認します。そしてgi与えられた文字列またはを返します" "gまた、下部のダンサーに使用するために不足している要素の数をカウントします。

テストスニペット

let f=
(s,i=x=>s.toLowerCase()[q](/\W+/).includes(x[0]),g=x=>y=>i(x)?y[0]:(j--,"  "),j=4,t="||   \\/|   /\\|  /^^\\| / /\\ \\"[q="split"]`|`.map(x=>x[p="padEnd"](9)))=>`    __    n___|${i`sun`?"()":g`clouds``ww`}|___n${"\\"[p](9,i`rain`?'"':g`snow``:`)}/n \`\`|${g`thunderstorm``zz`}|\`\` n   |${g`wind``~~`}|   n02 |${g`fog``==`}| 31`.replace(/\d/g,m=>m>j?" ":"TYKX"[m])[q]`n`.map((v,k)=>t[k]+v+t[k]).join`
`+`
`[p](28,"'")

let tests = [`The squaw says: "I want sun and wind for drying the clothes"`,`The warrior thinks: "A good thunderstorm will afraid the invaders. Or a snow storm. Or an impenetrable fog. Or an oppressive sun."`,`The papoose shouts: "I WANNA GO OUTSIDE PLAY UNDER THE SUN!"`,`The wise grandma whispers: "The totem is an illusion"`,`The shaman confides: "I perform my magic hidden in the fog, under the rain or at least under heavy clouds"`,`The village chief claims: "The meat of bison is better preserved in the snow, or dried under a burning sun. My Pa' used to say that heavy wind and a thunderstorm could help too, but I have no clue how. And despite everyone contradicting me, I am persuaded a good fog will do as well"`];I.innerHTML+=tests.map(t=>"<option>"+t).join``
<select id=I oninput="O.innerHTML=(idx=I.selectedIndex)?(t=tests[idx-1])+'\n\n'+f(t):''" style="width:90vw"><option>---Tests---</select>
<pre id=O></pre>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.