ChatGPT-4でMATLAB Codyの問題を解いてみた

# はじめに
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で次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/cade378e-77cc-122f-539d-80975d456b35.png)

### ChatGPTによる回答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/a4feed5e-d53a-09b3-3628-d6af12bfd6c9.png)
~~~ MATLAB:Answer by GPT-4
% 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);
~~~

## 結果
:::note
正解  :ok_woman:
:::

## 中級編 Medium
- Problem 6. Select every other element of a vector
https://jp.mathworks.com/matlabcentral/cody/problems/6

- MATLABで次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/e46c51e6-2029-023b-8436-2a6a3f5d63b0.png)

### ChatGPTによる回答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/0b14c179-f91d-10c8-bbdc-d25f7dbb3c4b.png)
~~~ MATLAB:Answer by GPT-4
function y = every_other_element(x)
    y = x(1:2:end);
end
~~~
## 結果
:::note
正解  :ok_woman:
:::

## 上級編 Hard
- Problem 44486. Vector push
https://jp.mathworks.com/matlabcentral/cody/problems/44486
- MATLABで次の問題を解いてくださいという文章の後に、問題文をそのまま記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/e63eff40-b7e5-f3b1-af2e-532ecdcdb352.png)


### ChatGPTによる回答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/0658eb75-37f5-563a-fabc-0e0c879d7b4b.png)
~~~ MATLAB:Answer by GPT-4
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
~~~
## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/47889b25-0cd9-d171-4fcf-12b19875d94d.png)

途中までテストはクリアしましたが、エラーが発生したようです…:expressionless:
調べててみると...
どうやら、行ベクトル、列ベクトルの違いを考慮するという、MATLABの罠に引っかかったようです。
もしかして、問題の文章があいまいなのが要因では...？:confused:
修正してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/cf15dda7-c59a-9baf-e5fb-5e54937d26d4.png)

### ChatGPTによる回答
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329764/94620418-9f6f-32a6-5662-564556fb97f6.png)

~~~ MATLAB:Answer by GPT-4
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
~~~

## 質問を修正した結果
:::note
正解  :ok_woman:
:::

# さいごに
ChatGPTさん、ゴメン🙇
質問の仕方が悪かったようです😅