Thiết lập vật tổ của bộ lạc cho thời tiết được yêu cầu


11

Có một ngôi làng Sioux. Nó có một vật tổ:

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

Vật tổ cho phép Sioux làm chủ thời tiết để giúp đỡ trong các nhiệm vụ khác nhau của họ. Giúp dân làng trang trí vật tổ đúng cách để gọi thời tiết thích hợp. Vật tổ có nhiều phần:

             __
         ___|AA|___
   \/    \BBBBBBBB/    \/
   /\     ``|CC|``     /\
  /^^\      |DD|      /^^\
 / /\ \  13 |EE| 42  / /\ \
''''''''''''''''''''''''''''
  • Adành cho mặt trời () hay mây ww
  • Bdành cho mưa """""""" hoặc tuyết ::::::::
  • Cdành cho giông bão zz
  • Dlà cho gió ~~
  • Edành cho sương mù ==

Nhưng đó không phải là tất cả. Vật tổ cần vũ công thời tiết. Càng nhiều yếu tố được gọi, số lượng vũ công cần thiết càng cao. Nếu có một yếu tố được gọi, một vũ công là cần thiết. Hai yếu tố, hai vũ công. Ngoài bốn yếu tố, sẽ luôn có nhiều nhất bốn vũ công. Nếu không có yếu tố được gọi, không cần vũ công. Vật tổ cần nghỉ ngơi.

Các vũ công thời tiết phải xuất hiện theo thứ tự 1234. Ví dụ, nếu có hai vũ công, các vị trí 12phải được chiếm. Hơn nữa, mỗi vũ công thực hiện một hình khác nhau:

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

Bây giờ, dân làng sẽ bày tỏ mong muốn thời tiết của họ. Họ sẽ phát âm một câu có chứa (các) yếu tố thời tiết mà họ muốn có. Thiết lập vật tổ và các vũ công để thực hiện mong muốn của họ.

Thử thách

Viết chương trình lấy một chuỗi làm đầu vào, khớp với các thành phần trong câu ( mặt trời , mưa , tập) và xuất ra toàn bộ ngôi làng với vật tổ được đặt đúng và các vũ công của nó. Chương trình của bạn không phải kiểm tra tính chính xác của chuỗi đầu vào (ví dụ: nó sẽ không chứa cả mặt trờimây ). Nó phải khớp với các từ (theo nghĩa đen):

  • Chuỗi đầu vào X says: "I like the wind, it blows the worries away"khớp với gió , vì dấu phẩy không phải là một phần của từ
  • Chuỗi đầu vào Y says: "I hope the weather won't get too windy"không khớp với gió , vì giógió là hai từ khác nhau

(Các) từ phù hợp được đảm bảo nằm trong phần trích dẫn của chuỗi đầu vào (phần đầu tiên chỉ định người đang nói sẽ không bao giờ chứa từ có thể ghép được).

Ví dụ

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  / /\ \
''''''''''''''''''''''''''''

Đây là vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng. Giải thích được khuyến khích.


Chúng ta có thể giả định rằng chúng tôi sẽ không có được cả hai sunclouds, hoặc cả hai rainsnow?
HyperNeutrino

@HyperNeutrino Điều này đã được chỉ định trong thử thách.
Jim

Ah. Tôi đã thực hiện điều đó nhiều lần (thiếu các phần của thử thách). Xin lỗi: P
HyperNeutrino

lol +1 cho The papoose shouts: "I WANNA GO OUTSIDE PLAY UNDER THE SUN!". Ngoài ra, thử thách này đã bớt đau đớn và vui hơn rất nhiều so với tôi nghĩ nó sẽ rất cảm ơn vì thử thách: P :)
HyperNeutrino 18/07/17

Tôi nhớ những thử thách như thế này. Không quá khó, không quá FGITW, không quá ngôn ngữ chơi gôn và thực sự yêu cầu bạn phải viết mã thay vì tìm một bộ 4 nhỏ
Uriel

Câu trả lời:


2

Python, 527 524 508 504 481 474 462 461 byte

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)

Hãy thử trực tuyến!


Trong thử thách cuối cùng của tôi, tôi đã thất vọng về cách mọi người sử dụng regex. Tôi nghĩ rằng với cái này, tôi sẽ không có. Chà, tôi hơi ngạc nhiên khi
Jim

@Jim tốt, họ chắc chắn không phải là phần chính của chức năng
Uriel

Tôi đã đăng một giải pháp Python khác sử dụng thuật toán khá khác biệt; nếu bạn nghĩ sẽ tốt hơn nếu chỉ sử dụng nó như một sân golf của bạn, tôi sẽ xóa cái của tôi thành quá giống với bạn.
HyperNeutrino

@HyperNeutrino Tôi chỉ chơi golf và tôi nghĩ rằng tôi đã đánh một số thứ bạn đã sử dụng btw. Tôi thường không bận tâm đến các giải pháp khác giống như lang của tôi, mặc dù tôi thường không thích đăng những thứ này
Uriel


2

Python 3 , 473 464 460 byte

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)

Hãy thử trực tuyến!

-9 byte
-4 byte nhờ vào ovs


Tôi không thấy lý do tại sao bạn cần s. Chỉ cần hợp nhất hai dòng cuối cùng của bạn print(r...28)cho 460 byte.
trứng

@ovs whoops quên mất điều đó. Cảm ơn!
HyperNeutrino

1

JavaScript (ES6), 417 byte

(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,"'")

Ý tưởng ở đây là tạo ra cột totem trước, sau đó thêm các tikis được nhân đôi ở cả hai mặt của nó.

Bao gồm hai hàm trợ giúp : i, kiểm tra xem một chuỗi có phải là một trong các từ trong đầu vào không; và g, nó thực hiện ivà trả về chuỗi đã cho hoặc " ". gcũng tính có bao nhiêu yếu tố bị thiếu để sử dụng cho các vũ công ở phía dưới.

Kiểm tra đoạn trích

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>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.