解答へのタグ付け


アナライザーのタグは、解答が_どのように_解かれたのかを示すために使われます。

これらのタグは、次のことに使えます。

  • 解答をアプローチと結びつける
  • 解答をコンセプトと結びつける
  • 特定のタグが付いた解答を検索する

形式

タグは、<category>:<thing>という形式の文字列です。

カテゴリーは4つあり、レベルが高い順に次のとおりです。

カテゴリー 説明 具体性 例
paradigm プログラミングパラダイム とても高レベルで、トラックに固有ではありません imperative、functional
technique 使われているテクニック 高レベルで、多くはトラックに固有ではありません recursion、immutability
construct 言語の構成要素 多くはトラックに固有ではありません bitwise-and、for-loop
uses 型やメソッドなど、言語に固有の使い方 低レベルで、トラックに固有です DateTime.add_seconds、IEnumerable

タグの例をいくつか示します。

  • paradigm:functional
  • technique:recursion
  • construct:bitwise-and
  • uses: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 ループ内で値を遅延して生成します。

用途

このカテゴリーは言語に固有のものなので、ここに共通して使われるタグはありません。