はじめに
OpenAIのChatGPTが、巷で話題になっています。
ChatGPTがプログラミングもできるとのことで、はたして、MATLAB Codyの問題が解けるのか??
最新のGPT-4で試してみました。
※ここでは、最新のAI技術であるChatGPTの評価を目的に、MATLAB Codyの問題を例題としております。Codyのスコアを上げることを目的としておりませんので、あらかじめご了承ください。
MATLAB Codyとは
ChatGPTさんに聞いてみます!
MATLAB Codyについて説明してください
MATLAB Codyは、MathWorks社が提供するMATLABおよびSimulinkユーザーコミュニティのためのオンラインプログラミングチャレンジプラットフォームです。Codyは、MATLABの技能を磨き、知識を共有し、他のユーザーと協力して問題を解決することを目的としています。Codyには、さまざまな難易度のプログラミング問題が用意されており、参加者は問題を解のものも決し、解答を提出することでポイントを獲得できます。
Codyの主な機能は以下の通りです。
問題の解決: ユーザーは、自分のMATLABのスキルに合わせて選んだ問題に取り組むことができます。問題は、簡単なものから高度なものまで、さまざまなレベルが用意されています。解答の提出と評価: ユーザーは、解答をCodyに直接提出し、その正確さや効率性を評価してもらうことができます。Codyは解答を自動的に評価し、正しい解答が提出された場合はポイントを与えます。
コミュニティとの協力: ユーザーは、他のユーザーと協力して問題を解決することができます。また、解答や解法について議論したり、フィードバックを受け取ったりすることもできます。
ランキングとバッジ: Codyでは、ユーザーの獲得ポイントに基づいてランキングが作成されます。また、特定の成果に対してバッジが授与されることもあります。
グループとチーム: ユーザーは、特定のトピックや関心事に基づいてグループを作成したり、チームを結成して競争したりすることができます。
MATLAB Codyは、MATLABのスキルを向上させるだけでなく、ユーザーコミュニティと交流し、知識を共有するための素晴らしいプラットフォームです。
ChatGPT-4への問題入力と回答例
初級編 Easy
- Problem 3. Find the sum of all the numbers of the input vector
https://jp.mathworks.com/matlabcentral/cody/problems/3
MATLABで次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。
ChatGPTによる回答
% Input vector x
x = [1 2 3 5];
% Calculate the sum of the elements in the vector
y = sum(x);
% Display the output
disp(y);
結果
正解
中級編 Medium
-
Problem 6. Select every other element of a vector
https://jp.mathworks.com/matlabcentral/cody/problems/6 -
MATLABで次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。
ChatGPTによる回答
function y = every_other_element(x)
y = x(1:2:end);
end
結果
正解
上級編 Hard
- Problem 44486. Vector push
https://jp.mathworks.com/matlabcentral/cody/problems/44486 - MATLABで次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。
ChatGPTによる回答
function [v, n] = push(v, x)
% If v is a row vector, ensure x is also a row vector
if isrow(v)
x = x(:)';
% If v is a column vector, ensure x is also a column vector
elseif iscolumn(v)
x = x(:);
end
% Append x to v
v = [v, x];
% Get the new number of elements
n = numel(v);
end
結果
途中までテストはクリアしましたが、エラーが発生したようです…
調べててみると...
どうやら、行ベクトル、列ベクトルの違いを考慮するという、MATLABの罠に引っかかったようです。
もしかして、問題の文章があいまいなのが要因では...?
修正してみます。
ChatGPTによる回答
function [v, n] = push(v, x)
% If v is empty, preserve the dimensions of x
if isempty(v)
v = x;
% If v is a row vector, ensure x is also a row vector and append
elseif isrow(v)
x = x(:)';
v = [v, x];
% If v is a column vector, ensure x is also a column vector and append
elseif iscolumn(v)
x = x(:);
v = [v; x];
end
% Get the new number of elements
n = numel(v);
end
質問を修正した結果
正解
さいごに
ChatGPTさん、ゴメン🙇
質問の仕方が悪かったようです😅