Они одинаковы"? — Вызов кодирования (Codewars)

Проблема с кодированием Python

Имея два массива a и b, напишите функцию comp(a, b) (илиcompSame(a, b)), которая проверяет, имеют ли два массива «одинаковые» элементы с одинаковыми кратностями (кратность члена — это количество раз, которое он появляется) . «То же самое» здесь означает, что элементы в b являются элементами в a в квадрате, независимо от порядка.

Примеры

Действительные массивы

a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]

comp(a, b) возвращает true, потому что в b 121 — это квадрат 11, 14641 — квадрат 121, 20736 — квадрат 144, 361 — квадрат 19, 25921 — квадрат 161 и так далее. Это становится очевидным, если мы запишем элементы b в виде квадратов:

a = [121, 144, 19, 161, 19, 144, 19, 11] 
b = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19]

Недопустимые массивы

Если, например, мы изменим первое число на что-то другое, comp больше не будет возвращать значение true:

a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [132, 14641, 20736, 361, 25921, 361, 20736, 361]

comp(a,b) возвращает false, потому что в b 132 не является квадратом любого числа a.

a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [121, 14641, 20736, 36100, 25921, 361, 20736, 361]

comp(a,b) возвращает false, потому что в b 36100 не является квадратом любого числа a.

Примечания

  • a или b может быть [] or {} (все языки, кроме R, Shell).
  • a или b может быть nil или null или None или nothing (кроме C++, COBOL, Crystal, D, Dart, Elixir, Fortran, F#, Haskell, Nim, OCaml, Pascal, Perl, PowerShell, Prolog, PureScript, R, Racket , Ржавчина, Шелл, Свифт).

Если a или b равны nil (или null или None, в зависимости от языка), проблема не имеет смысла, поэтому возвращайте false.

Примечание для С

Два массива имеют одинаковый размер (> 0), указанный в качестве параметра в функции comp.

Мое решение:

Объяснение:

Строка 3–4: проверьте, имеет ли массив1 или массив2 значение None или имеет пустой список или набор. Если он возвращает False

Строка 7: использует функцию карты. Что делает функция карты? Примените функцию к каждому элементу в коллекции.
Выглядит так: map(func, collection). Здесь я создал лямбда-функцию, которая берет элемент и возводит его в квадрат. Затем я превращаю результат в список и сортирую этот список.

Строка 8: я отсортировал список array2

Строка 9–12: я проверяю, есть ли в двух массивах одинаковые элементы с одинаковыми кратностями.