CODYコンテスト2020MATLAB入門24の質問(パート1)

 

問題8.2つの数字を追加する

aとbが与えられた場合、cの合計a + bを返します。

2つの数値の合計を返します。

function c = add_two_numbers(a,b)
  c = a+b;
end

第二题問題3.入力ベクトルのすべての数の合計を求めます

入力ベクトルxのすべての数の合計を求めます。

例:

 

入力x = [1 2 3 5]

出力yは11です

 

入力x = [42 -1]

出力yは41です

ベクトルで使用されている要素合計を返すには、sum()を直接使用します。 

function ans = vecsum(x)
   sum(x)
end

最初に与えられた関数の戻り変数はyであり、ここではansに変更され、最終結果の計算時にセミコロンは追加されないため、変数スペースを節約でき、多くの質問をこの方法で最適化できることに注意してください。

問題1702。行列の最大値

与えられた行列の最大値を見つけます。

たとえば、

A = [1 2 3; 4 7 8; 0 9 1];

答えは9です。

指定された行列の最大値を返します最大のテストケースは2次元の行列であり、最大の2つの層で十分です。

function ans = your_fcn_name(x)
    max(max(x))
end

問題1545.正方形の戻り領域

正方形の辺=入力= a

Area = output = b

関数の入力は、正方形の一辺の長さaとその面積bの範囲です。(コメント領域を見ると、誰かが入力に惑わされ、入力を使用して手動入力値を取得しました)

直接:

function b = area_square(a)
  b = a*a;
end

またはb = a ^ 2;

問題233.ベクトルを逆にする

ベクトル要素を逆にします。

例:

入力x = [1,2,3,4,5,6,7,8,9]

出力y = [9,8,7,6,5,4,3,2,1]

次に、ベクトル要素は最初の要素であり、最後の要素の交換位置、2番目と最後から2番目などは、ミラーリング関数fliplrで直接使用できます。

function y = reverseVector(x)
  y = fliplr(x);
end

または、逆走査を介して:y = x(end:-1:1);達成するには、後者の方が高速です。

質問6問題1035.1、2、2、3、3、3、4、4、4、4のようなベクトルを生成します

1,2,2,3,3,3,4,4,4,4のようなベクトルを生成します

したがって、n = 3の場合、

[1 2 2 3 3 3]

そして、n = 5の場合、

[1 2 2 3 3 3 4 4 4 4 5 5 5 5 5]

入力値nが与えられた場合、1、2、3、... nnの順序で生成されたベクトルを返します。repelem関数を直接使用することも、トラバーサルなどの他の方法を使用することもできます。後者の方が記述が面倒です。

function ans = your_fcn_name(n)
 repelem(1:n,1:n)
end

 問題23.完璧な正方形を見つける

数値のベクトルが与えられた場合、数値の1つが他の数値の1つの正方形である場合、trueを返します。それ以外の場合はfalseを返します。

例:

入力a = [2 3 4]

出力bは真です

2 ^ 2は4であり、2と4の両方がリストに表示されるため、出力はtrueです。

ベクトル内の要素が特定の値とこの値の2乗の存在を同時に満たすかどうかを判断します。質問の意味は...他の1つとして示されます。つまり、この値と2乗はこの値を同じ数にすることはできないため、1と0は考慮できません。

2つの簡単なアイデアがあります。1つは、xとx。^ 2の交点を見つけ、空でない場合はtrueを返すか、x(i)= x(j)^ 2が満たされているかどうかに関係なくxを2回トラバースすることです。 。

ただし、上記の1と0のため、再交差で1回だけ表示される1または0は削除され、さらに保持できます。これは、xに複数の1または0があり、他の条件を満たすことを示しています。 2つのトラバーサルは、i!= jの条件でのみ実行する必要があります。

しかし、テストケースの1については当てはまります。

合格したい場合は、それほど考える必要はありません。直接、次のようにします。

function b = isItSquared(x)
    b=~(isempty(intersect(x.^2,x)));
end

しかし、私はそれが彼の意味を満たすために修正されるべきだと思います:

function b = isItSquared(x)
    b=intersect(x.^2,x);
    f=find(b==0);
    b(f(1))=[];
    f=find(b==1);
    b(f(1))=[];
    b=~isempty(b);
end

b()= []を使用して要素を削除すると、次の要素が前方に移動します。複数の1または0の発生を防ぐために、1つだけが削除されます。

質問8問題2.ベクトルを作成します[12 3 4 5 6 7 8 9 10]

この質問では、1からnではなく1から10を返す必要があります。

function x = oneToTen
  x = 1:10;
end

質問9問題5.三角数

三角数は、連続する整数の合計です。したがって、6は三角数です。

6 = 1 + 2 + 3

このように三角形に表示することができます

*

* *

* * *

したがって、6 = triangle(3)です。nが与えられた場合、nの三角数であるtを返します。

例:

入力n = 4

出力tは10です

nレベルの三角分布の点の数を見つけます。i番目のレベルはi、つまり1、2、3、です。nの合計には、合計式を直接使用します。

function t = triangle(n)
 t=n*(n+1)/2;
end

 質問10斜辺の長さ

長さaとbの短辺が与えられた場合、直角三角形の斜辺の長さcを計算します。

直角三角形の2つの短辺の長さaとbが与えられた場合、直角辺cを見つけて、量子力学を直接使用します。いいえ、ピタゴラスの定理です。

function c = hypotenuse(a,b)
  c = sqrt(a^2+b^2);
end

11番目の質問問題6.ベクトルの他のすべての要素を選択します

渡されたベクトルの他のすべての要素を返す関数を記述します。つまり、最初の要素から始まるすべての奇数の要素を返します。

例:

入力x = [1 3 2 4 3 5]

出力yは[123]です

 

 

入力x = [5 9 3 2 2 0 -1]

出力yは[53 2-1]です。

ベクトルのすべての奇数(奇数)要素を返します。添え字は1から始まり、直接1:2:endにすることができます。2は走査ステップ長を表します。偶数の場合は2:2:endです。

function y = everyOther(x)
  y = x(1:2:end);
end

 問題7.列の削除

入力行列Aからn番目の列を削除し、結果の行列を出力Bに返します。

だからもし

A = [1 2 3;

4 5 6];

そして

n = 2

次にBは

[1 3

46]

行列Aのn番目の列を削除します 

最初の方法は、最初の1〜n-1とn +1を最後の2つのサブ行列にマージすることです。

function B = column_removal(A,n)
  B=[A(:,1:n-1),A(:,n+1:end)];
end

2番目のアプローチは、n番目の列を空に設定することです。

B=A;
B(:,n)=B;

 

おすすめ

転載: blog.csdn.net/qq_36614557/article/details/110478489