Наиболее частый элемент в массиве algo, нужно преобразовать код Python в ruby - PullRequest
0 голосов
/ 02 июня 2018

Ниже приведен код Python, который я написал и который найдет самый распространенный элемент в массиве. Я хочу преобразовать приведенный ниже код в ruby ​​С тем же ФОРМАТОМ с эквивалентами ruby ​​для ключевых слов python, то есть для синтаксиса python "not in" Iхотите знать эквивалентный ему ruby ​​и т. д., все тесты должны работать.Спасибо!

def most_frequent(given_list):
    max_count = -1
    max_item = None
    count = {}
    for i in given_list:
        if i not in count:
            count[i] = 1
        else:
            count[i] += 1
        if count[i] > max_count:
            max_count = count[i]
            max_item = i
    return max_item

# NOTE: The following input values will be used for testing your solution.
# most_frequent(list1) should return 1.
list1 = [1, 3, 1, 3, 2, 1]
# most_frequent(list2) should return 3.
list2 = [3, 3, 1, 3, 2, 1]
# most_frequent(list3) should return None.
list3 = []
# most_frequent(list4) should return 0.
list4 = [0]
# most_frequent(list5) should return -1.
list5 = [0, -1, 10, 10, -1, 10, -1, -1, -1, 1]

result1 = most_frequent(list1)
result2 = most_frequent(list2)
result3 = most_frequent(list3)
result4 = most_frequent(list4)
result5 = most_frequent(list5)
print result1, result2, result3, result4, result5

1 Ответ

0 голосов
/ 02 июня 2018

Преобразованный код Ruby:

def most_frequent(given_list)
  max_count = -1
  max_item = nil
  count = {}
  for i in given_list
    count[i] ||= 1
    count[i] += 1
    if count[i] > max_count
      max_count = count[i]
      max_item = i
    end
  end
  max_item
end

Примечание. Ребята из Ruby не пишут подобный код, в ruby ​​есть более понятные способы написания этого кода.

вместо rubyNone nil используется, если вы хотите, чтобы в выводе было None, затем в конце замените max_item на max_items || 'None'

. Для печати значений result используйте puts

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...