네트워크 가위바위보 플그림
글쓴이: p_teto / 작성시간: 수, 2004/05/26 - 9:03오후
서버가 있고 클라이언트가 있습니다.
서버에 5~무한 의 사람들이 접속을 하면 가위바위보 게임을 시작합니다.
즉, 가위바위보를 하는 사람의 수에 상관이 없는 알고리즘을 구현하고자
합니다. if문으로 모든 경우의 수를 표현할려고 하니;; 난감하더군요.
접속한 사람들에게 순위도 매겨야 하고.. 결국 생각해낸 방법이
0(가위),1(바위),2(보)를 낸 사람의 카운트를 세고, 0 or 1 or 2에 대한 카운터값이
0이 있을경우 투팀(이긴팀,진팀)으로 나뉘게 됩니다. 그렇게 두팀으로 나누고, 다시 그팀들끼리
가위바위보를 하고 카운터를 세서 0일 경우 다시 두팀으로 ... 이런식으로 하면
가능할것 같은데;; 진정 이런 방법뿐인가요? ㅠㅠ
다른 방법이 혹시 있나 궁금해서 이렇게 글을 올려 봅니다 :)
Forums:
모든 사람이 한꺼번에 손가락을 내밀면 승부 나기가 거의 하늘에 별따기 아
모든 사람이 한꺼번에 손가락을 내밀면 승부 나기가 거의 하늘에 별따기 아닐까요? 그런 것하고는 상관없다 승부날 때까지 밤새워서 수백명이 이기고 지는 것을 가리겠다... 그러면, p_teto님의 의견도 아주 좋은 방법이라고 생각합니다. (물론 일정 시간에 한번씩의 입력을 받아야겠죠)
하지만, 플레이하는 사람의 고충을 생각한다면, 조를 짜서 하는게 더 현실적이지 않을까요? 보통 실제 상황에서는 사람이 많아지면 가위바위보 할 때 나눠서 하듯이...
아, 그리고 최종 승자 1명을 가리는 것입니까? 아니면 1등부터 꼴등까지 죽 세우는 것입니까?
게임 방식을 먼저 결정하시면 답이 보일 것 같은데요...
[quote="bugiii"]하지만, 플레이하는 사람의 고충을 생각한
1등부터 꼴등까지 쭉~ 나열을 하는겁니다. :)
1만번 반복하여야 합니다. 1등부터 꼴등까지 정해지면 한판이 끝나는겁니다.
그렇게 1만번 반복.. 현실에서이루어 진다면 끝이 나지 않는 게임일것 같습니다.
컴퓨터를 사용하여 연산을 해서 가능한 플그림이라고 생각합니다.
만약에 100명이 가위바위보를 해서 1게임이 끝나는데 걸리는 횟수와 시간을
생각해보면 왠지 재미가 있을듯 하네요.
랜덤넘버(3)을 사용하여 100개의 값이 동시에 발생했을경우 위의 알고리즘을
사용하면 어떤 결과가 발생할지 ;; 컴터가 버틸수 있을지 궁금합니다. :)
교수님 말씀으로는 10명이서 했을경우 1초만에 결과값이 나오구 27번의
가위바위보를 했다고 하시던데 도저히 어떤 알고리즘인지 파악이 안돼네요
스스로 생각하라고 하는데 과연 가능할련지 ㅠㅠ
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
10명이라면.... 확률상 어떻게 될까요? 랜덤이 아주 균일한 임의의 손
10명이라면.... 확률상 어떻게 될까요? 랜덤이 아주 균일한 임의의 손가락을 출력해준다면... 확률로 횟수가 나올테구요...
모든 사람의 등수를 뽑아내야 한다면, 1등 뽑고 다시 나머지 9명이서 가위바위보 하게 하고 또 그중에 1등 뽑고.. 그런식으로 마지막 2명까지 처리하면 되는 것 아닌가요?
좀 다른 얘기지만 "혹시라도" 도박묵시록 카이지를 읽어보셨다면 여기에 있
좀 다른 얘기지만 "혹시라도" 도박묵시록 카이지를 읽어보셨다면 여기에 있는 가위바위보를 만들어주시면 어떨까요... :-)
모든 사람이 동시에 가위바위보를 해야 한다는 조건이 없다면 좀 더 빠른
모든 사람이 동시에 가위바위보를 해야 한다는 조건이 없다면 좀 더 빠른 시간안에 승부를 낼 수 있게 조를 짤 수도 있을 것 같습니다.
먼저 적절히 사람들을 3~4명 정도로 잘라서 조를 짜서 플레이를 한다면 비기는 경우를 많이 없앨 수 있지 않을까요? 각 조에서 등수를 매긴 후에 1,2,3,4 등끼리 다시 모으고 각 등수끼리 조를 다시짜서 그중에 또 등수를 가리고... 그러면 주루룩 1열로 설텐데요...
p.s. 저는 impelliteri 의 somewhere over the rainbow 를 아주 아주 좋아합니다. saxboy 님은요?
[quote="bugiii"]10명이라면.... 확률상 어떻게 될까요?
10명의 사람이 동시에 가위바위보를 할경우를 생각하면 됩니다.
가위바위보에 대한 경우의 수는 3^x(사람의수)가 됩니다. 10명이면
3의 10승에 대한 경우의 수가 나오겠네요 :) 59049라는 경우의 수가 나옵니다.
여기에서 비기는 경우는 모두가 같은것을 내는 경우 3/59049의 확률
가위 바위 보가 동시에 나와 있는 경우 ?/59049의 확률.. 엄청많겟네요 :)
이긴팀과 진팀이 구분이 되어야 다음 단계로 넘어 갈수 있습니다.
비기면 두팀다 0점 이긴팀에게는 1점을 진팀에는 0점을 주고 이긴팀따로 진팀따로 다시 가위바위보를하고
다시 이긴팀에게 1점 진팀에게 0점을 주는 형식을 반복하게 되면
총9점을 얻은사람은 1등 8점을 얻은사람은 2등 0점은 10등 이렇게 등수를
나눌수가 있을듯 합니다.
100명이면? 어마어마한 경우의수가 발생하겟네요 3의 100승?
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
그런식이라면 첫번째 비기지 않는 경우가 나올 때까지가 계산의 대부분을 차
그런식이라면 첫번째 비기지 않는 경우가 나올 때까지가 계산의 대부분을 차지 하겠네요?
[quote="bugiii"]그런식이라면 첫번째 비기지 않는 경우가 나올
비기면 다시 가위바위보, 비기면 다시 가위바위보, 이런식으로 무한반복하게 됩니다.
그러다가 비기지 않는 경우가 발생할경우에 다음단계로 넘어갈수 있습니다.
비기는 경우를 아예 빼버릴경우 2진트리의 모양을 가지게 됩니다. 진팀/이긴팀
다시 진팀/이긴팀 이렇게 할경우 엄청빠른 결과값을 가지게 되지만 결국에는
이플그림은 가위바위보가 아닌 플그림이 되더군요 그냥 승자와 패자구분게임이
되어 버렸습니다. 가위바위보의 묘미는 비기는것에 있는것 같습니다. :)
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
교수님의 27번이라는 것은... 아마도 2명씩 조를 짜서 최종 계산한 거
교수님의 27번이라는 것은... 아마도 2명씩 조를 짜서 최종 계산한 거라고 밖에는 생각이 되지 않습니다...
[quote="bugiii"]교수님의 27번이라는 것은... 아마도 2명
넵!! 저두 그렇게 생각하고 싶습니다. ㅠㅠ
아니면 무조건 이긴팀과 진팀을 구분하는 승자/패자 게임일지도 모른다는 생각도 해보구 있습니다.
이거라면 27번만에도 가능할것 같습니다. :)
전 bugiii님의 이와 같은 답변을 원하고 있던것일지도 모르겠습니다. :)
p.s 속이 시원하네요 ^^
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
문제의 조건이 분명하지 않다면 결국 1등부터 꼴찌까지 나열만 하면 되므로
문제의 조건이 분명하지 않다면 결국 1등부터 꼴찌까지 나열만 하면 되므로 조를 짜서 실행해도 문제가 되지 않는다고 봅니다... 결국 등수 구분하는 거니까요... 만약 조를 짜서 했는데 잘못이다 그러면 문제를 잘못 낸 교수님 잘못 아닌가요!!!
만약, 교수님의 다른 획기적인 방법이 있다면 꼭 알려주세요. 어떤 것인지 정말 궁금합니다.
p.s. saxboy 님은 주무시나요...??? 곡이 좋아서 위치를 그렇게 하신 것 아닌가요? (혼자 오버한건가...)
궁금한게 있는데요, 위에서 말씀하신 방법으로 한다면, 순위는 어떻게
궁금한게 있는데요,
위에서 말씀하신 방법으로 한다면, 순위는 어떻게 매기나요?
일정한 승점 으로는 할 수는 없을꺼 같구요..
처음 게임엔 100점의 승점, 다음 게임엔 99.9의 승점을 배정하고 이런식으로 승점을 줄여 나가는 방법을 쓴거나,
아니면 이기면 1, 지면 0을 적어 넣어서 다 1로 되면 1등, 그다음 다 1이다가 0인 사람이 2등 이런 방식도 생각이 나구요..
어떤 방식으로 등수를 매기는지... 궁금합니다. ^^
0x2B | ~0x2B
- Hamlet
[quote="nanosec"]처음 게임엔 100점의 승점, 다음 게
쿨럭~ 제가 생각한 등수 매기는것에서 중대한 오류를 발견했습니다. ㅋ..
승점을 줄려 나가는 방법을 쓸경우에 계속 져서 마지막에 게임을 하는 두사람의
점수가 가장 크게 되는 경우가 발생할수도 있게 됩니다. 이것을 방지하기 위해서는
승점의 간격의 차이를 많이 벌려 놓아야 합니다. 하지만 승점에 대해서 자세히 따져가면서
승점의 간격을 벌리는것을 계산하는것은 많은 힘이 든다고 봅니다. (플그림으로
구현은 쉽지만, 연습장과 연필을 많이 사용해야하는 경우)
이진 트리를 사용하여 이긴경우와 진경우를 구분을 하고 다시 거기서 이긴팀과
진팀을 구분하는 형식을 취하여 링크의 위치를 바꿔주는 방법을 사용하는것이
좋을것 같습니다. (구현은 어렵지만, 연습장과 연필이 별로 필요 없는경우)
다른 방법도 지금 생각이 날듯 말듯하네요. 좀더 연구해봐야 겠습니다.
점수를 주어서 마지막에 sort하는 방법과 순위 테이블을 구현해 놓고 링크시키는방법
다른 방법도 한번 생각해 봐야겠네요 :)
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
이기면 1 지면 0을 넣고시합이 끝난 후에, 마지막 부터 읽고,
이기면 1 지면 0을 넣고
시합이 끝난 후에, 마지막 부터 읽고, 1인 사람이 1등, 그리고 그사람 제외 하고, 다음 번이 1인 사람이 2등 이런식으로 하면 되지 않을가요?
ㅋ 생각하고 나니, 빗트 필드에서 사람들 권한을 설정해놓고, 가져와 쓰는 프로그램을 만들어서 그런지 그런쪽으로만 생각이 나네요 ^^;;
하지만 어차피 트리로 관리하게되면, 순위는 자연히 나오게 되는군요.. ^^
0x2B | ~0x2B
- Hamlet
[quote="nanosec"]이기면 1 지면 0을 넣고시합이 끝
10명이서 할경우 5명이 이기고 5명이 질경우 이긴쪽에 1 진쪽에 0을 줄경우
이긴쪽 5명이 전부 걸러지는 효과가 발생할듯 하네요 ^^;;
이플그림을 작성하면서 사람이 생각하고 있는것을 플그림으로 옴기는것의 어려움을 엄청 느끼고 있습니다.
가까운 시일에 사람이 생각하는 것을 그대로 플그림을 작성해주는 툴이 나왓으면
좋겟다는 생각을 해봅니다. :)
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
:oops: 10명에서, 5명이 이기고 5명이 지면0, 1 그리고 다
:oops: 10명에서, 5명이 이기고 5명이 지면
0, 1 그리고 다음 개임에서 이긴 사람은
0 || 1
00, 01 || 11, 10
000, 001,,010,011 || 110,111 ,,, 100,101
을 말한건데..... 안되는군요..
:oops: :oops:
0x2B | ~0x2B
- Hamlet
[quote="nanosec"]:oops: 10명에서, 5명이 이기고 5
홋~ 제가 잘못생각 했었네요 :oops:
2진수라고 생각하고 sort시켯을경우에 순위를 정할수 있을것 같습니다. :)
좋은 참고가 된듯 하네요 ^^
창조는 괴로움의 구원인 동시에 삶의 위로인 것이다.
그러나 창조하기 위해서는 그 자신의 괴로움이 따르면서
많은 변화가 요구되는 것이다. -니체
[quote]p.s. 저는 impelliteri 의 somewhere
아직 안자고 있답니다. :-)
임펠리테리 버전을 처음 들었을 때의 쇼킹한 느낌도 잊을 수 없지만 역시 압권은 Judy Garland 의 울먹이는 오리지널이 아닐까싶어요. 사실은 이 노래 자체를 그렇게 좋아하는 편은 아니랍니다.
하지만 제가 가지고 있는 임텔리테리는 한장 뿐인데, 이 곡 때문에 샀으니 그 연주는 꽤 좋아한다고 해야겠지요. :-)
댓글 달기