สร้างวงเล็บแข่งขัน


13

รับรายการอินพุตของสตริงที่ไม่ว่างให้แสดงเอาต์พุต ASCII art ที่เป็นตัวแทนของทัวร์นาเมนต์ตามกฎการวาดภาพต่อไปนี้:

  • จำนวนสตริงรับประกันได้ว่าเป็นปริมาณ 2,4,8,16,etc.
  • สองสายแรกเล่นกันและอีกสองสายเล่นกันและอื่น ๆ นี่คือรอบแรก
  • สำหรับแต่ละเกมให้เลือกผู้ชนะแบบสุ่มโดยมีความน่าจะเป็นเท่ากัน
  • สำหรับรอบต่อไปผู้ชนะในเกมแรกจะเป็นผู้ชนะในเกมที่สองผู้ชนะในเกมที่สามจะเป็นผู้ชนะในเกมที่สี่และต่อไป รอบต่อมาตามรูปแบบ
  • ในที่สุดก็มีหนึ่งผู้ชนะโดยรวม
  • สำหรับการส่งออกสวย (จำเป็น) _สายทั้งหมดจะต้องใช้ได้และต่อท้ายด้วยการขีดเส้นใต้
  • เพื่อให้วงเล็บเข้าแถวอย่างเหมาะสมแต่ละรายการจะต้องถูกบุด้วย_ความยาวเท่ากันสำหรับรอบนั้น
  • คุณสามารถเลือกได้ว่าการเติมเต็มจะเติมหรือต่อท้ายตราบใดที่สอดคล้องกัน
  • คุณสามารถเลือก pre-pad สตริงทั้งหมดให้มีความยาวเท่ากันแทนที่จะเป็นต่อรอบ แล้วแต่จำนวนใดจะ golfier สำหรับรหัสของคุณ

กฎเพิ่มเติม

  • ขึ้นบรรทัดใหม่หรือต่อท้ายช่องว่างหรือช่องว่างทั้งหมดเป็นตัวเลือกตราบใดที่ตัวละครตัวเองเข้าแถวอย่างถูกต้อง
  • ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
  • หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • นี่คือเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

ตัวอย่าง

ตัวอย่างกับเมือง['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']:

_Boston______
             \_New York____
_New York____/             \
                            \_New York_
_Charlotte___               /          \
             \_Charlotte___/            \
_Atlanta_____/                           \
                                          \_St. Paul_
_St. Paul____                             /
             \_St. Paul____              /
_Chicago_____/             \            /
                            \_St. Paul_/
_Los Angeles_               /
             \_Los Angeles_/
_Phoenix_____/

ตัวอย่างด้วย['Lions', 'Tigers', 'Bears', 'Oh My']:

_Lions__
        \_Tigers_
_Tigers_/        \
                  \_Tigers_
_Bears__          /
        \_Bears__/
_Oh My__/

ที่เกี่ยวข้อง
Okx

การเลือกผู้ชนะต้องเป็น Mersenne Twister แบบสุ่มหรือสามารถสุ่มหลอกได้หรือไม่
Zach Gates

@ ZachGates ตราบใดที่โอกาส 50-50 ระหว่างสองทีม "วิธีการใดก็ตามที่คุณต้องการใช้นั้นไม่เป็นไร
AdmBorkBork

คำตอบ:


6

ถ่าน , 92 79 ไบต์

A¹θWS⊞υ⪫__ιWυ«A⌈EυLκεA⁺θθδFυ«P×_εPκMδ↓»AE✂υ¹Lυ²⎇‽²κ§υ⁺λλυMε→Fυ«Mδ↑↗θ←↖θ→»Mθ↘Aδθ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด ต้องการบรรทัดว่างเพื่อทำเครื่องหมายจุดสิ้นสุดของอินพุต คำอธิบาย:

A¹θ

initialise qตัวแปร นี่ถือขนาดของซิกแซกคือครึ่งช่องว่างระหว่างแถว

WS⊞υ⪫__ι

อ่านเส้นที่นำเข้า nonblank uลงในอาร์เรย์ บรรทัดถูกล้อมรอบโดยอัตโนมัติโดย_s ขณะที่พวกเขาอ่านแม้ว่าพวกเขาจะยังไม่ได้เบาะ

Wυ«

วนซ้ำในขณะที่ยังมีสตริงเหลืออยู่

A⌈EυLκε

eคำนวณความกว้างของสตริงที่ใหญ่ที่สุดใน

A⁺θθδ

dคำนวณช่องว่างระหว่างแถวใน

Fυ«P×_εPκMδ↓»

สำหรับแต่ละทีมให้พิมพ์การแพ็ดดิ้งพิมพ์ทีมแล้วเลื่อนลงไปที่ทีมต่อไป

AE✂υ¹Lυ²⎇‽²κ§υ⁺λλυ

สำหรับทีมอื่น ๆ สุ่มเลือกระหว่างทีมนั้นหรือทีมก่อนหน้า (โปรดทราบว่าหากมีทีมเหลือเพียงทีมเดียวจะทำให้เกิดรายการว่างเปล่า)

Mε→Fυ«Mδ↑↗θ←↖θ→»Mθ↘

หากยังมีทีมเหลือให้ลากซิกแซกมารวมกันเป็นคู่

Aδθ

ความยาวของซิกแซกเป็นสองเท่าในแต่ละครั้ง


คุณคิดว่าจะมีกรณีใดบ้างที่ตัวดำเนินการอินพุตรายการจะเป็นประโยชน์หรือไม่
ASCII เท่านั้น

@ ASCII เท่านั้นดีฉันจะได้ใช้มันเป็น ASCII Venn Diagram คำถาม ...
นีล

: | คุณคิดว่าการใช้งานคุ้มค่าหรือไม่
ASCII เท่านั้น

@ ASCII- เพียงฉันคิดว่าคุณสามารถทำ▷vSหรืออะไรก็ได้สำหรับเรื่องนั้น
Erik the Outgolfer

2

Python 2 , 379 364 ไบต์

exec r"""c=input();from random import*;R,L,d=range,len,0;u,s="_ ";r=[[""]*-~L(c)@R(2*L(c)-1)]
while c:
 W=2+max(map(L,c));j=1<<d;J=j/2;D=d+d;d+=1
 @r:l[D]=s*W;l[D-1]=s*J
 @R(L(c)):
	h=l*2*j+j-1;r[h][D]=(u+c[l]+u*W)[:W]
	@R(h-J,h+J):r[-~l][~-D]=("/\\"[l<h]+s*abs(h-l-(l<h))).rjust(J)
 c=[choice(l)@zip(c[::2],c[1::2])]
@r:print"".join(l)""".replace("@","for l in ")

ลองออนไลน์!


คุณสามารถแทนที่การเยื้องสองระดับด้วยแท็บเอกพจน์และบันทึกสามไบต์
Jonathan Frech


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.