Как я могу вернуть массив чисел палиндрома в заданном массиве? Не палиндромные числа, такие как 11, 22, 33, 44, & c., Но числа, которые являются палиндромными для другого числа в том же массиве. Предположим, что все элементы положительны, и результат не должен возвращать однозначные цифры (пример ниже)Возвращаемые элементы, которые являются палиндром друг к другу в массиве
Предположим, у меня есть array = [13, 31, 51, 79, 83, 97]
. С 13 & 31 и 79 & 97 являются палиндромов, я хочу, чтобы вернуть array_pali = [13, 31, 79, 97]
def pali_array(array)
array_reverse = array.map{|el| el.to_s.reverse.to_i}
array_pali = array & array_reverse
return array_pali
end
Мой первоначальный план должен придумать реверсе этого массива, array_reverse = array.map{|el| el.to_s.reverse.to_i}
и пересекают их: array & array_reverse
А проблема что происходит, если я хочу, чтобы вернуть массив простых чисел от 2-100, как указано:
array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
и я его вспять:
array_reverse = array.map{|el| el.to_s.reverse.to_i}
=> [2, 3, 5, 7, 11, 31, 71, 91, 32, 92, 13, 73, 14, 34, 74, 35, 95, 16, 76, 17, 37, 97, 38, 98, 79]
Она возвращает:
array & array_reverse
=> [2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97]
Проблема с этим подходом:
2, 3, 5, 7 и 11 не являются палиндромами к другим элементам. Обратное однозначное число - это само число, и это заставляет код возвращать все одиночные цифры и все палиндромное число (например, 11, 22, 33). Она должна возвращать только [13, 17, 31, 37, 71, 73, 79, 97]
Как я могу сделать это, чтобы вернуть только элементы, которые палиндромический к другому элементу в том же массиве?
Просто добавьте еще один шаг фильтра, чтобы удалить палиндромные цифры. – Amit
Нет такой вещи, как «палиндромный». 1, 121 и 12321 - все [по определению палиндромы] (https://en.wikipedia.org/wiki/Palindromic_number). 13 и 31 не являются «палиндромными», они являются одинаковыми числами с цифрами, противоположными. – tadman
Я только что увидел этот вопрос и был удивлен, увидев, что вы выбрали ответ только через 35 минут! Почему бы не задержаться хотя бы на пару часов, чтобы поощрить другие ответы. Вы не знаете, что вам нужно. –