Определите функцию, которая принимает два массива n-длины в качестве аргумента и возвращает матричное умножение массивов в качестве вывода

Кто-нибудь может помочь с этим вопросом?

Определите функцию, которая принимает два массива n-длины в качестве аргумента и возвращает матричное умножение массивов в качестве вывода. Обратите внимание, что вы должны следовать правилам матрицы умножение. Пример: рассмотреть

A = [[8,3], [2,4], [3,6]], B = [[1,2,3], [4,6,8]].

Выход A × B равен

[[20,34,48], [18,28,38], [27,42,57]]

Примечание. Длина строки матрицы равна длине массива, а длина столбца матрицы равна длине массива. длина предметов. Например, массив A состоит из трех строк и двух столбцов или A представляет собой матрицу 3 × 2.

Вспомогательная документация: https://en.wikipedia.org/wiki/Matrix_multiplication

Что пробовали и в чем проблема?

Alexandre Fenyo 27.11.2022 14:17

см. также: meta.stackoverflow.com/questions/334822/…

gog 27.11.2022 14:36

Есть много вопросов о «умножении матриц JavaScript», на которые стоит обратить внимание, если вы застряли.

James 27.11.2022 14:40

это одна из моих задач для алгоритма.

Mohamadreza Kazemian 29.11.2022 04:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала мы подтверждаем, что

  • параметры являются массивами
  • количество столбцов в A совпадает с количеством строк в B
  • количество строк в A совпадает с количеством столбцов в B

а затем мы делаем фактический расчет.

function multiplicate(A, B) {
    if (!(Array.isArray(A) && Array.isArray(B))) throw 'You need to pass arrays';
    for (let row = 0; row < A.length; row++) {
        if (A[row].length !== B.length) throw 'The number of columns in A needs to match the number of rows in B';
    }
    for (let column = 0; column < B.length; column++) {
        if (B[column].length !== A.length) throw 'The number of rows in A needs to match the number of columns in B';
    }
    let C = [];
    for (let row = 0; row < A.length; row++) {
        let newRow = [];
        for (let column = 0; column < A.length; column++) {
            let sum = 0;
            for (let k = 0; k < A[row].length; k++) {
                sum += A[row][k] * B[k][column];
            }
            newRow.push(sum);
        }
        C.push(newRow);
    }
    return C;
}

console.info(multiplicate(
     [[8,3], [2,4], [3,6]],
     [[1,2,3], [4,6,8]]
));

вполне естественно использовать Fortran для таких вещей, но все же вопрос касается javascript, а не Fortran. ;)

gog 27.11.2022 21:11

@gog ответ был написан на Javascript.

Lajos Arpad 28.11.2022 08:37

Другие вопросы по теме