올인이 일어난 상황에선 유저들의 마지막 액션이 체크일 수가 없다.
마지막 액션이 폴드일 수 있는데,
스트릿 종료 전 폴드한 유저의 폴드 기록은 팟계산을 마친 후 따로 해주고
실제로 폴드가 일어난 시점에선 별도의 폴드 유저 리스트에만 기록해준다
(따라서 올인이 일어난 스트릿에서 유저들의 마지막 액션 종류는 콜, 올인, 레이즈, 벳 중 하나다)
이제 스트릿 종료시점에서
올인한 유저들을 하나하나 불러서 그들의 올인 사이즈에 대해
모든 유저들의 마지막 액션의 베팅사이즈들을 하나하나 불러서
베팅사이즈 < 올인사이즈면 베팅사이즈를
베팅사이즈 >= 올인 사이즈면 올인사이즈를 누적합하면
그 합계는 해당 스트릿의 해당 올인 유저에 대한 메인팟이 된다.
이렇게 각 합계를 밸류로, 올인 유저를 키로 하는
메인팟 딕셔너리를 계산해 놓으면
각 올인 유저의 해당 스트릿에서 지분이 얼마인지 알 수 있다.
올인이 일어난 상황에선 유저들의 마지막 액션이 체크일 수가 없다. 마지막 액션이 폴드일 수 있는데, 스트릿 종료 전 폴드한 유저의 폴드 기록은 팟계산을 마친 후 따로 해주고 실제로 폴드가 일어난 시점에선 별도의 폴드 유저 리스트에만 기록해준다 (따라서 올인이 일어난 스트릿에서 유저들의 마지막 액션 종류는 콜, 올인, 레이즈, 벳 중 하나다)
이제 스트릿 종료시점에서 올인한 유저들을 하나하나 불러서 그들의 올인 사이즈에 대해 모든 유저들의 마지막 액션의 베팅사이즈들을 하나하나 불러서 베팅사이즈 < 올인사이즈면 베팅사이즈를 베팅사이즈 >= 올인 사이즈면 올인사이즈를 누적합하면 그 합계는 해당 스트릿의 해당 올인 유저에 대한 메인팟이 된다.
이렇게 각 합계를 밸류로, 올인 유저를 키로 하는 메인팟 딕셔너리를 계산해 놓으면 각 올인 유저의 해당 스트릿에서 지분이 얼마인지 알 수 있다.
이걸로 충분한가?