Тегування рішень


Теги аналізатора допомагають визначити, як було розвʼязано рішення.

Далі ці теги можна використовувати, щоб:

  • повʼязувати рішення з підходами
  • повʼязувати рішення з концепціями
  • шукати рішення з певними тегами

Формат

Тег - це рядок тексту (англ. string) такого формату: <category>:<thing>.

Ми підтримуємо чотири різні категорії, від найвищого рівня до найнижчого:

Category Description Specificity Examples
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

Часто використовувані теги

Хоча треки можуть позначати рішення тегами на власний розсуд, радимо за можливості використовувати наведений нижче список часто використовуваних тегів. Спільний набір тегів дасть нам змогу робити деякі корисні речі, як-от повʼязувати рішення між треками.

Парадигма

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 ліниво породжує значення в циклі

Використання

Оскільки ця категорія залежить від конкретної мови, тут немає часто використовуваних тегів.