第6.1回は、配列100本ノックです。

あらすじ

これまでも何度か言ってきましたが、プログラムは理解するのと書く事にはちょっとギャップがあり、 書く練習をする、というのが、説明を読んで行くのとは別に途中で必要になります。

また、プログラムは言葉で説明をするとかなり難しくなるけれど、書いて動かすと「ああそういう事ね」とすぐ分かる、という事が結構あります。 だから説明を読むのと、今回のようにひたすら書くのは、両方やる方が理解は深まる。

第六回でちょうど中盤の説明が一通り終わったので、次の関数の話に行く前に、ここまでやったことをひたすら書いていく、という事をやっていきたいと思います。

今回は配列です。

単純な訓練をたくさんやる、という作戦

アクションRPGなどで、勝てないボスが居たとします。
ボス戦を頑張って練習してうまくなって倒す、というやり方は確かにあるのですが、これが早いとは限りません。

何も考えずにひたすら雑魚を狩って、少し無駄なくらいレベル上げをやってしまって雑に倒す、というやり方もあると思います。 ドラクエなんかでも、無駄にレベル上げをやってからダンジョン行く、というスタイルはあるでしょう。

ゲームの場合はレベル上げを無駄にやり過ぎると簡単過ぎて楽しく無い、という問題はあるのですが、 プログラムを覚える場合は別に簡単過ぎても構わないはずです。 難しい所を頑張って頭の良さを鍛えて乗り切ってもいいんだけど、 心を無にしてひたすらスライム狩りまくって、ボスはAボタン連打で倒してしまっても構いません。

今回はこの、ひたすら雑魚を狩って不要な所までレベルを上げてしまおう、という企画です。

とにかくひたすら書き続けて、何も見なくてもスラスラ書けるようにしっかり書き方を覚える。 かったるくてつまらないですが、レベル上げです。

プログラムは自転車に乗るのと似ている所があります。
自転車が倒れない理屈をちゃんと説明しようとすると、 角運動量保存則だとかラグランジアンの回転不変性だとかいろいろ難しい事を知る必要がありますが、 とりあえずこいで乗れてしまえば、最初は難しくてもすぐに慣れて普通に乗れます。 実際自転車がうまく乗れるコツは、変な物理の理論を考えるよりも、実際にえいっと乗ってこいでみる方が良い。 むしろ理屈を考え過ぎて思い切り良く「こげない」方が、乗れるようになるのに時間がかかるでしょう。

プログラムも細かい事を説明すると難しいのですが、最初は別に細かい事を理解する必要はありません。
あまり細かい所を理解しようとする人よりも、良く分からんが書いて動かしてみる、という人の方が、最初の上達は早いと思います。 良く分からない状態でも、あまり考えずにえいっと少し書いていれば勝手に体が覚えてくれるものです。

そこで今回は、プログラムをかたっぱしから書いてみて、自転車が走り出す所まで行くのを目指します。

新しい事は一切無いので、飽きたらやめてしまっても問題は無いのですが、 自分の頭の良さに自信が無ければ無いほど、 ひたすら単調なレベル上げでカバーするのがオススメです。 要領の悪さは筋トレでカバー。目指せ脳筋。

実際の所、プログラムでは程度の差こそあれ、どこかで皆が「地頭の良さ」みたいなのの自分の限界にぶつかるものです。 ですが、プログラムはこの手の筋トレなど、地頭の良さ以外の方法でいろいろカバーが出来る、という良さがあります(数学はこれが出来なくてねぇ…)。

そんな訳で筋トレなので、もう飽きた、もう分かったよ、と思った所から、さらに少し先くらいまで訓練してみましょう。

やり方

おもに二つの問題があります。なんとなく見て解いていってもらって良いのですが、一応説明も書いておきます。

パターン1: 配列の生成

以下の配列を生成せよ」 の下に書かれている配列を作って、kotaeという変数に入れる、という事をやってもらいます。 今回は問題を大量に作る都合で、あまり間に説明とかはありません。 問題文が分かりにくくて何をやったらいいか分からない、という場合は、答えを見てください。 同じような問題を幾つか並べてあるので、一つや二つ答えを見ても問題無いように作ってあります。

結果にたまに[object Object]みたいなのが表示される事がありますが、私の方のバグなので気にしないでください。(たぶん一回目だけ表示される)

パターン2: 配列からの要素の取り出し

hairetuという変数に配列が用意されているので、そこから「XXを取り出せ」の指示にある要素を取り出す。 結果はkotaeに入れる。

例えばvar kotae = hairetu[0];とかいう風に。

ではやっていきましょう。大量にあるのでバンバンやっていって下さい。

以下の配列を生成せよ
  1. "むぇ~~~"
  2. "コケー"
  3. "ダネ~~"
結果:

答え:
["むぇ~~~","コケー","ダネ~~"]

以下の配列を生成せよ
  1. "あじゃ"
  2. "るーしー"
  3. "ダニエル"
結果:

答え:
["あじゃ","るーしー","ダニエル"]

以下の配列を生成せよ
  1. "もっと"
  2. "たくさん"
  3. "要素が"
  4. "ある"
  5. "例です。"
  6. "全部で"
  7. "7個"
結果:

答え:
["もっと","たくさん","要素が","ある","例です。","全部で","7個"]

「"コケー"」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「"ダネ~~"」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

以下の配列を生成せよ
  1. "あかさ"
  2. "ふば"
結果:

答え:
["あかさ","ふば"]

以下の配列を生成せよ
  1. "あかさ"
結果:

答え:
["あかさ"]

以下の配列を生成せよ
  1. "要素一つの例"
結果:

答え:
["要素一つの例"]

以下の配列を生成せよ
  1. "もう一回"
結果:

答え:
["もう一回"]

以下の配列を生成せよ
  1. "さらにもう一回"
結果:

答え:
["さらにもう一回"]

「"あかさ"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. "ほげ"
  2. "いか"
  3. "ふが"
結果:

答え:
["ほげ","いか","ふが"]

「"要素一つの例"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. "こちんこちん"
  2. "ぬっくぬく"
  3. "しゅるしゅる"
結果:

答え:
["こちんこちん","ぬっくぬく","しゅるしゅる"]

「"ぬっくぬく"」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

以下の配列を生成せよ
  1. "こーしー"
  2. "麦茶"
結果:

答え:
["こーしー","麦茶"]

以下の配列を生成せよ
  1. "プレモル"
  2. "プリン"
結果:

答え:
["プレモル","プリン"]

「"あじゃ"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「"こちんこちん"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. "数字の"
  2. "要素"
  3. 5
  4. 6
  5. 7
結果:

答え:
["数字の","要素",5,6,7]

以下の配列を生成せよ
  1. 5
  2. 4
  3. 3
結果:

答え:
[5,4,3]

以下の配列を生成せよ
  1. "5"
  2. "4"
  3. "3"
結果:

答え:
["5","4","3"]

以下の配列を生成せよ
  1. "3"
結果:

答え:
["3"]

以下の配列を生成せよ
  1. 3
結果:

答え:
[3]

「"数字の"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「6」 を取り出せ
結果:

答え:
var kotae = hairetu[3];

「"3"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. "4"
結果:

答え:
["4"]

以下の配列を生成せよ
  1. 4
結果:

答え:
[4]

以下の配列を生成せよ
  1. "1234"
結果:

答え:
["1234"]

以下の配列を生成せよ
  1. 1234
結果:

答え:
[1234]

「4」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. 10
  2. 11
  3. 12
結果:

答え:
[10,11,12]

以下の配列を生成せよ
  1. "10"
  2. "11"
  3. "12"
結果:

答え:
["10","11","12"]

以下の配列を生成せよ
  1. "5678"
結果:

答え:
["5678"]

以下の配列を生成せよ
  1. "5678"
  2. "1234"
結果:

答え:
["5678","1234"]

以下の配列を生成せよ
  1. 5678
  2. 1234
結果:

答え:
[5678,1234]

「3」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「6」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「4」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「1」 を取り出せ
結果:

答え:
var kotae = hairetu[3];

「1」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

以下の配列を生成せよ
  1. "56"
  2. 78
  3. "910"
  4. "1112"
  5. 1314
結果:

答え:
["56",78,"910","1112",1314]

以下の配列を生成せよ
  1. "5"
  2. 6
  3. 7
  4. "8"
  5. "9"
  6. 10
結果:

答え:
["5",6,7,"8","9",10]

「"12"」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「"10"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「78」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「"1112"」 を取り出せ
結果:

答え:
var kotae = hairetu[3];

以下の配列を生成せよ
  1. "配列の中に"
  2. "配列を入れる"
  3. [1,2]
結果:

答え:
["配列の中に","配列を入れる",[1,2]]

以下の配列を生成せよ
  1. "配列の中に"
  2. [1,2]
  3. "配列を入れる"
結果:

答え:
["配列の中に",[1,2],"配列を入れる"]

以下の配列を生成せよ
  1. "あ"
  2. ["え","お"]
  3. "い"
  4. "う"
結果:

答え:
["あ",["え","お"],"い","う"]

以下の配列を生成せよ
  1. ["あ","い"]
  2. "う"
  3. "え"
結果:

答え:
[["あ","い"],"う","え"]

以下の配列を生成せよ
  1. "あ"
  2. "い"
  3. ["か","き","く"]
  4. "う"
  5. "え"
結果:

答え:
["あ","い",["か","き","く"],"う","え"]

「"配列の中に"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「"配列を入れる"」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

以下の配列を生成せよ
  1. [1,2]
  2. 3
  3. 4
結果:

答え:
[[1,2],3,4]

「4」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「3」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. 5
  2. [2,3]
  3. 7
結果:

答え:
[5,[2,3],7]

「[2,3]」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[2][1];

「1」 を取り出せ
結果:

答え:
var kotae = hairetu[2][0];

「"しゅるしゅる"」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

以下の配列を生成せよ
  1. "むぇ~~~"
  2. "コケー"
  3. "ダネ~~"
結果:

答え:
["むぇ~~~","コケー","ダネ~~"]

以下の配列を生成せよ
  1. ["あじゃ","むぇ〜〜"]
  2. "るーしー"
  3. "まちあるき"
結果:

答え:
[["あじゃ","むぇ〜〜"],"るーしー","まちあるき"]

「["あじゃ","むぇ〜〜"]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[2][1];

「"むぇ〜〜"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][1];

「"12"」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「"あかさ"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. ["あじゃ","むえ〜〜"]
結果:

答え:
[["あじゃ","むえ〜〜"]]

以下の配列を生成せよ
  1. "あかさ"
結果:

答え:
["あかさ"]

以下の配列を生成せよ
  1. ["あかさ","ジム行け!"]
結果:

答え:
[["あかさ","ジム行け!"]]

「["あじゃ","むぇ〜〜"]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. ["あかさ","ジム行け!"]
結果:

答え:
[["あかさ","ジム行け!"]]

「["あかさ","ジム行け!"]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「"ジム行け!"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][1];

「"あじゃ"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][0];

以下の配列を生成せよ
  1. [8,9]
結果:

答え:
[[8,9]]

以下の配列を生成せよ
  1. [11,12]
結果:

答え:
[[11,12]]

以下の配列を生成せよ
  1. [1,2,3]
結果:

答え:
[[1,2,3]]

「3」 を取り出せ
結果:

答え:
var kotae = hairetu[1][1];

「5」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「[2,3]」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「"むぇ〜〜"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][1];

以下の配列を生成せよ
  1. "あじゃ"
  2. ["るーしー",1234]
  3. "まちあるき"
結果:

答え:
["あじゃ",["るーしー",1234],"まちあるき"]

以下の配列を生成せよ
  1. ["こーしー","麦茶"]
  2. "しゅるしゅる"
  3. "する"
結果:

答え:
[["こーしー","麦茶"],"しゅるしゅる","する"]

以下の配列を生成せよ
  1. ["こーしー","麦茶"]
  2. ["あじゃ","むぇ〜〜"]
結果:

答え:
[["こーしー","麦茶"],["あじゃ","むぇ〜〜"]]

以下の配列を生成せよ
  1. [10,11]
  2. [110,120]
結果:

答え:
[[10,11],[110,120]]

以下の配列を生成せよ
  1. ["ダニエル","ダネー"]
  2. ["あかさ","ジム行け!"]
結果:

答え:
[["ダニエル","ダネー"],["あかさ","ジム行け!"]]

以下の配列を生成せよ
  1. ["こーしー","麦茶"]
  2. ["あじゃ","むぇ〜〜"]
  3. ["ぬっくぬく","こちんこちん"]
結果:

答え:
[["こーしー","麦茶"],["あじゃ","むぇ〜〜"],["ぬっくぬく","こちんこちん"]]

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[1][0];

「[1,2]」 を取り出せ
結果:

答え:
var kotae = hairetu[2];

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[2][1];

「["こーしー","麦茶"]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. ["こーしー","麦茶"]
  2. "るーしー"
  3. ["ぬっくぬく","こちんこちん"]
結果:

答え:
[["こーしー","麦茶"],"るーしー",["ぬっくぬく","こちんこちん"]]

以下の配列を生成せよ
  1. [1,2,3]
  2. 4
結果:

答え:
[[1,2,3],4]

「"こちんこちん"」 を取り出せ
結果:

答え:
var kotae = hairetu[2][1];

「"ぬっくぬく"」 を取り出せ
結果:

答え:
var kotae = hairetu[2][0];

「"むぇ~~"」 を取り出せ
結果:

答え:
var kotae = hairetu[1][1];

「"麦茶"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][1];

「"あじゃ"」 を取り出せ
結果:

答え:
var kotae = hairetu[1][0];

「"こーしー"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][0];

「3」 を取り出せ
結果:

答え:
var kotae = hairetu[1][1];

「2」 を取り出せ
結果:

答え:
var kotae = hairetu[1][0];

「[2,3]」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「1」 を取り出せ
結果:

答え:
var kotae = hairetu[2][0];

「"配列の中に"」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

以下の配列を生成せよ
  1. 5
  2. [6,7,8]
結果:

答え:
[5,[6,7,8]]

以下の配列を生成せよ
  1. [1,2,3]
  2. 4
  3. [5,6,7]
結果:

答え:
[[1,2,3],4,[5,6,7]]

以下の配列を生成せよ
  1. ["ダニエル","ダネー"]
  2. ["あかさ","ジム行け!"]
結果:

答え:
[["ダニエル","ダネー"],["あかさ","ジム行け!"]]

「"あかさ"」 を取り出せ
結果:

答え:
var kotae = hairetu[1][0];

「"ダニエル"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][0];

「"ダネー"」 を取り出せ
結果:

答え:
var kotae = hairetu[0][1];

「"ジム行け!"」 を取り出せ
結果:

答え:
var kotae = hairetu[1][1];

「["あかさ","ジム行け!"]」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「["ダニエル","ダネー"]」 を取り出せ
結果:

答え:
var kotae = hairetu[0];

「"コケー"」 を取り出せ
結果:

答え:
var kotae = hairetu[1];

「"ダネ~~"」 を取り出せ
結果:

答え:
var kotae = hairetu[2];