Теги аналізатора допомагають визначити, як було розвʼязано рішення.
Далі ці теги можна використовувати, щоб:
Тег - це рядок тексту (англ. string) такого формату: <category>:<thing>.
Ми підтримуємо чотири різні категорії, від найвищого рівня до найнижчого:
| Category | Description | Specificity | Examples |
|---|---|---|---|
paradigm |
Парадигма програмування | Дуже високий рівень, не залежить від треку |
imperative, functional
|
technique |
Використовувана техніка | Високий рівень, більшість не залежить від треку |
recursion, immutability
|
construct |
Конструкція мови | Багато з них не залежать від треку |
bitwise-and, for-loop
|
uses |
Використання, специфічне для мови, як-от типи чи методи | Низький рівень, залежить від треку |
DateTime.add_seconds, IEnumerable
|
Кілька прикладів тегів:
paradigm:functionaltechnique:recursionconstruct:bitwise-anduses:DateTime.add_secondsХоча треки можуть позначати рішення тегами на власний розсуд, радимо за можливості використовувати наведений нижче список часто використовуваних тегів. Спільний набір тегів дасть нам змогу робити деякі корисні речі, як-от повʼязувати рішення між треками.
| Tag | Description |
|---|---|
paradigm:array |
використовує програмування масивами. |
paradigm:declarative |
використовує декларативне програмування. |
paradigm:functional |
використовує функціональне програмування. |
paradigm:generic |
використовує узагальнене програмування. |
paradigm:imperative |
використовує імперативне програмування. |
paradigm:logic |
використовує логічне програмування. |
paradigm:meta |
використовує метапрограмування. |
paradigm:object-oriented |
використовує обʼєктно-орієнтоване програмування. |
paradigm:procedural |
використовує процедурне програмування. |
paradigm:reflective |
використовує рефлексивне програмування. |
paradigm:stack-oriented |
використовує стекове програмування. |
| Tag | Description |
|---|---|
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 |
використовує небезпечний код (наприклад, арифметику вказівників) |
| Tag | Description |
|---|---|
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 |
визначає число у двійковій нотації |
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 |
визначає або використовує булеве значення (англ. 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 |
порівнює два значення за їхнім відносним порядком |
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 |
використовує спеціальне значення discard |
construct:divide-assignment |
поєднує ділення з присвоєнням |
construct:divide |
використовує ділення |
construct:do-while-loop |
використовує цикл do-while
|
construct:double |
використовує 64-бітне число з плаваючою комою |
construct:else |
визначає гілку else |
construct:enum |
визначає або використовує enum (перелік значень) |
construct:equality |
порівнює два значення на рівність |
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 |
визначає або використовує 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 |
визначає функцію, параметризовану одним або кількома типами |
construct:generic-method |
визначає метод, параметризований одним або кількома типами |
construct:generic-type |
визначає тип, параметризований одним або кількома типами |
construct:getter |
визначає гетер |
construct:global-function |
визначає функцію, доступну глобально |
construct:global-variable |
визначає змінну, доступну глобально |
construct:header |
визначає файл заголовка |
construct:hexadecimal-number |
визначає число в шістнадцятковій нотації |
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 |
порівнює два значення на нерівність |
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 |
визначає число у вісімковій нотації |
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 |
визначає параметр, що підтримує передавання нуля або більше значень |
construct:variable |
оголошує змінну |
construct:vector |
використовує вектор |
construct:verbatim-string |
використовує дослівний рядок тексту (без екранувальних послідовностей) |
construct:virtual-method |
визначає віртуальний метод |
construct:visibility-modifiers |
визначає видимість конструкції (наприклад, методу або класу) |
construct:while-loop |
використовує цикл while
|
construct:yield |
ліниво породжує значення в циклі |
Оскільки ця категорія залежить від конкретної мови, тут немає часто використовуваних тегів.