nsg_matrix_elimination.erl 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. %%% -------------------------------------------------------------------
  2. %%% Author : Sergii Polkovnikov <serge.polkovnikov@gmail.com>
  3. %%% Description : The interface to the elimination tournaments plans matrix.
  4. %%%
  5. %%% Created : Feb 15, 2013
  6. %%% -------------------------------------------------------------------
  7. -module(nsg_matrix_elimination).
  8. -export([get_plan/4,
  9. get_prize_fund/4,
  10. get_plan_desc/4,
  11. get_tours/3]).
  12. get_plan(GameType, KakushPerRound, RegistrantsNum, Tours) ->
  13. case lists:keyfind({KakushPerRound, RegistrantsNum, Tours}, 1, tournament_matrix(GameType)) of
  14. false -> {error, no_such_plan};
  15. {_NQ, _K, Plan, _String} -> {ok, Plan}
  16. end.
  17. get_prize_fund(GameType, KakushPerRound, RegistrantsNum, Tours) ->
  18. case lists:keyfind({KakushPerRound, RegistrantsNum, Tours}, 1, tournament_matrix(GameType)) of
  19. false -> {error, no_such_plan};
  20. {_NQ, K, _Plan, _String} -> {ok, K}
  21. end.
  22. get_plan_desc(GameType, KakushPerRound, RegistrantsNum, Tours) ->
  23. case lists:keyfind({KakushPerRound, RegistrantsNum, Tours}, 1, tournament_matrix(GameType)) of
  24. false -> {error, no_such_plan};
  25. {_NQ, _K, _Plan, String} -> {ok, String}
  26. end.
  27. get_tours(GameType, KakushPerRound, RegistrantsNum) ->
  28. [T || {{Q, N, T}, _, _, _String} <- tournament_matrix(GameType), Q==KakushPerRound, N==RegistrantsNum].
  29. tournament_matrix(game_okey) ->
  30. [%% Quota Pl.No Fund 1 2 3 4 5 6 7 8
  31. { { 8, 16,3}, 54, [ne , {ce, 4}, {te, 1} ], ["yok","1.ler","Final"]},
  32. { { 10, 16,3}, 72, [ne , {ce, 4}, {te, 1} ], ["yok","1.ler","Final"]},
  33. { { 2, 64,4}, 80, [ne , {ce, 16}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  34. { { 4, 64,4}, 98, [ne , {ce, 16}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  35. { { 6, 64,4}, 158, [ne , {ce, 16}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  36. { { 8, 64,4}, 223, [ne , {ce, 16}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  37. { { 10, 64,4}, 295, [ne , {ce, 16}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  38. { { 2, 128,5}, 81, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1} ], ["yok","yok","1.ler","Final"]},
  39. { { 4, 128,5}, 162, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1} ], []},
  40. { { 6, 128,5}, 260, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1} ], []},
  41. { { 8, 128,5}, 368, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1} ], []},
  42. { { 10, 128,5}, 487, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1} ], []},
  43. { { 2, 256,5}, 198, [ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  44. { { 4, 256,5}, 397, [ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  45. { { 6, 256,5}, 635, [ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  46. { { 8, 256,5}, 899, [ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  47. { { 10, 256,5}, 1190, [ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  48. { { 2, 256,7}, 283, [ne , {ce,128}, ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  49. { { 4, 256,7}, 566, [ne , {ce,128}, ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  50. { { 6, 256,7}, 907, [ne , {ce,128}, ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  51. { { 8, 256,7}, 1285, [ne , {ce,128}, ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  52. { { 10, 256,7}, 1701, [ne , {ce,128}, ne , {ce, 64}, {te, 1}, {te, 1}, {te, 1} ], []},
  53. { { 2, 512,6}, 326, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","ilk 2","ilk 2","ilk 2","1.ler","Final"]},
  54. { { 4, 512,6}, 652, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","ilk 2","ilk 2","ilk 2","1.ler","Final"]},
  55. { { 6, 512,6}, 1043, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","ilk 2","ilk 2","ilk 2","1.ler","Final"]},
  56. { { 8, 512,6}, 1478, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","ilk 2","ilk 2","ilk 2","1.ler","Final"]},
  57. { { 10, 512,6}, 1957, [{te, 2}, {te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","ilk 2","ilk 2","ilk 2","1.ler","Final"]},
  58. { { 2, 512,8}, 582, [ne , {ce,256}, ne , {ce,128}, {te, 2}, {te, 1}, {te, 1}, {te, 1}], []},
  59. { { 4, 512,8}, 1163, [ne , {ce,256}, ne , {ce,128}, {te, 2}, {te, 1}, {te, 1}, {te, 1}], []},
  60. { { 6, 512,8}, 1861, [ne , {ce,256}, ne , {ce,128}, {te, 2}, {te, 1}, {te, 1}, {te, 1}], []},
  61. { { 8, 512,8}, 2637, [ne , {ce,256}, ne , {ce,128}, {te, 2}, {te, 1}, {te, 1}, {te, 1}], []},
  62. { { 10, 512,8}, 3490, [ne , {ce,256}, ne , {ce,128}, {te, 2}, {te, 1}, {te, 1}, {te, 1}], []},
  63. { { 2, 1024,6}, 795, [ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], []},
  64. { { 4, 1024,6}, 1589, [ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], []},
  65. { { 6, 1024,6}, 2543, [ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], []},
  66. { { 8, 1024,6}, 3602, [ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], []},
  67. { { 10, 1024,6}, 4767, [ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], []},
  68. { { 2, 1024,8}, 1135, [ne , {ce,512}, ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  69. { { 4, 1024,8}, 2271, [ne , {ce,512}, ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  70. { { 6, 1024,8}, 3633, [ne , {ce,512}, ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  71. { { 8, 1024,8}, 5147, [ne , {ce,512}, ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  72. { { 10, 1024,8}, 6812, [ne , {ce,512}, ne , {ce,256}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  73. { { 2, 2048,6}, 1135, [{te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","1.ler","1.ler","1.ler","1.ler","Final"]},
  74. { { 4, 2048,6}, 2271, [{te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","1.ler","1.ler","1.ler","1.ler","Final"]},
  75. { { 6, 2048,6}, 3633, [{te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","1.ler","1.ler","1.ler","1.ler","Final"]},
  76. { { 8, 2048,6}, 5147, [{te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","1.ler","1.ler","1.ler","1.ler","Final"]},
  77. { { 10, 2048,6}, 6812, [{te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}, {te, 1} ], ["ilk 2","1.ler","1.ler","1.ler","1.ler","Final"]},
  78. { { 2, 2048,8}, 1987, [ne , {ce,1024},{te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  79. { { 4, 2048,8}, 3974, [ne , {ce,1024},{te, 2}, {te, 2}, {te, 1}, {te, 1}, {te, 1}, {te, 1}], []},
  80. { { 2, 1020,1}, 9359, [{te,1} ], []},
  81. { { 4, 1020,1}, 8359, [{te,1} ], []},
  82. { { 6, 1020,1}, 7359, [{te,1} ], []},
  83. { { 8, 1020,1}, 6359, [{te,1} ], []},
  84. { { 10, 1020,1}, 5359, [{te,1} ], []},
  85. { { 2, 1020,2}, 5959, [ne , {te,1} ], []},
  86. { { 4, 1020,2}, 5859, [ne , {te,1} ], []},
  87. { { 6, 1020,2}, 5759, [ne , {te,1} ], []},
  88. { { 8, 1020,2}, 5659, [ne , {te,1} ], []},
  89. { { 10, 1020,2}, 5559, [ne , {te,1} ], []},
  90. { { 2, 1020,3}, 4359, [ne , ne , {te,1} ], []},
  91. { { 4, 1020,3}, 4359, [ne , ne , {te,1} ], []},
  92. { { 6, 1020,3}, 4359, [ne , ne , {te,1} ], []},
  93. { { 8, 1020,3}, 4359, [ne , ne , {te,1} ], []},
  94. { { 10, 1020,3}, 4359, [ne , ne , {te,1} ], []},
  95. { { 2, 1020,4}, 3359, [ne , ne , ne , {te,1} ], []},
  96. { { 4, 1020,4}, 3359, [ne , ne , ne , {te,1} ], []},
  97. { { 6, 1020,4}, 3359, [ne , ne , ne , {te,1} ], []},
  98. { { 8, 1020,4}, 3359, [ne , ne , ne , {te,1} ], []},
  99. { { 2, 1020,6}, 2359, [ne , ne , ne , ne , ne , {te,1} ], []},
  100. { { 4, 1020,6}, 2359, [ne , ne , ne , ne , ne , {te,1} ], []},
  101. { { 6, 1020,6}, 2359, [ne , ne , ne , ne , ne , {te,1} ], []},
  102. { { 2, 500,1}, 1359, [{te,1} ], []},
  103. { { 4, 500,2}, 5959, [ne , {te,1} ], []},
  104. { { 6, 500,3}, 4859, [ne , ne , {te,1} ], []},
  105. { { 8, 500,4}, 3759, [ne , ne , ne , {te,1} ], []},
  106. { { 10, 500,6}, 2359, [ne , ne , ne , ne , ne , {te,1} ], []},
  107. { { 2, 400,1}, 4359, [{te,1} ], []},
  108. { { 4, 400,2}, 3359, [ne , {te,1} ], []},
  109. { { 6, 400,3}, 2359, [ne , ne , {te,1} ], []},
  110. { { 8, 400,4}, 1359, [ne , ne , ne , {te,1} ], []},
  111. { { 10, 400,6}, 3359, [ne , ne , ne , ne , ne , {te,1} ], []},
  112. { { 2, 300,1}, 2359, [{te,1} ], []},
  113. { { 4, 300,2}, 1359, [ne , {te,1} ], []},
  114. { { 6, 300,3}, 0959, [ne , ne , {te,1} ], []},
  115. { { 8, 300,4}, 0359, [ne , ne , ne , {te,1} ], []},
  116. { { 10, 300,6}, 1959, [ne , ne , ne , ne , ne , {te,1} ], []},
  117. { { 2, 200,1}, 0859, [{te,1} ], []},
  118. { { 4, 200,2}, 0759, [ne , {te,1} ], []},
  119. { { 6, 200,3}, 0659, [ne , ne , {te,1} ], []},
  120. { { 8, 200,4}, 0559, [ne , ne , ne , {te,1} ], []},
  121. { { 10, 200,6}, 0459, [ne , ne , ne , ne , ne , {te,1} ], []},
  122. { { 10, 40,2}, 0459, [ne , {te,1} ], []}
  123. ];
  124. tournament_matrix(game_tavla) ->
  125. [%% Quota Pl.No Fund 1 2 3 4 5 6 7 8
  126. { { 10, 16,4}, 54, [{te, 1} , {te, 1}, {te, 1}, {te, 1} ], ["1.ler","1.ler","1.ler","Final"]}
  127. ].