Во-первых, некоторый необходимый фон. Я пытаюсь сделать числовую версию игры Mastermind как способ обучения коду в Ruby. Мой код в основном работает следующим образом:
-  Компьютер генерирует массив (@computer_sequence) из 4 случайных чисел из 1-5
-  Пользователь вводит 4-значную последовательность, которая завершается в массиве с именем @user_array.
-  Метод, называемый compare, выполняет итерацию через@user_array, сравнивая значение и индекс каждого числа с параметрами в@computer_sequence.. Затем программа сообщает пользователю, сколько их номеров имеет правильное значение и правильное положение, или сколько чисел имеет только правильное значение.
  Проблема: Если в массиве имеется несколько экземпляров числа, они получают одинаковый индекс, правильно? Например, если у меня есть массив [1, 3, 3, 4], номер три имеет индекс 1, хотя есть два 3s. Тем не менее, для работы этой программы каждый номер должен иметь уникальную позицию (это индекс, даже слово, которое я хочу здесь?) В массиве, даже если число происходит несколько раз. Это имеет смысл?
Кроме того, здесь код для метода compare:
def compare
    value_only = 0
    value_and_place = 0
    puts "The computer values are: #{@computer_sequence}"
    puts "The user values are: #{@user_array}"
    @user_array.each do |candidate|
        @computer_sequence.each do |computer_number|
            if candidate == computer_number && @user_array.index(candidate) == @computer_sequence.index(computer_number)
                value_and_place +=1
            elsif candidate == computer_number && @user_array.index(candidate) != @computer_sequence.index(computer_number)
                value_only +=1
            end
        end
    end
