철학자들은 오랫동안 트롤리 문제를 고민해 왔습니다 . 불행히도 아직이 문제를 해결 한 사람은 없습니다. 다행히 프로그래머로서 우리는 컴퓨터를 사용하여 문제를 해결할 수 있습니다!
입력
프로그램은 (상기 최대 하나의 에지 입력으로서 지시 그래프 A (유한) 걸릴 것 x
까지 y
임의 들어 x
하고 y
), 지정된 노드와, 각 모서리에 부착 된 음이 아닌 정수 (즉, 트랙에 연결된 사람의 수를 나타냄) . 또한 모든 노드에는 하나 이상의 출구 가장자리가 있습니다.
트롤리는 지정된 노드에서 시작합니다. 매 턴마다 트롤리가 노드에 있으면 x
공리주의자가 에지를 선택합니다 (x,y)
. 그 가장자리에있는 사람들은 죽고 트롤리는 이제 가장자리에 y
있습니다. 이 과정은 영원히 계속됩니다.
사람들은 한 번만 죽을 수 있기 때문에 가장자리 (x,y)
에 n
사람들이 묶여 있고 트롤리가 100 번을 넘어 가면 여전히 n
사망에 이를뿐입니다 .
산출
공리주의자는 사망하는 사람의 수를 최소화하는 방식으로 자신의 선택을합니다 (유한 인 만 있기 때문에 유한 한 것으로 보장됨). 프로그램이이 번호를 출력합니다.
입력 형식
원하는 방식으로 입력 그래프를 가져올 수 있습니다. 예를 들어, 행렬로 사용하여 지정된 노드를 0으로 레이블 된 노드로 계산할 수 있습니다 x1,y1,n1;x2,y2,n2;...
. 또는과 같은 것을 사용할 수 있습니다 . 예를 들어 0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
표준 트롤리 문제 (루프가 끝에 있음)를 나타냅니다.
테스트 케이스
0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
-> 1 (0에서 a로, a에서 c로 (한 사람을 죽인 후) 트롤리를 c에서 c로 계속 반복합니다).0,0,1;0,a,5;a,a,0
-> 1 (영원히 1 명 이상 계속해서 0에서 0으로 유지),0,a,5;0,b,1;a,a,1;b,b,6
-> 6 (0-> a-> a-> a-> a-> ... (b로가는 욕심 많은 해결책은 틀릴 것입니다)0,a,1;0,b,5;a,b,1;b,a,1
-> 3 (0-> a-> b-> a-> b-> ...)0,a,1;0,b,1;a,a,0;b,b,0
-> 1 (공리주의자가 취할 수있는 두 가지 옵션이 있습니다. 둘 다 한 사람 만 죽일 수 있습니다)
이것은 code-golf 이므로 가장 짧은 답변이 이깁니다! 행운을 빕니다.
참고 : 루프 루프 루프가 끊어지지 않으며 멀티 트랙 표류 가 금지됩니다. 또한, Asimov의 세 가지 법칙 (/ s) 에서이 문제를 생각하는 것을 선호하지만 Peter Taylor는 샌드 박스 에서이 문제가 가장 낮은 무게의 rho (루프 자체 경로를 찾는 것)와 수학적으로 동일하다고 언급했습니다. .