요청한 날씨에 대한 부족 토템 설정


11

수족 마을이 있습니다. 토템이 있습니다.

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

토템은 수 우가 다양한 임무를 수행 할 수 있도록 날씨를 습득 할 수있게 해줍니다. 적절한 날씨를 불러 내기 위해 마을 사람들이 토템을 제대로 장식하도록 도와주십시오. 토템에는 여러 부분이 있습니다.

             __
         ___|AA|___
   \/    \BBBBBBBB/    \/
   /\     ``|CC|``     /\
  /^^\      |DD|      /^^\
 / /\ \  13 |EE| 42  / /\ \
''''''''''''''''''''''''''''
  • A태양 () 이나 구름을 위한 것 ww
  • B위한 """""""" 또는 ::::::::
  • C입니다 뇌우 zz
  • D위한 바람 ~~
  • E입니다 안개 ==

그러나 이것이 전부는 아닙니다. 토템에는 날씨 댄서가 필요합니다. 더 많은 요소가 호출 될수록 필요한 댄서의 수가 더 많아집니다. 하나의 요소가 호출되면 댄서가 필요합니다. 두 가지 요소, 두 명의 댄서. 네 가지 요소 외에도 항상 최대 네 명의 댄서가 있습니다. 호출 된 요소가 없으면 댄서가 필요하지 않습니다. 토템은 쉬어야합니다.

날씨 무희는 순서대로 나타나야합니다 1234. 예를 들어 댄서가 두 명인 경우 슬롯 12점유해야합니다. 또한 각 댄서는 다른 그림을 수행합니다.

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

이제 마을 사람들은 날씨를 바라고 표현할 것입니다. 그들은 원하는 날씨 요소를 포함하는 문장을 발음합니다. 토템과 댄서들이 자신의 소원을 이루도록 설정하십시오.

도전

문자열을 입력으로 사용하고 문장의 요소 ( sun , rain ,…)를 일치시키고 토템을 적절하게 설정하고 전체 댄서를 출력 하는 프로그램을 작성하십시오 . 프로그램은 입력 문자열의 정확성을 확인할 필요가 없습니다 (예 : sunclouds 가 모두 포함되지 않음 ). 문자 그대로의 단어 와 일치해야합니다 .

  • 쉼표가 단어의 일부가 아니기 때문에 입력 문자열이 windX says: "I like the wind, it blows the worries away" 와 일치 합니다.
  • windywind 는 서로 다른 단어 이므로 입력 문자열 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  / /\ \
''''''''''''''''''''''''''''

이것은 이므로 바이트 단위의 최단 답변이 이깁니다. 설명이 권장됩니다.


우리는 우리가 모두하지 않을 것이라고 가정 할 수 sunclouds, 또는 둘 모두 rainsnow?
HyperNeutrino

@HyperNeutrino 이것은 도전에 이미 지정되어 있습니다.
Jim

아 나는 그 일을 여러 번 해냈다 (도전의 일부를 놓쳤다). 죄송합니다 : P
HyperNeutrino

일에 대한 롤 The papoose shouts: "I WANNA GO OUTSIDE PLAY UNDER THE SUN!". 또한이 도전은 내가 생각했던 것보다 훨씬 덜 고통스럽고 훨씬 더 재미있었습니다. 도전 : P :)
HyperNeutrino

나는 이것과 같은 도전을 그리워한다. 너무 어렵지 않고 FGITW도 아니고 골프 언어도 아니며 실제로 작은 4 바이트를 찾기보다는 코딩해야합니다.
Uriel

답변:


2

파이썬 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

@Jim 잘, 그들은 확실히 기능의 주요 부분이 아닙니다
Uriel

상당히 다른 알고리즘을 사용하는 다른 Python 솔루션을 게시했습니다. 당신이 당신의 골프로 사용하는 것이 낫다고 생각한다면, 나는 당신과 너무 비슷한 것으로 내 것을 지울 것입니다.
HyperNeutrino

@HyperNeutrino 나는 단지 골프를 쳤고 나는 당신이 btw를 사용한 것들 중 일부를 쳤다고 생각합니다. 나는 일반적으로 다른 솔루션을 내 것과 같은 언어로 신경 쓰지 않지만 일반적으로 이러한 솔루션을 게시하지 않는 것이
Uriel


2

파이썬 3 , 473 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. 마지막 두 줄을 print(r...28)460 바이트 로 병합하십시오 .
ovs

@ovs whoops는 그것에 대해 잊었다. 감사!
HyperNeutrino

1

자바 스크립트 (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,"'")

여기서 아이디어는 먼저 토템 폴을 생성 한 다음 양쪽에 미러 된 티크를 추가하는 것입니다.

두 가지 도우미 함수를 포함 i합니다.. 문자열이 입력의 단어 중 하나인지 확인합니다. 그리고 g, 어떤 않습니다 i반환 주어진 문자열을하거나 " ". 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.