พระราชบัญญัติการปรับสมดุล
See-saw (สมมุติจาก 'ci-ça', ความหมาย 'this-that') ในรูปแบบหนึ่งในสามของอุปกรณ์สนามเด็กเล่นศักดิ์สิทธิ์พร้อมด้วยสไลด์และแกว่งที่แพร่หลายในทำนองเดียวกัน การเลื่อยนั้นมีความสมดุลที่สมบูรณ์แบบหากและถ้าหากผลรวมของช่วงเวลาในแต่ละด้านเท่ากัน เลื่อยสามารถปรับสมดุลได้โดยการเพิ่มน้ำหนักที่เฉพาะเจาะจงกับด้านข้างด้วยผลรวมช่วงเวลาที่ต่ำกว่า การบรรลุเป้าหมายนี้เป็นเป้าหมายของคุณสำหรับความท้าทายนี้
ท้าทาย
ความท้าทายของคุณคือการแสดงให้เห็นถึงการมองเห็นเป็นอินพุทและเอาท์พุทมันอีกครั้งโดยมีการเพิ่มน้ำหนักที่ปลายด้านหนึ่งของการเลื่อยเพื่อความสมดุล
อินพุต
โปรแกรมของคุณจะต้องใช้รูปแบบที่เหมาะสมในรูปแบบ ASCII ที่จะเห็นดังต่อไปนี้:
100 100
-------------------
^
บรรทัดแรกมีตัวเลขสองตัวโดยแต่ละตัวแทนน้ำหนักที่เห็นได้ มีน้ำหนักตัวเดียวอยู่ด้านข้างแต่ละอันทำหน้าที่ส่วนปลายสุดของไม้กระดาน น้ำหนักถูกรับประกันว่าจะเป็นจำนวนเต็มและจัดให้สอดคล้องกับจุดสิ้นสุดของไม้กระดานเสมอ ตัวเลขเหล่านี้จะไม่ทับซ้อนกับศูนย์กลาง ( ^
)
บรรทัดที่สองแสดงถึง 'ไม้กระดาน' ของเลื่อย แต่ละเส้นประ ( -
) แสดงความยาวเท่ากันของเส้นประแต่ละเส้นยกเว้นเพียงขีดกลางเหนือจุดศูนย์กลาง ( ^
) โดยตรงซึ่งไม่มีความยาว
บรรทัดที่สามแสดงถึงศูนย์กลางของการเลื่อย จุดศูนย์กลางนี้มีการทำเครื่องหมายด้วยตัวละครเท่านั้นที่ไม่ได้มีช่องว่างในบรรทัดนี้เป็นหมวก ('^') ศูนย์กลางสามารถวางตำแหน่งใดก็ได้ตามความยาวของไม้กระดานในอินพุตที่ถูกต้องตราบใดที่มีพื้นที่เหลือเพียงพอเพื่อให้ตัวเลขที่เป็นตัวแทนของน้ำหนักไม่ทับซ้อนกับศูนย์กลางในอินพุตหรือเอาต์พุต
อินพุตรับประกันว่ามีสามบรรทัดและไม่มี white-space ก่อนหรือหลังอักขระที่ประกอบด้วย see-saw (ยกเว้นแน่นอนบรรทัดที่สามซึ่งจำเป็นต้องใช้)
เอาท์พุต
สำหรับเอาท์พุทภาพวาดที่เห็นแบบเดียวกันควรถูกพิมพ์ไปยัง stdout แต่มีน้ำหนักหนึ่ง (และมีเพียงหนึ่ง) ที่ถูกแทนที่ด้วยน้ำหนักที่มีขนาดใหญ่ขึ้นเพื่อที่จะปรับสมดุลของเลื่อย อินพุตมีการรับประกันว่าจะทำให้เป็นไปได้โดยใช้จำนวนเต็มเพียงอย่างเดียว ดังนั้นน้ำหนักจะต้องแสดงโดยไม่มีจุดทศนิยมหรือสัญลักษณ์อื่นที่คล้ายคลึงกัน หากภาษาของคุณไม่ได้ใช้ stdout คุณควรไปตามมติของชุมชน / เมตาในการแสดงผล การขึ้นบรรทัดใหม่มีผลดี แต่การเปลี่ยนแปลงรูปแบบอื่น ๆ นั้นอาจไม่เป็นที่ยอมรับ
การยกตัวอย่าง
ทดสอบอินพุตและเอาต์พุตที่สอดคล้องกัน
อินพุต 1
12 22
--------------------
^
เอาท์พุท 1
12 26
--------------------
^
อินพุต 2
42 42
-----------
^
เอาท์พุท 2
42 42
-----------
^
อินพุต 3
3 16
----------------
^
เอาท์พุท 3
14 16
----------------
^
อินพุต 4
1 56
-------------------
^
เอาท์พุท 4
196 56
-------------------
^
การดำเนินการอ้างอิง - Python 3
# Takes a list of strings as input
def balance_seesaw(lines):
weights = [int(w.strip()) for w in lines[0].split()]
length = len(lines[1])
pivot = lines[2].find("^")
left_length = pivot
right_length = length - 1 - pivot
left_torque = weights[0] * left_length
right_torque = weights[1] * right_length
if left_torque > right_torque:
weights[1] = left_torque // right_length
elif right_torque > left_torque:
weights[0] = right_torque // left_length
weights = [str(w) for w in weights]
string_gap = " " * (length - sum(len(w) for w in weights))
lines[0] = weights[0] + string_gap + weights[1]
print("\n".join(lines))
balance_seesaw(["1 56",
"-------------------",
" ^ "])
กฎระเบียบ
นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดจะนับเป็นไบต์ ตรวจสอบเมตาว่าการนับไบต์เป็นภาษาที่คุณใช้ไม่ได้หรือไม่
ใช้กฎ / ช่องโหว่มาตรฐาน
ต้องป้อนข้อมูลในรูปแบบที่เหมาะสม รายการที่ไม่ครบถ้วนสมบูรณ์ของรูปแบบที่เหมาะสมมีดังต่อไปนี้:
- สตริงเดี่ยวที่มีบรรทัดคั่นด้วยอักขระบรรทัดใหม่
- รายการสตริงแต่ละสตริงแสดงบรรทัด
- อาร์เรย์ 2 มิติหรือเมทริกซ์ของอักขระ
ความท้าทายที่เกี่ยวข้อง
- ยอดคงเหลือชุดของน้ำหนักในการดู - เสนอสิงหาคม 2015 โดย samgak