밸런싱 법
시소 ( '이것'을 의미하는 프랑스어 'ci-ça'에서 유래)는 유사하게 유비쿼터스 한 슬라이드 및 스윙과 함께 놀이기구 장비의 삼위 일체를 형성합니다. 시소는 각 측면의 모멘트의 합이 동일한 경우에만 완벽한 균형을 유지합니다. 따라서 모멘트 합계가 낮은쪽에 특정 중량을 추가하여 시소의 균형을 맞출 수 있습니다. 이것을 달성하는 것이이 도전의 목표입니다.
도전
당신의 도전은 시소를 입력으로 묘사하고 다시 출력하고, 시소의 한쪽 끝에 무게를 더해 균형을 맞추는 것입니다.
입력
프로그램은 합리적인 형식으로 다음과 같은 ASCII 시소를 가져와야합니다.
100 100
-------------------
^
첫 번째 줄에는 시소의 무게를 나타내는 두 개의 숫자가 있습니다. 정확히 하나의 무게가 각 측면에 존재하며, 각각은 판자의 측면의 맨 끝에 작용합니다. 가중치는 정수로 보장되며 항상 판자의 해당 끝과 정렬됩니다. 이 숫자는 받침점 ( ^
)과 겹치지 않습니다 .
두 번째 줄은 시소의 '판'을 나타냅니다. 각 대시 ( -
)는 길이 ^
가없는 받침점 ( ) 바로 위의 대시를 제외하고 서로 대시와 동일한 길이를 나타냅니다 .
세 번째 줄은 시소의 받침을 나타냅니다. 이 받침점은이 줄에 공백이 아닌 유일한 문자 인 곡절 ( '^')로 표시됩니다. 받침점은 무게를 나타내는 숫자가 받침점 또는 받침점에서 받침점과 겹치지 않도록 충분한 공간이 남아있는 한 유효한 입력에서 널빤지 길이를 따라 임의의 위치에 배치 할 수 있습니다.
입력은 세 줄을 가지며 시소를 구성하는 문자 앞이나 뒤에 공백이 없어야합니다 (물론 세 번째 줄은 제외).
산출
출력을 위해 동일한 시소 그림을 표준 출력으로 인쇄해야하지만 시소의 균형을 유지하기 위해 하나의 무게로 더 큰 무게로 교체해야합니다. 입력은 정수만 사용하여이를 가능하게합니다. 따라서 가중치는 소수점이나 다른 유사한 표기법없이 표시해야합니다. 귀하의 언어가 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",
"-------------------",
" ^ "])
규칙
이것은 code-golf 이므로 가장 짧은 코드는 바이트 단위로 계산됩니다. 언어에서 바이트 수를 계산하는 것이 어색한 경우 메타를 확인하십시오.
표준 규칙 / 허점이 적용됩니다.
적절한 형식으로 입력해야합니다. 적절한 형식의 전체 목록은 다음과 같습니다.
- 줄 바꿈 문자로 구분 된 줄이있는 단일 문자열
- 각 문자열은 한 줄을 나타내는 문자열 목록
- 문자의 2D 배열 또는 매트릭스
관련 도전
- 시소 에 무게의 균형 을 잡으십시오-samgak의 2015 년 8 월 제안