Hành động cân bằng
Một cái cưa (được cho là từ 'ci-ça' của Pháp, có nghĩa là 'cái này-cái đó') tạo thành một phần ba trong bộ ba thiết bị sân chơi, cùng với cầu trượt và đu quay tương tự. Một cái cưa là cân bằng hoàn hảo nếu, và chỉ khi, tổng số khoảnh khắc ở mỗi bên là tương đương. Do đó, một cái cưa có thể được cân bằng bằng cách thêm một lượng trọng lượng cụ thể vào bên cạnh với tổng thời điểm thấp hơn; đạt được điều này là mục tiêu của bạn cho thử thách này.
Thử thách
Thách thức của bạn là lấy một mô tả của một cái cưa làm đầu vào và đầu ra nó một lần nữa, với trọng lượng được thêm vào một đầu của cưa để cân bằng nó.
Đầu vào
Chương trình của bạn phải có, ở bất kỳ định dạng hợp lý nào, máy cưa ASCII như sau:
100 100
-------------------
^
Dòng đầu tiên chứa hai số, mỗi số đại diện cho các trọng số trên cưa. Chính xác một trọng lượng có mặt ở mỗi bên, mỗi trọng lượng tác động vào phần cuối của mặt bên của tấm ván. Trọng lượng được đảm bảo là số nguyên và luôn thẳng hàng với phần cuối tương ứng của tấm ván. Những con số này sẽ không bao giờ trùng với điểm tựa ( ^
).
Dòng thứ hai đại diện cho 'tấm ván' của cưa máy. Mỗi dấu gạch ngang ( -
) biểu thị một độ dài bằng nhau với dấu gạch ngang khác, ngoại trừ dấu gạch ngang trực tiếp trên điểm tựa ( ^
) không có độ dài.
Dòng thứ ba đại diện cho điểm tựa của cưa. Điểm tựa này được đánh dấu bởi ký tự duy nhất không phải là khoảng trắng trên dòng này, dấu mũ ('^'). Điểm tựa có thể được định vị ở bất cứ đâu dọc theo chiều dài của tấm ván trong một đầu vào hợp lệ miễn là còn đủ không gian để các số đại diện cho trọng số không trùng với điểm tựa ở đầu vào hoặc đầu ra.
Đầu vào được đảm bảo có ba dòng và không có khoảng trắng trước hoặc sau các ký tự cấu thành cưa (tất nhiên, ngoại trừ dòng thứ ba, yêu cầu nó).
Đầu ra
Đối với đầu ra, mô tả cùng một cưa nhìn thấy nên được in ra thiết bị xuất chuẩn, nhưng với một (và chỉ một) trọng lượng được thay thế bằng trọng lượng lớn hơn, để cân bằng với cưa. Đầu vào được đảm bảo để thực hiện điều này có thể bằng cách sử dụng số nguyên một mình. Do đó, các trọng số phải được hiển thị mà không có dấu thập phân hoặc bất kỳ ký hiệu tương tự nào khác. Nếu ngôn ngữ của bạn không sử dụng thiết bị xuất chuẩn, bạn nên đi theo sự đồng thuận của cộng đồng / meta về đầu ra. Trailing newlines là tốt nhưng bất kỳ thay đổi khác đối với định dạng mô tả có thể không ổn.
Gương mẫu
Kiểm tra đầu vào và đầu ra tương ứng
Đầu vào 1
12 22
--------------------
^
Đầu ra 1
12 26
--------------------
^
Đầu vào 2
42 42
-----------
^
Đầu ra 2
42 42
-----------
^
Đầu vào 3
3 16
----------------
^
Đầu ra 3
14 16
----------------
^
Đầu vào 4
1 56
-------------------
^
Đầu ra 4
196 56
-------------------
^
Tham chiếu thực hiện - 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",
"-------------------",
" ^ "])
Quy tắc
Đây là môn đánh gôn , vì vậy đoạn mã ngắn nhất sẽ được tính bằng byte. Kiểm tra meta nếu đếm byte là khó xử trong ngôn ngữ của bạn.
Quy tắc chuẩn / sơ hở áp dụng.
Đầu vào phải được thực hiện trong một định dạng hợp lý. Một danh sách không đầy đủ các định dạng phù hợp được đưa ra như sau:
- Một chuỗi đơn có các dòng được phân tách bằng các ký tự dòng mới
- Một danh sách các chuỗi, mỗi chuỗi đại diện cho một dòng
- Mảng 2D hoặc Ma trận các ký tự
Những thách thức liên quan
- Cân bằng một tập các trọng số trên một cái cưa - Dự kiến tháng 8 năm 2015 bởi samgak