Advertisement
Guest User

Mastermind

a guest
Apr 4th, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.48 KB | None | 0 0
  1. local colors = {"Red", "Blue", "Green", "Purple", "Orange", "Pink", "Black"}
  2. for i = 1, 7 do
  3.     colors[colors[i]] = i
  4. end
  5.  
  6. local possibilities = {}
  7. local number = {1, 1, 1, 1}
  8. for i = 1, 2401 do
  9.     possibilities[#possibilities+1] = {number[1], number[2], number[3], number[4]}
  10.     if i == 7^4 then break end
  11.     number[1] = number[1] + 1
  12.     for i = 1, 4 do
  13.         if number[i] == 8 then
  14.             number[i] = 1
  15.             number[i+1] = number[i+1] + 1
  16.         end
  17.     end
  18. end
  19.  
  20. local function getScore(answer, guess)
  21.     local right, offset = 0, 0
  22.     local balance = {0, 0, 0, 0, 0, 0, 0}
  23.     for n = 4, 1, -1 do
  24.         local x, y = guess[n], answer[n]
  25.         if x == y then
  26.             right = right + 1
  27.         else
  28.             if balance[x] > 0 then offset = offset + 1 end
  29.             if balance[y] < 0 then offset = offset + 1 end
  30.             balance[x] = balance[x] - 1
  31.             balance[y] = balance[y] + 1
  32.         end
  33.     end
  34.     return right, offset
  35. end
  36.  
  37. local guesses = {
  38.     {"Red", "Blue", "Green", "Purple", 2, 1};
  39.    
  40. }
  41.  
  42. for _, guess in pairs(guesses) do
  43.     local newPossibilities = {}
  44.     for i = 1, 4 do
  45.         guess[i] = colors[guess[i]]
  46.     end
  47.     for _, answer in pairs(possibilities) do
  48.         local right, offset = getScore(guess, answer)
  49.         if right == guess[5] and offset == guess[6] then
  50.             newPossibilities[#newPossibilities+1] = answer
  51.         end
  52.     end
  53.     possibilities = newPossibilities
  54. end
  55.  
  56. for i = 1, #possibilities do
  57.     for j = 1, 4 do
  58.         possibilities[i][j] = colors[possibilities[i][j]]
  59.     end
  60.     print(table.concat(possibilities[i], ", "))
  61. end
  62. print("Possibilities: "..#possibilities)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement