베스가 사막을 탈출하도록 도와주십시오


11

다른 물 운반 퍼즐 과 유사하지만 이 도전의 독특한 측면은 완전히 다른 퍼즐을 만듭니다.

베스

Beth는 사막 한가운데있는 오아시스에 있습니다. 호수에는 많은 양의 물이 있지만 불행히도 X 버킷 만 있으며 각 버킷에는 Y 리터의 물 용량이 있습니다.

Beth는 손에 물통 2 개를 휴대 할 수 있지만 생존하려면 여행 할 때마다 1km마다 정확히 1 리터를 마셔야합니다. 그녀는 또한 양동이를 반쯤 남겨 둘 수 있습니다 (물은 증발하지 않습니다).

도전

수식을 알아 내고 X와 Y의 양의 정수 값에 사용할 수 있는 가장 짧은 솔루션 을 작성하고 Beth가 오아시스에서 이동할 수 있는 최대 거리를 계산하십시오 . 버킷 사이의 물 이동이 허용됩니다.

X = 3, Y = 5

  1. Beth는 오아시스에서 물통 3KM을 1 개 남겨두고 다시 돌아옵니다 (오아시스에서 마지막 음료를 마신다)
  2. Beth는 3KM 지점에 12L의 풀 버킷을 추가했습니다.
  3. Beth는 6KM 포인트로 진행하여 물 4L를 담은 버킷을 남길 수 있습니다.
  4. 3KM 포인트로 돌아옵니다. 그녀는 이제 오아시스로 돌아 가기 위해 정확히 2L을 가지고 있습니다.
  5. 버킷을 채우고 6KM 지점으로 이동하십시오. 그녀는 이제 8L의 물을 가지고 있습니다.
  6. 15KM 지점까지 계속 진행하십시오.

답은 : 15

입출력

코드에서 직접 X / Y를 정의하거나 입력에서 읽을 수 있습니다. 결과는 변수 또는 출력 중 더 짧은쪽에 배치 될 수 있습니다.


2
이것이 코드 골프 여야합니까? 코드 챌린지로 태그되었습니다.
데니스

예, 코드 골프입니다. 태그를 추가했습니다. 올바른 수식을 작성하고 코드를 통해 표현하십시오.
romaninsh 2012 년

1
1 단계에서 확장 할 가치가 있다고 생각합니다. 처음에는 Beth가 5 리터의 물만으로 6km를 여행 할 수있는 방법이 명확하지 않았습니다.
xnor

1
프로그램이 출력하는 방식으로 테스트 케이스를 줄 수 있습니까?
Pavel

두 지점을 모두 해결하기 위해 질문을 편집했습니다.
romaninsh

답변:


2

자바 스크립트 (ES6), 25 바이트

x=>y=>((x<3?x:3)+x)*y/2+1
x=>y=>(x<3?x+x:x+3)*y/2+1
x=>y=>(x<3?x:(x+3)/2)*y+1
x=>y=>(x<3?x:x/2+1.5)*y+1

이들 모두 동일한 값을 계산합니다. 나는 더 짧은 공식을 생각해 낼 수없는 것 같습니다.

x보다 적을 때는 3가능한 한 많은 양의 물을 섭취하고 가능한 한 멀리 걸으십시오 x*y+1.

x3 이상인 경우 캐시 작성을 시작해야합니다.

오아시스에서 먼 거리에 전체 양동이를두고 y/2오아시스로 돌아갈 수 있습니다. 이 작업을 수행하려면 2 개의 버킷이 필요하지만 오아시스로 돌아올 때 2 개의 버킷을 채울 수 있기 때문에 2 개의 버킷 만있는 경우에는 유용하지 않습니다.

물통이있는 오아시스에서 물통을 y/2가득 채운 채 y오아시스로 돌아갈 수 있습니다. 이를 위해서는 3 개의 버킷이 필요합니다.

전체 버킷이있는 y및 오아시스에서 전체 버킷을 y/2멀리두고 3y/2오아시스로 돌아갈 수 있습니다. 이렇게하려면 4 개의 버킷이 필요합니다. 그런 다음 전체 버킷을 멀리두고 y/2오아시스로 돌아와야합니다.

결국에 전체 버킷으로 끝날 수 있습니다 (x-1)y/2. ( xy/2왕복은 xy버킷의 총 용량 이므로 오아시스로 돌아갈 수 없으므로 전체 버킷을 그대로 둘 수는 없습니다 .)

나머지 버킷을 사용하면 (x-3)y/2... y또는에 전체 버킷을 남길 수 있습니다 y/2. 이 시점에서 당신은 당신이 할 수있는 한 전체 양동이를 집어 들고 가능한 한 멀리 걸어갑니다. 에 도달 (x-1)y/2하면 여전히 두 개의 풀 버킷이 남아있어에 도달 할 수 있습니다 (x+3)y/2.

여분 1의 규칙은 물이 없어도 마지막 마일을 걸을 수있는 규칙의 단점에서 비롯됩니다. 위의 예에서 버킷을 위에서 설명한 것보다 약간 더 멀리 둘 수있는 것으로 나와 있지만 실제로는 물을 덜 남기거나 물을 마실 때까지 물을 마셔야하기 때문에 더 이상 걸을 수 없습니다. 의 위에.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.