X = [8, 8, 14, 14, 3, 3, 13]
def value_Card(X) :
counter = [0] * 15
for i in X:
counter[i] = counter[i] + 1
X.sort(key=lambda x: (-counter[x], -x))
return X
print(value_Card(X))
>>> [14, 14, 8, 8, 3, 3, 13]
밑에서 알려주신 분 굉장히 잘 됩니다. 일단 너무나 감사드리고요.
제가 하는게 포커에 페어 알고리즘 부분인데요.
노페어/원페어/드리플/풀하우스 부분은 다 잘 되는데
문제는 투페어하고 포카드 좀 문제가 있습니다.
위 알고리즘이 잘못됐다는 것이 아니라 제가 원하는 형태가 완벽하게 구현 안된다는 것입니다.
투페어에서
페어 두쌍에(4장)에 나머지 다 다른(3장)은 문제가 없는데
페어 세쌍(6장)에 나머지 다른거(1장)일 때, 문제가 좀 있습니다.
주어진 데이타로 X = [8, 8, 14, 14, 3, 3, 13] 넣으면
>>> [14, 14, 8, 8, 3, 3, 13] 이게 출력됩니다.
이거 포커에서 어떤 의미냐면 A원페어가 있고 8원페어가 있고 3원페어가 있고 킹이 있다.
근데 포커에서는 A원페어하고 8원페어까지만 페어로서는 의미가 있고
나머지는 키커라해서 가장 높은 숫자인 킹이 의미있습니다.(3원페어는 의미가 없습니다.)
그래서 제가 원하는건 출력 내용은 이렇게 입니다.
>>> [14, 14, 8, 8, 13, 3, 3]
마찬가지로 포카드도 문제가 있습니다.
포카드(4장)와 나머지 다른 3장일 때는 문제가 없고,
포카드(4장)와 드리플도 역시 문제가 없습니다.
문제는 포카드(4장)와 원페어(2장) 그리고 나머지 한 장일 때 문제가 있습니다.
예를 들어 Y = [3, 12, 3, 3, 10, 10, 3]이라면
>>> [3, 3, 3, 3, 10, 10, 12] 이게 출력됩니다.
근데 포카드가 되면 나머지 키커는 그냥 가장 높은 숫자인 12(퀸)이 되서
10원페어는 의미가 없습니다.
그래서 제가 원하는 출력 형태는
[3, 3, 3, 3, 12, 10, 10]입니다.
X.sort(key=lambda x: (-counter[x], -x))이 부분을 건들어서
if문으로 처리해야 될거 같은데
제가 실력이 부족하고 특히 람다 함수는 너무 어려워서 어려워서 어케해야될지 잘 모르겄습니다.
결과적으로 최종적으로 제가 원하는 것은 7장에서 카드에서
포커 페어 종류의 족보로 의미있는 순서로
첫장부터 다섯번장까지 출력되기를 원하는 형태입니다.
홀덤이나 세븐오디 겜 모르시는 분은 제가 무슨 소리 하는지 잘 모르실 수 있습니다.
고수분들의 많은 도움 기다립니다!
이런걸 예외처리라고하나 암튼이거는 룰에대한 이해가있는사람만이 할수있는일임.. if넣고 뭐뭐가 뭐뭐일땐 이렇게 하고 결과에 저장 이런식으로 해야할것같은데
제일편한방법은 포커게임이 세상에많으니깐 남들이 쓴코드 그대로 가져올수도있고
함 찾아 볼까용
규칙을 몰라서 뭔말인지모르겠다