アナライザーのタグは、解答が_どのように_解かれたのかを示すために使われます。
これらのタグは、次のことに使えます。
タグは、<category>:<thing>という形式の文字列です。
カテゴリーは4つあり、レベルが高い順に次のとおりです。
| カテゴリー | 説明 | 具体性 | 例 |
|---|---|---|---|
paradigm |
プログラミングパラダイム | とても高レベルで、トラックに固有ではありません |
imperative、functional
|
technique |
使われているテクニック | 高レベルで、多くはトラックに固有ではありません |
recursion、immutability
|
construct |
言語の構成要素 | 多くはトラックに固有ではありません |
bitwise-and、for-loop
|
uses |
型やメソッドなど、言語に固有の使い方 | 低レベルで、トラックに固有です |
DateTime.add_seconds、IEnumerable
|
タグの例をいくつか示します。
paradigm:functionaltechnique:recursionconstruct:bitwise-anduses:DateTime.add_secondsトラックが解答に自由にタグを付けられるのはもちろんですが、できるだけ以下のよく使われるタグのリストを使うことをおすすめします。共通のタグを使うと、トラックをまたいだ解答のひも付けなど、便利なことができるようになります。
| タグ | 説明 |
|---|---|
paradigm:array |
配列プログラミングを使います。 |
paradigm:declarative |
宣言型プログラミングを使います。 |
paradigm:functional |
関数型プログラミングを使います。 |
paradigm:generic |
ジェネリックプログラミングを使います。 |
paradigm:imperative |
命令型プログラミングを使います。 |
paradigm:logic |
論理型プログラミングを使います。 |
paradigm:meta |
メタプログラミングを使います。 |
paradigm:object-oriented |
オブジェクト指向プログラミングを使います。 |
paradigm:procedural |
手続き型プログラミングを使います。 |
paradigm:reflective |
反射型プログラミングを使います。 |
paradigm:stack-oriented |
スタック指向プログラミングを使います。 |
| タグ | 説明 |
|---|---|
technique:bit-manipulation |
通常はビット演算子(AND、XOR、左シフトなど)を使ってビットを操作します。 |
technique:bit-shifting |
数値のビットをシフトします。 |
technique:boolean-logic |
真偽値の論理演算(AND、OR、NOT)を行います。 |
technique:composition |
コンポジションを使います。 |
technique:concurrency |
コードを並行して実行します。 |
technique:enumeration |
値を順に列挙します。 |
technique:error-handling |
エラーを処理します。 |
technique:exceptions |
例外を捕捉したりスローしたりします。 |
technique:function-composition |
関数合成を使います。 |
technique:generator |
ジェネレーターを使います。 |
technique:higher-order-functions |
高階関数を使います。 |
technique:immutability |
不変性を利用します。 |
technique:immutable-collection |
中身を変更できないコレクションを使います。 |
technique:inheritance |
継承を使います。 |
technique:laziness |
必要なときだけ値を遅延して生成します。 |
technique:locks |
リソースを排他的に扱うためにロックを使います。 |
technique:looping |
ループを使います。 |
technique:math |
数学的な計算を行います。 |
technique:memory-management |
メモリを管理します。 |
technique:ordering |
データの順序を決めます。 |
technique:parallelism |
コードを並列に実行します。 |
technique:parser |
データを解析します。 |
technique:pointers |
ポインターを使います。 |
technique:randomness |
ランダム性を利用します。 |
technique:recursion |
再帰を使います。 |
technique:regular-expression |
正規表現を使います。 |
technique:short-circuiting |
不要な評価を避けるために短絡評価を使います。 |
technique:sorted-collection |
要素が常に並び替えられているコレクションを使います。 |
technique:sorting |
データを並び替えます。 |
technique:tail-call-optimization |
効率のよい再帰のために末尾呼び出し最適化を使います。 |
technique:type-conversion |
値をある型から別の型に変換します。 |
technique:unsafe |
安全でないコード(ポインター演算など)を使います。 |
| タグ | 説明 |
|---|---|
construct:abstract-class |
抽象クラスを定義します。 |
construct:abstract-method |
抽象メソッドを定義します。 |
construct:add-assignment |
加算と代入を組み合わせます。 |
construct:add |
加算を使います。 |
construct:array |
配列を使う、または宣言します。 |
construct:assignment |
変数や名前に値を代入または束縛します。 |
construct:async-await |
async/awaitを使います。 |
construct:attribute |
メンバーにメタデータを付けて注釈を加えます。 |
construct:auto-implemented-property |
自動実装プロパティを定義します。 |
construct:big-integer |
多倍長整数を使います。 |
construct:binary-number |
2進数表記で数値を定義します。 |
construct:bit-array |
ビット配列を使う、または宣言します。 |
construct:bitwise-and-assignment |
ビット単位のANDと代入を組み合わせます。 |
construct:bitwise-and |
ビット単位のANDを行います。 |
construct:bitwise-left-shift-assignment |
ビット単位の左シフトと代入を組み合わせます。 |
construct:bitwise-left-shift |
ビット単位の左シフトを行います。 |
construct:bitwise-not |
ビット単位のNOTを行います。 |
construct:bitwise-or-assignment |
ビット単位のORと代入を組み合わせます。 |
construct:bitwise-or |
ビット単位のORを行います。 |
construct:bitwise-right-shift-assignment |
ビット単位の右シフトと代入を組み合わせます。 |
construct:bitwise-right-shift |
ビット単位の右シフトを行います。 |
construct:bitwise-xor-assignment |
ビット単位のXORと代入を組み合わせます。 |
construct:bitwise-xor |
ビット単位のXORを行います。 |
construct:block |
文のリストを含むブロックを定義します。 |
construct:boolean |
真偽値を定義または使います。 |
construct:boxing |
ボックス化を使います。 |
construct:break |
ループを抜けます。 |
construct:byte |
符号なし8ビット整数を使います。 |
construct:catch |
例外を捕捉します。 |
construct:char |
文字を使います。 |
construct:checked-arithmetic |
オーバーフローを防ぐチェック付き演算を使います。 |
construct:class |
クラスを定義します。 |
construct:collection-initializer |
初期化子を使ってコレクションの値を設定します。 |
construct:command |
コマンドを定義します。 |
construct:comment |
コメントを定義します。 |
construct:comparison-chaining |
比較の呼び出しを連結します。 |
construct:comparison |
2つの値の大小関係を比較します。 |
construct:complex-number |
複素数を使います。 |
construct:computed-string |
計算で生成される文字列を定義します。 |
construct:concatenation |
値を連結します。 |
construct:conditional-access |
メソッドに条件付きでアクセスします。 |
construct:conditional-operator |
三項条件演算子を使います。 |
construct:conditional |
条件に応じてコードを実行します。 |
construct:constant |
定数(変更できない値)を定義します。 |
construct:constructor |
コンストラクターを定義します。 |
construct:continue |
ループの次の繰り返しに進みます。 |
construct:conversion-operator |
変換演算子を定義します。 |
construct:copy |
値をコピーします。 |
construct:coroutine |
コルーチンを定義または使います。 |
construct:custom-attribute |
カスタム属性を定義します。 |
construct:date-time |
日付と時刻を組み合わせて表す値を使います。 |
construct:date |
時刻を含まない日付を表す値を使います。 |
construct:decimal |
128ビットの浮動小数点数を使います。 |
construct:decrement |
値を減らします。 |
construct:default-interface-implementation |
インターフェースにデフォルト実装を定義します。 |
construct:default |
デフォルト値(たとえば仮引数に対するもの)を定義します。 |
construct:destructuring |
値をその構成要素に分解します。 |
construct:dictionary-comprehension |
内包表記を使って辞書を作成します。 |
construct:dictionary |
辞書やマップを使う、または定義します。 |
construct:discard |
特殊な破棄値を使います。 |
construct:divide-assignment |
除算と代入を組み合わせます。 |
construct:divide |
除算を使います。 |
construct:do-while-loop |
do-whileループを使います。 |
construct:double |
64ビットの浮動小数点数を使います。 |
construct:else |
else分岐を定義します。 |
construct:enum |
列挙型(値の列挙)を定義または使います。 |
construct:equality |
2つの値が等しいかどうかを比較します。 |
construct:error |
エラーを定義または使います。 |
construct:event |
イベントを定義または使います。 |
construct:exception |
例外を定義または使います。 |
construct:explicit-conversion |
ある型から別の型へ明示的に変換します。 |
construct:explicit-import |
一部の機能だけをインポートします。 |
construct:exponentiation |
値のべき乗を計算します。 |
construct:expression-bodied-member |
式形式のメンバーを定義します。 |
construct:extension-method |
拡張メソッドを定義します。 |
construct:field-access |
フィールドにアクセスします。 |
construct:field |
フィールドを定義します。 |
construct:finally |
特定のコードブロックが必ず実行されるようにするために、finallyを使います。 |
construct:flags-enum |
フラグ列挙型を定義または使います。 |
construct:float |
32ビットの浮動小数点数を使います。 |
construct:floating-point-number |
浮動小数点数を使います。 |
construct:for-loop |
forループを使います。 |
construct:foreach |
foreachループを使います。 |
construct:function-overloading |
関数のオーバーロードを使います。 |
construct:function |
関数を定義します。 |
construct:generator |
ジェネレーター関数またはメソッドを定義します。 |
construct:generic-function |
1つ以上の型をパラメーターとして受け取る関数を定義します。 |
construct:generic-method |
1つ以上の型をパラメーターとして受け取るメソッドを定義します。 |
construct:generic-type |
1つ以上の型をパラメーターとして受け取る型を定義します。 |
construct:getter |
ゲッターを定義します。 |
construct:global-function |
グローバルに利用できる関数を定義します。 |
construct:global-variable |
グローバルに利用できる変数を定義します。 |
construct:header |
ヘッダーファイルを定義します。 |
construct:hexadecimal-number |
16進数表記で数値を定義します。 |
construct:if |
if文を使います。 |
construct:implicit-conversion |
ある型から別の型へ暗黙的に変換します。 |
construct:implicit-loop |
値のコレクションを暗黙的にループします。 |
construct:implicit-return |
値を暗黙的に返します。 |
construct:import |
別の場所(名前空間やモジュールなど)で実装された機能をインポートします。 |
construct:increment |
値を増やします。 |
construct:index-operator |
オブジェクトのインデックスを参照する演算子を定義します。 |
construct:indexer |
インデクサーを定義または使います。 |
construct:indexing |
インデックスを使って値にアクセスします。 |
construct:inequality |
2つの値が等しくないかどうかを比較します。 |
construct:infix-operator |
中置演算子を定義します。 |
construct:initialization |
オブジェクトを生成したあとに初期化します。 |
construct:initializer-list |
オブジェクトのフィールドの値を初期化します。 |
construct:initializer |
オブジェクトを初期化します。 |
construct:instance |
型のインスタンスを生成または使います。 |
construct:instantiation |
型のインスタンスを生成します。 |
construct:int |
符号付き32ビット整数を使います。 |
construct:integral-number |
整数を使います。 |
construct:interface |
インターフェースを定義します。 |
construct:invocation |
メソッドや関数を呼び出します。 |
construct:iterator |
繰り返し処理できる関数またはメソッドを定義します。 |
construct:jagged-array |
ジャグ配列(配列の配列)を使います。 |
construct:lambda |
ラムダ(「無名関数」とも呼ばれます)を定義します。 |
construct:linked-list |
連結リストを使います。 |
construct:linq |
LINQを使います。 |
construct:list-comprehension |
内包表記を使って配列を作ります。 |
construct:list |
配列を使います。 |
construct:local-function |
ローカル関数を定義します。 |
construct:local-variable |
ローカル変数を定義します。 |
construct:lock |
ロックを使います。 |
construct:logical-and |
論理ANDを行います。 |
construct:logical-not |
論理NOTを行います。 |
construct:logical-or |
論理ORを行います。 |
construct:long |
符号付き64ビット整数を使います。 |
construct:loop |
ループを定義します。 |
construct:macro |
マクロを定義します。 |
construct:membership-test |
ある値が別の値に含まれるかどうかを調べます。 |
construct:metatable |
メタテーブルを定義します。 |
construct:method-chaining |
複数のメソッド呼び出しを連結します。 |
construct:method-overloading |
メソッドのオーバーロードを使います。 |
construct:method-override |
オーバーライドしたメソッドを定義します。 |
construct:method |
メソッドを定義します。 |
construct:module |
モジュール(コードのまとまり)を定義します。 |
construct:modulo-assignment |
割り算の余りと代入を組み合わせます。 |
construct:modulo |
割り算の余りを使います。 |
construct:multi-dimensional-array |
多次元配列を使います。 |
construct:multiline-string |
複数行の文字列を定義します。 |
construct:multiple-assignment |
複数の値を一度に代入します。 |
construct:multiple-dispatch |
多重ディスパッチを使います。 |
construct:multiply-assignment |
乗算と代入を組み合わせます。 |
construct:multiply |
乗算を使います。 |
construct:named-argument |
名前を指定して引数を渡します。 |
construct:namespace |
名前空間(コードのまとまり)を定義します。 |
construct:nested-function |
入れ子の関数を定義します。 |
construct:nested-type |
入れ子の型を定義します。 |
construct:nesting |
入れ子を使います。 |
construct:nint |
プラットフォーム固有の符号付き整数(32ビットまたは64ビット)を使います。 |
construct:nuint |
プラットフォーム固有の符号なし整数(32ビットまたは64ビット)を使います。 |
construct:null |
値が存在しないことを表すためにnullやnilを使います。 |
construct:nullability |
nullやnilの値を扱います。 |
construct:number |
数値(符号付きまたは符号なし)を使います。 |
construct:object-initializer |
初期化子を使ってオブジェクトの値を設定します。 |
construct:octal-number |
8進数表記で数値を定義します。 |
construct:operator-overloading |
演算子のオーバーロードを使います。 |
construct:option |
オプション型を使います。 |
construct:optional-parameter |
省略可能な仮引数を定義します。 |
construct:overflow |
算術オーバーフローを利用します。 |
construct:parameter |
仮引数を定義します。 |
construct:parenthesized-expression |
式を括弧で囲みます。 |
construct:pattern-matching |
パターンマッチングを使います。 |
construct:pattern |
パターンマッチングで使うパターンを定義します。 |
construct:pipe-backward |
後方パイプを使います。 |
construct:pipe-forward |
前方パイプを使います。 |
construct:pipeline |
パイプラインを定義します。 |
construct:point-free |
対象の引数を明示せずに関数を定義します。 |
construct:pointer |
ポインターを使います。 |
construct:postfix-decrement |
後置記法を使って値を減らします。 |
construct:postfix-increment |
後置記法を使って値を増やします。 |
construct:prefix-decrement |
前置記法を使って値を減らします。 |
construct:prefix-increment |
前置記法を使って値を増やします。 |
construct:print |
値をコンソールに出力します。 |
construct:property |
プロパティ(ゲッターとセッター)を定義します。 |
construct:query-expression |
式を使ってデータを問い合わせます。 |
construct:queue |
キューを使います。 |
construct:range |
範囲を定義します。 |
construct:read-only |
読み取り専用の値を定義します。 |
construct:record |
レコードを定義します。 |
construct:regular-expression |
正規表現を定義または使います。 |
construct:result |
結果型を使います。 |
construct:return-type |
関数やメソッドの戻り値の型を定義します。 |
construct:return |
関数やメソッドから戻ります。 |
construct:sbyte |
符号付き8ビット整数を使います。 |
construct:scientific-notation-number |
指数表記で数値を定義します。 |
construct:set-comprehension |
内包表記を使って集合を作成します。 |
construct:set |
集合を使います。 |
construct:setter |
セッターを定義します。 |
construct:short |
符号付き16ビット整数を使います。 |
construct:slice |
スライスを使います。 |
construct:stack |
スタックを使います。 |
construct:static-field |
静的フィールドを定義します。 |
construct:static-method |
静的メソッドを定義します。 |
construct:string-formatting |
書式文字列を使って文字列を組み立てます。 |
construct:string-interpolation |
補間文字列を定義します。 |
construct:string |
文字列を定義します。 |
construct:struct |
構造体を定義します。 |
construct:subtract-assignment |
減算と代入を組み合わせます。 |
construct:subtract |
減算を使います。 |
construct:sum-type |
直和型を定義します。 |
construct:switch |
switchを使います。 |
construct:table |
テーブルを定義します。 |
construct:template-alias |
テンプレートの別名を定義します。 |
construct:template-parameter |
テンプレートパラメーターを定義します。 |
construct:template |
テンプレートを定義します。 |
construct:throw |
例外をスローします。 |
construct:time |
時刻を表すオブジェクトを使います。 |
construct:try |
例外を明示的に処理します。 |
construct:tuple |
タプルを使います。 |
construct:type-alias |
型の別名を定義します。 |
construct:type-conversion |
値を別の型に変換(キャスト)します。 |
construct:type-extension |
型に新しい機能を追加して拡張します。 |
construct:type-inference |
値や関数の型を自動的に推論します。 |
construct:type-test |
値が特定の型かどうかを調べます。 |
construct:uint |
符号なし32ビット整数を使います。 |
construct:ulong |
符号なし64ビット整数を使います。 |
construct:unary-minus |
単項マイナスを使います。 |
construct:unary-plus |
単項プラスを使います。 |
construct:underscored-number |
桁区切りとしてアンダースコアを使った数値を使います。 |
construct:union-type |
共用体型を定義します。 |
construct:user-defined-exception |
カスタムのユーザー定義例外を定義します。 |
construct:ushort |
符号なし16ビット整数を使います。 |
construct:using-directive |
別のファイルのコードを使います。 |
construct:using-statement |
using文を使って値を代入し、破棄します。 |
construct:varargs |
0個以上の値を渡せる仮引数を定義します。 |
construct:variable |
変数を宣言します。 |
construct:vector |
ベクトルを使います。 |
construct:verbatim-string |
逐語的文字列(エスケープシーケンスなし)を使います。 |
construct:virtual-method |
仮想メソッドを定義します。 |
construct:visibility-modifiers |
構成要素(メソッドやクラスなど)の可視性を指定します。 |
construct:while-loop |
whileループを使います。 |
construct:yield |
ループ内で値を遅延して生成します。 |
このカテゴリーは言語に固有のものなので、ここに共通して使われるタグはありません。