問題の関数の入出力例に、この問題で使う入力のデータ型、出力のデータ型が提示してあります。
- 入力のデータ型 : エディタ内に予め定義されている関数が受け取る引数のデータ型と引数名
- 出力のデータ型 : 定義した関数が返すデータ型
問題ごとに入出力のデータ型が異なるので、どのようなデータ型を扱われるかを意識しておくことはとても大切です。またデータ型のバリエーションは言語によって異なる場合がありますが、Recursionでは慣例的にプログラミング言語問わず行われる分類を使っています。
Recursionで扱うデータ型を見てみよう
・boolean型
true, falseを格納します。
画像の問題では、入力のデータ型は
データ型 引数名
bool beef
bool chicken
bool salad
bool coffee
bool tea
となっています。「テスト」や「提出」をクリックすると、beef, chicken, salad, coffee, teaのそれぞれの引数にランダムなboolean型のデータが格納され、関数の呼び出しが行われます。
Pythonでは先頭を大文字にした「True, False」と記述しますが、テストケースに入力するのは小文字の「true, false」を使ってください。
・int型
-2,147,483,648 から 2,147,483,647 の整数を格納します。
言語の知識:
JavaScriptはint型ではなくNumber型を使いますが、ここではintegerとしています。
・long型
-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807の整数を格納します。
・double/float型
1.05や3.14のような小数を格納します。
浮動小数点型は、プログラミング言語によっては表現できる数の範囲によっては、double型とfloat型の種類があります。double型は約15桁、float型は約7桁のサイズを持っていて、double型の方が高い精度でデータを表現することができます。つまりサイズを超えた小数点以下は丸められてしまうので、誤差が発生する可能性があることに注意が必要です。
double型は倍精度浮動小数点数であるため、Recursionではdouble-floatと表記しています。
言語の知識:
Pythonはfloat型のみですが、doubleと同じ精度を持っています。
・char型
「’a’,’b’,’あ’,’い’」のような文字1文字を格納します。
言語の知識:
Javaではchar型を表すために、シングルクォーテーション(’ ‘)を使います。Python、JavaScriptではchar型はstr型として扱い、シングルクォーテーション(’ ‘)、ダブルクォーテーション(” “)どちらも使うことができます。
・str型
「”Hello world!”, “こんにちは”」のような文字列を格納します。
言語によってはstr型は存在せず、char型の配列で表現する場合もあります。文字列をシングルクォーテーション(’ ‘)、ダブルクォーテーション(” “)などで囲むと文字列リテラルとして認識されます。
言語の知識:
JavaScriptやPythonでは、シングルクォーテーションもダブルクオーテーションも同じように使うことができますが、Javaではダブルクオーテーションのみで、PHPではダブルクオーテーション(” “)を使うと変数展開をすることができます。このように言語によって少しずつ扱いが異なりますが、入力欄に記述するときはダブルクオーテーション(” “)を使用してください。
・配列
integer[]やstring[]は、そのデータ型の要素を持った配列を格納します。
integer[]は[1,2,3,4,5]のようにinteger型の要素が入る配列で、string[]は[“JavaScript”,”Python”,”Java”,”PHP”,”C++”]のようにstring型の要素が入る配列です。要素同士はカンマ「,」で区切り、すべての要素をブラケット[]で囲みます。要素が0の時は、ブラケットのみ[]です。
言語の知識:
Javaでは配列として固定配列と動的配列ArrayListが区別されるので、コーディング問題で出力を行う際は十分に注意ください。Recursionのコーディング問題では固定配列を入出力のデータ型としています。
・連結リスト
SinglyLinkedListNodeには連結リストのノードが格納されます。
連結リストを扱う問題では、画像のようにデフォルトでSinglyLinkedListNodeクラスが定義されています。SinglyLinkedListNodeクラスは、要素のデータと次のデータへの参照を持っており、各要素をノードといいます。
入力欄には要素をカンマ「,」で区切りブラケット[]で囲みます。これは配列と同じ形をしていますが、予め定義したsinglyLinkedList()という関数で、配列を連結リストに変更しています。
・二分木
BinaryTreeには二分木のノードが格納されます。
二分木や二分探索木の問題では、連結リストと同様、デフォルトでBinaryTreeクラスが定義されています。
BinaryTreeクラスは、要素のデータと左右の子への参照を持っています。SinglyLinkedListNodeと同じように、入力は配列で記述します。toBinaryTree()という関数が予め定義されており、受け取った配列を二分木に変換しています。