GyeRyak 님의 quiz 풀이. (3.선행의 선행)

in kr-brainquiz •  7 years ago 

안녕하세요 낸드( @nand ) 입니다.

계략님이 냈던 두뇌퀴즈 선행의선행에 대해 풀이법을 공개합니다.

문제를 모르시는 분은 밑의 링크에서 문제를 읽어주세요.


풀이

처음 보고, 해적의 규칙이라는 퀴즈가 생각났습니다.
링크
많이 알려져있는 퀴즈인데, 이것도 재밌습니다.
공통점은 상대를 배려해주면서, 내가 많이 가져가야한다는거죠.

뭐든 그렇지만, 문제를 간단하게 만들면, 답은 바로 알 수 없지만,
풀이에 대한 힌트는 얻을 수 있습니다.

극과극

극과 극을 생각해보죠.
100%를 양도하면 어떨까요?
제일 처음 차례가 오지만, 얻을 건 없겠죠.
99%라면? 100%보단 좋을겁니다.

0%를 양도한다면 어떨까요?
다 얻을 수는 있지만 제일 마지막에 남은 보상만 얻어야겠죠.
1%를 양도한다면?
뒤에 0%양도자가 있다면, 그 사람보다는 좋을겁니다.

따라서 극과 극은 안좋다고 예상이 됩니다.

사이에 끼기

사이 어디에 들어가면 좋은지도 예상해봅시다.
10%와 90%에 한명씩 있다고 하고, 그 사이에 들어가야 한다고 가정하죠.
%가 안바뀌고, 이후 추가되는 사람도 없다고 가정하면,

아마도 11%만 양도하고 나머지 다 먹는게 유리하겠죠.

어떤 %가 유리한가

균등하게 분포되어 있을 때, 누가 제일 유리할까요?

귀찮으니까 컴퓨터한테 시킵시다.
일해라 컴퓨터

untitled.png

간격을 0.5에서 0.01 까지 줘가면서 다르게 계산했습니다.
결과를 보면, 간격에 따라 다르지만, 참가자6명(0.2 간격) 이상이라고 할 때, %가 반절 이상인 쪽에서 최대값이 나타나는군요.

종합

위에서 얻은 정보로 직관적으로 추론하면,

간격 중 적당히 높은%를 골라서, 사이 간격 중 낮은% 쪽으로 붙으면 되겠군요.

완전한 해법을 얻지는 못했습니다.


코드

MATLAB 코드입니다.

d_set = [0.5 0.25 0.2 0.1 0.05 0.01];
reward = cell(length(d_set), 1);
bin = cell(length(d_set), 1);

for d_iter = 1:length(d_set)
    d = d_set(d_iter);
    bin{d_iter} = 1:-d:0;
    reward{d_iter}(1) = 1-bin{d_iter}(1);
    for k=2:length(bin{d_iter})
        reward{d_iter}(k) = (1-sum(reward{d_iter}(1:k-1)) )* (1-bin{d_iter}(k));
    end
    sum(reward{d_iter})
end

%% fig
figure(1)
plot(bin{1}, reward{1}, '-o')
hold on

for d_iter = 2:length(d_set)
    plot(bin{d_iter}, reward{d_iter}, '-o')
end
legend(num2str(d_set'))

%% 는 주석입니다
d_iterfor문은 간격에 대한 for문입니다.
for문 안쪽이 핵심입니다.
기 밑은 그림 그리는 부분입니다.

원글

읽어주셔서 감사합니다.




구독하시려면 위 마크를 눌러서 Follow 부탁드려요.
지금까지 @nand 였습니다.

아이디 마크는 @inhigh님 작품에서 발췌한 것입니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

@nand님..... 중국에 '两眼墨黑'이라는 성어가 있거든요. 직역을 하면 '두 눈은 뜨고 있으나 먹처럼 깜깜하다.'라는 말입니다. 무슨 뜻인지 아시겠죠? 죄송해요. - -;;; 공부 더 하고 오겠습니다.ㅜㅜ

깜깜 ㅠ
사실 문제도 약간 어려웠습니다

헉 . 무지한 저로서는 무슨말인지 모르겠네요 ... 프로그래밍인가요?

네 브레인 퀴즈를 프로그래밍으로 풀어봤습니다.

음....이해되지 않지만 이해가 될것같은 그런 애매한 상태가 되어버렸습니다;

제가 좀 애매하게 설명한것 같기도 합니다 ㅎㅎ

하하하~~ 펜잘좀 주세요....에구 머리야!!

두통엔 펜잘인가요? ㅎㅎ

안녕하세요 Nand님 아 저에게도 어려운 글 입니다 ㅎㅎ

아 ㅠ 문제 안푸셨으면 어려울거에요

네 ㅎㅎ 감사합니다. 즐거운 일요일 보내세요~~

저도 참가했던 사람입니다. ㅎㅎ 저는 프로그래밍은 하나도 모르구요, 그냥 한국 여성의 직감으로 마지막에 수정했습니다.
LPGA에서 한국 여자 골퍼들이 두각을 나타내는 이유가 감 때문이라더군요. 레시피 없이도 맛을 내는 감!
Screen Shot 2017-08-02 at 11.10.03 PM.png

좋은 감이시네요!
슬쩍 따라가는것도 좋은 방법입니다 ㅎㅎ

다른 참가자에 영향을 크게 받으니 완전한 해답은 없지 않을까요? 각 상황에 해당하는 답은 있겠지만 그러려면 자신이 마지막 참가자여야겠죠.

맞습니다. 마지막 참가자라고 가정한다면, 각 상황별로 풀이가 있을것이고요.
마지막이 아니라면 어떤 솔루션이 나올지는 궁금합니다.

저를 제외한 kr-brainquiz의 첫 글이네요. 캄사합니다! 미약하지만 풀보팅...

애당초 참가 시점이 다르고, 댓글을 수정할 수 있다는 점에서 완벽한 전략이란 없었습니다.
그런데 이런 방식으로도 접근할 수 있었네요. 신기합니다.

풀이글 감사합니다 :) soso하지만 SBD 조금 보내드렸어요.

그보다 비슷한 문제가 있다길래 깜짝 놀랐는데, 생각보다는 다르더라고요. 하하... 다행입니다.

감사합니다! SBD까지 ㅋㅋ 까방권을 넘길 수는 없겠는데요
해적의 규칙 저 문제도 재밌어요.

저도 균등분배같은걸 생각했었는데, 997:~~~를 보고 놀랐어요.

에고.. 머리아파.. 저같은 사람은 시도도 못해보겠어요~ㅋㅋ

그냥 보고 넘기셔도 됩니당. ㅎㅎ

응? 저도 잘 모르겠군요 ㅎㅎ

넘 어렵게 설명한 것도 같아요 ㅠ

뭔가 알꺼같은데
끝까지보니 (절래절래..)
뭔가 당했습니다 ^^;;

끝까지 봐주신 것도 감사합니다 ^^

코딩으로 설명하니까 신뢰성이 확 높아지네요.

하지만 만약 제가 코딩을 잘못 했다면요! ㅎㅎ

억ㅋ! 디지털 뒷통수?

음 ~ 이런걸 부담없이 알아들으려면
얼마나 공부를 해야 할까요 ~ ㅠ

ㅠ 제가 부담 없이 설명할 수 있도록 해볼게요 ㅎㅎ