나는 얼마 전에이 도전을 올렸 는데, 산타가 얼마나 많은 엘프들이 선물을 전달 해야하는지에 관한 것이다 .
인구 증가로 인해 올해 산타는 조금 더 압박을 받고 있습니다. 과거에는 매우 비동기 적으로 작동했지만 점점 더 동기화되는 실험을 시작했습니다. 따라서 산타는 주어진 엘프 수를 가지고 각 지역에 선물을 전달하는 데 시간이 얼마나 걸리는지 알아야합니다.
석탄의 무게는 지난 2 년 동안 변하지 않았습니다. 여전히 선물보다 무겁기 때문에 산타는 집안에 나쁜 사람당 3 명의 엘프가 있고 집안에 좋은 사람당 2 명의 엘프가 필요합니다.
엘프는 일년 내내 크리스마스 교육을하므로 배달 사이에 휴식이 필요하지 않습니다. 그들은 한 번에 한 집에 선물을 전달할 수 있으며 다음 집에 가기 전에 산타의 썰매로 돌아가 다음 선물을 모아야합니다. 내가 공유 할 자유가없는 이유 때문에, 엘프는 산타의 썰매와 집 사이를 여행하는 데 시간을 소비하지 않으며 (산타의 썰매가 지붕에있을 때만 여행 할 수 있음) 그의 썰매가 집에서 집으로 이사하는 데 시간을 소비하지도 않습니다. (산타의 썰매 는 연료를 모으기 위해 집에서 집으로 이사해야하지만 이미 너무 많이 말하고 있습니다).
선물을 제공하고 있습니다 엘프 지출 할 필요가 4 초 * 각 지출 석탄 필요 제공되는 선물을 전달하고, 엘프 5 초 * 각 산타 항공 관리 규정에 따라 (을 제공, 그들에 석탄 먼지와 장갑은 즉시 소각해야 썰매를 타면 시간이 걸립니다). 또한지도는 왼쪽에서 오른쪽으로 순서대로 방문해야하며, 모든 선물이 현재있는 집으로 배달 될 때까지 엘프는 다른 집으로 선물을 배달 할 수 없습니다.
산타가이 지역에 충분한 엘프를 보유하고 있다고 가정한다면, 나쁜 사람들에게 선물을 전달하는 데 필요한 시간, 집당 5 초, 또는 모든 사람이 좋으면 집당 4 초가 걸리는 한 시간이 걸립니다.
그러나 이전 시즌과는 달리,이 오는 크리스마스 산타는 각 지역에 충분한 엘프를 가지고 있지 않을 수 있으므로 4 초는 절대 최소 시간입니다 * 0이없는 한 주어진 집에 선물을 배달하는 데 걸리는 시간 좋은 사람들과 0 명의 나쁜 사람들은 0 초가 걸립니다.
또한 주택 중 하나라도 나쁜 목록에 누군가가 있으면 산타는 적어도 3 명의 엘프가 필요합니다. 주택 중 적어도 하나에 멋진 명단에 사람이 있고 그 중 아무도 못된 명단에 사람이 없다면 산타는 적어도 두 명의 엘프가 필요합니다. 크리스마스 정신이있는 집이 없다면, 0을 포함한 모든 엘프는 0 초가 걸립니다.
산타의지도에서 집은로 표시되고 *각 집은로 나뉩니다 +. 산타는 여전히 다른 도전 과 같은지도를 사용 하지만 여기에 관련 문서를 포함시킬 것입니다.
집안의 양쪽에는 숫자가 있습니다. 왼쪽은 집안의 장난 꾸러기 사람들의 수를 나타내고, 오른쪽은 집안의 멋진 사람들의 수를 나타냅니다. 한쪽에 숫자가 없으면 0으로 해석됩니다.
나는 그것이 미친 것처럼 들릴지 모르지만, 어떤 사람들은 "크리스마스를 좋아하지 않습니다". 때때로 집의 양쪽에 숫자가 없을 수도 있습니다.
산타의지도 중 하나는 다음과 같습니다.
1*3+2*+*5+*+4*7
산타가 썰매에 9 명의 엘프를 가지고 있다고 가정 해 봅시다.
(0s) 첫 번째 집에는 1 명의 장난 꾸러기와 3 명의 멋진 사람들이 있습니다. 엘프 중 3 명은 5 초, 석탄은 4 초가 걸리며 선물을 전달합니다. 5 초 후 산타의 썰매가 다음 집으로 이사
(5s) 두 번째 집에는 2 명의 장난 꾸러기와 0 명의 멋진 사람들이 있습니다. 엘프 중 6 명은 5 초가 걸리며 석탄을 공급합니다. 5 초 후 산타의 썰매가 다음 집으로 이사
(10s) 세번째 집에는 0 명의 장난 꾸러기와 5 명의 멋진 사람들이 있습니다. 엘프 중 8 명은 4 개의 선물을 전달합니다 (남은 선물은 선물을 전달할 수 없음). 4 초 후, 모든 엘프들이 돌아 왔고, 그들 중 2 명은 다른 선물을 배달하기 위해갔습니다 (썰매는 엘프가 다음 집으로 가기 전에 돌아올 때까지 기다려야 함).
(18s) 네번째 집은 크리스마스 정신이 아니기 때문에 0 명의 장난 꾸러기와 0 명의 멋진 사람들이 있으며 건너 뜁니다.
(18s) 다섯 번째 집에는 4 명의 장난 꾸러기와 7 명의 멋진 사람들이 있습니다. 이것은 조금 복잡해집니다 ...
I. 9 명의 엘프 모두 석탄 3 개를 선물로 간다 (t + 0s, t + 5s) II. 5 초 후, 그들은 모두 썰매에 돌아 왔고, 그들 중 3 명은 석탄의 마지막 선물 (t + 5를 남겨두고, t + 10을 남겨두고)로 갔고, 나머지 6 명은 3 가지 멋진 선물을 주었다 (t +를 떠난다) 5s, t + 9s를 반환).
III. 4 초 후, 6 명의 엘프가 돌아와서 3 가지 멋진 선물을 제공합니다 (t + 9는 그대로두고 t + 13은 반환).
IV. 그들이 떠난 지 1 초 후, 석탄 선물을 전하던 3 명의 엘프가 돌아 왔고, 그 중 2 명은 마지막 멋진 선물을 전하기 위해 떠났습니다 (+10 초, t + 14 초 반환).
(18 + 14 = 32 초 ) 산타가 해당 지역에 선물을 전달했습니다.
보시다시피 산타 가이 지역에 선물을 배달 하는 데 총 32 초가 걸립니다 . 그러나 그것은 산타의지도 중 하나의 단순화 된 버전이었습니다. 일반적으로 산타의지도에는 여러 줄이 있으며 그의 목록에 더 잘 맞도록 사각형 모양입니다. 노멀 맵은 다음과 같이 보일 수 있습니다 ( \n각 줄의 끝에 있는 a )
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
로 (26) 엘프 (또는 더 많은 양)는 산타에게 걸릴 71초를 .
로 20 엘프 , 그것은 산타에게 걸릴 것 76초을 .
로 15 엘프 , 그것은 산타에게 걸릴 것 80초을 .
로 3 엘프 , 그것은 산타에게 걸릴 것 2백88초을 .
로 2 엘프 (또는 낮은 금액), 그것은 것 없다.
아, 그리고 한 가지 더 – 엘프들이 선물을 전달하는 순서는 ( 선물 을 전달하는 사람들의 시간 차이 때문에) 사람들 에게 선물을 전달할 수있는 시간을 항상 출력 해야 합니다.
도전
산타가 주어진 수의 엘프들이 선물을 배달하는 데 걸리는 시간을 결정하도록 도와주세요.
주택
- 집은
* - 주택은
+ - 집 왼쪽의 숫자는 장난 꾸러기의 수를 나타냅니다 (숫자는 0을 의미하지 않음)
- 오른쪽의 숫자는 좋은 사람의 수를 나타냅니다 (숫자는 0을 의미하지 않음)
\n입력에 줄 바꿈 ( ) 이있을 수 있으며 분할로 처리해야합니다.
엘프
- 산타는 나쁜 사람들을 위해 3 명의 엘프의 도움이 필요합니다 (석탄은 선물보다 훨씬 무겁습니다). 선물 을 전달하는 데 5 초가 걸립니다 *
- 산타의 도움을 필요로 두 개의 좋은 사람들을위한 엘프, 그리고 이러한 엘프 걸릴 것 사초는 * 선물을 전달하기를
- 집의 양쪽에 숫자가 없으면 산타는 그 집을 방문하지 않으므로 시간이 걸리지 않을 것입니다 (크리스마스 정신이없는 사람들은 석탄조차도받을 자격이 없습니다)
산타
- 산타는 집에 하나씩 선물을 전달해야합니다
- 산타는 모든 엘프가 썰매에 돌아와 모든 선물이 그 집으로 배달 될 때까지 다음 집으로 이사 할 수 없습니다 (우리는 엘프를 뒤로두고 싶지 않습니다.
- 산타의 썰매는 집에서 집으로 여행하는 데 시간을 소비하지 않습니다 (다시 말해 공유 할 자유가없는 이유로)
해야 할 일
주택과 많은 엘프의지도가 주어지면, 산타가지도에있는 집에 선물을 전달하는 데 얼마나 걸리는지 인쇄하십시오.
* (저는 엘프가 선물을 배달하는 데 걸리는 시간을 공유 할 수 없습니다.이 도전에 포함 된 시간이 정확한지 확인하거나 거부 할 수 없습니다)
규칙
- 맵과 엘프 수의 두 가지 입력이 있습니다. 입력은 함수에 대한 인수 또는 STDIN 또는 이와 동등한 항목으로 사용할 수 있습니다. 귀하의 언어로 2 개의 입력을받는 것이 불가능한 경우에만 2 개의 입력을 단일 입력 문자열로 받아 들일 수 있으며, 일반적으로 입력에 포함되지 않은 일부 문자로 구분됩니다 (
+*\n또는0-9입력 문자열 중 하나 가 모호 할 수 없음) 예,. - 엘프 수는 항상 음이 아닌 정수입니다 (0은 유효 함)
- 출력은 함수의 리턴 값이거나 STDOUT 또는 이와 동등한 것으로 인쇄 될 수 있습니다 . 산타가 주어진 수의 엘프와 함께 주어진 지역에 선물을 전달하는 것이 불가능한 경우, 일정한 음수 또는 숫자가없는 일관된 메시지 를 출력해야 합니다
- 에 인쇄 된 모든 STDERR는 당신이 결과 나에 오류 메시지가 인쇄되지 않을 수 있으므로, 무시됩니다 STDERR을
- 지역에 유효하지 않은 엘프 수를 지정하면 프로그램이 중단되지 않습니다.
- 산출물은 산타가 주어진 엘프 수와 함께 선물을 배달하는 데 걸리는 총 시간입니다.
- 엘프들이 선물을 배달하는데 걸리는 시간은 항상 가장 적어야합니다
- 입력은 숫자 만 포함 할 것
+,*그리고 줄 바꿈\n(입력이 포함되는 다른 문자를 지정하지 않는 언어는 두 개의 입력을 할 수없는 경우 첫 번째 규칙에서 (보고) ) - 표준 허점 적용
테스트 사례
"1*1", 5 elves => 5
"1*1", 3 elves => 9
"1*2", 7 elves => 5
"1*2", 5 elves => 10
"1*2", 3 elves => 13
"2*1", 8 elves => 5
"2*1", 5 elves => 9
"2*1", 3 elves => 14
"1*" , 3 elves => 5
"1*" , 2 elves => (error message)
"*1" , 2 elves => 4
"*1" , 0 elves => (error message)
"*" , 0 elves => 0
"1*1+1*1", 5 elves => 10
"1*1+1*1", 3 elves => 18
"1*1+*+1*1", 3 elves => 18
"1*2+2*1", 8 elves => 10
"1*2+2*1", 7 elves => 14
"1*2+2*1", 6 elves => 18
"1*2+2*1", 3 elves => 27
"1*2+2*1", 2 elves => (error message)
"*+*+*+*", 2 elves => 0
"*+*+*+*", 0 elves => 0
"1*3+2*+*5+*+4*7", 9 elves => 32
(바람직하게 나는 그 모든 것을 얻었습니다)
채점
산타는 매일 매일 많은 것을 보고 있습니다. 그가 전달할 모든 선물, 그가 가지고있는 모든 엘프, 그가 배달하는 모든 집을 선물합니다 ... 산타에게 최고의 크리스마스 선물은 약간의 것을 볼 수 있습니다. 이러한 이유로 바이트 단위의 최단 제출이 이깁니다 .
리더 보드
리더 보드와 언어 별 수상자 개요를 모두 생성하는 스택 스 니펫입니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
## Language Name, N bytes
여기서 N은 제출 크기 (바이트)입니다.
헤더에 여러 숫자를 포함하려면 (예를 들어, 오래된 점수를 받거나 바이트 수에 플래그 포함) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오.
## Language Name, <s>K</s> X + 2 = N bytes
4*7은 14 초가 소요됩니다 (2D 맵이 도입되기 직전에 "에세이"에서 약 절반 정도
naughty*5+nice*4각 집에서 완전히 뒤 쳐야합니다 . ( 4*7예제 에는 없음 )
5*15있고 9엘프가 있다면 (최소) 20 초 또는 22 초가 걸립니까? 해당 텍스트 표현 을 참조하여 해당 예를 설명하십시오.
5*15은을 (를) 읽어야 4*15합니다.
(1+0+0+1+2+3+1+0+0+0+4+1+0+0+1+2+3+2+0+0)*5+(2+0+4+0+4+0+6+0+0+0+2+1+4+3+0+3+10+0+5+0)*4=21*5+44*4=105+176=281(내가 전체 "에세이를"읽지 않은 말을해야하지만!)