Marcando soluções com tags


As tags de analisador servem para identificar como uma solução foi resolvida.

Essas tags podem então ser usadas para:

  • Ligar uma solução a abordagens
  • Ligar uma solução a conceitos
  • Buscar soluções com determinadas tags

Formato

Uma tag é uma string formatada assim: <category>:<thing>.

Oferecemos suporte a quatro categorias diferentes, do mais alto nível ao mais baixo:

Categoria Descrição Especificidade Exemplos
paradigm Um paradigma de programação Altíssimo nível, não específico de trilha imperative, functional
technique Uma técnica sendo usada Alto nível, a maioria não será específica de trilha recursion, immutability
construct Um construto da linguagem Muitos não serão específicos de trilha bitwise-and, for-loop
uses Uso específico de uma linguagem, como tipos ou métodos Baixo nível, específico de trilha DateTime.add_seconds, IEnumerable

Alguns exemplos de tags:

  • paradigm:functional
  • technique:recursion
  • construct:bitwise-and
  • uses:DateTime.add_seconds

Tags usadas com frequência

As trilhas são livres para marcar as soluções como quiserem, mas recomendamos tentar usar a lista de tags usadas com frequência abaixo sempre que possível. Usar um conjunto comum de tags nos permite fazer coisas bem legais, como ligar soluções entre trilhas.

Paradigma

Tag Descrição
paradigm:array usa programação com arrays.
paradigm:declarative usa programação declarativa.
paradigm:functional usa programação funcional.
paradigm:generic usa programação genérica.
paradigm:imperative usa programação imperativa.
paradigm:logic usa programação lógica.
paradigm:meta usa metaprogramação.
paradigm:object-oriented usa programação orientada a objetos.
paradigm:procedural usa programação procedural.
paradigm:reflective usa programação reflexiva.
paradigm:stack-oriented usa programação orientada a pilha.

Técnicas

Tag Descrição
technique:bit-manipulation manipula bits, normalmente com operadores bit a bit (por exemplo, AND, XOR ou deslocamento à esquerda)
technique:bit-shifting desloca bits em um número
technique:boolean-logic executa lógica booleana (AND, OR, NOT)
technique:composition usa composição
technique:concurrency executa código de forma concorrente
technique:enumeration enumera valores
technique:error-handling trata erros
technique:exceptions captura ou lança exceções
technique:function-composition usa composição de funções
technique:generator usa um gerador
technique:higher-order-functions usa funções de ordem superior
technique:immutability usa imutabilidade
technique:immutable-collection usa uma coleção cujo conteúdo é imutável
technique:inheritance usa herança
technique:laziness produz valores sob demanda, somente quando necessário
technique:locks usa locks para obter acesso exclusivo a recursos
technique:looping usa laços
technique:math usa matemática
technique:memory-management gerencia memória
technique:ordering ordena dados
technique:parallelism executa código em paralelo
technique:parser faz o parsing de dados
technique:pointers usa ponteiros
technique:randomness usa aleatoriedade
technique:recursion usa recursão
technique:regular-expression usa expressões regulares
technique:short-circuiting usa curto-circuito para evitar avaliações desnecessárias
technique:sorted-collection usa uma coleção cujos elementos estão sempre ordenados
technique:sorting ordena dados
technique:tail-call-optimization usa otimização de chamada de cauda para uma recursão eficiente
technique:type-conversion converte valores de um tipo para outro tipo
technique:unsafe usa código unsafe (por exemplo, aritmética de ponteiros)

Construtos

Tag Descrição
construct:abstract-class define uma classe abstrata
construct:abstract-method define um método abstrato
construct:add-assignment combina adição com atribuição
construct:add usa adição
construct:array usa ou declara um array
construct:assignment atribui ou vincula um valor a uma variável/nome
construct:async-await usa async/await
construct:attribute anota um membro com metadados
construct:auto-implemented-property define uma propriedade autoimplementada
construct:big-integer usa um número inteiro grande
construct:binary-number define um número em notação binária
construct:bit-array usa ou declara um bit array
construct:bitwise-and-assignment combina um AND bit a bit com atribuição
construct:bitwise-and executa um AND bit a bit
construct:bitwise-left-shift-assignment combina um deslocamento à esquerda bit a bit com atribuição
construct:bitwise-left-shift executa um deslocamento à esquerda bit a bit
construct:bitwise-not executa um NOT bit a bit
construct:bitwise-or-assignment combina um OR bit a bit com atribuição
construct:bitwise-or executa um OR bit a bit
construct:bitwise-right-shift-assignment combina um deslocamento à direita bit a bit com atribuição
construct:bitwise-right-shift executa um deslocamento à direita bit a bit
construct:bitwise-xor-assignment combina um XOR bit a bit com atribuição
construct:bitwise-xor executa um XOR bit a bit
construct:block define um bloco que contém uma lista de instruções
construct:boolean define ou usa um valor booleano
construct:boxing usa boxing
construct:break sai de um laço
construct:byte usa um número inteiro sem sinal de 8 bits
construct:catch captura uma exceção
construct:char usa um caractere
construct:checked-arithmetic usa aritmética verificada (que protege contra estouros)
construct:class define uma classe
construct:collection-initializer define os valores de uma coleção por meio de um inicializador
construct:command define um comando
construct:comment define um comentário
construct:comparison-chaining encadeia chamadas de comparação
construct:comparison compara dois valores quanto à ordem relativa entre eles
construct:complex-number usa um número complexo
construct:computed-string define uma string computada
construct:concatenation concatena valores
construct:conditional-access acessa um método condicionalmente
construct:conditional-operator usa um operador condicional ternário
construct:conditional executa código condicionalmente
construct:constant define um valor constante (imutável)
construct:constructor define um construtor
construct:continue passa para a próxima iteração de um laço
construct:conversion-operator define um operador de conversão
construct:copy copia um valor
construct:coroutine define ou usa uma corrotina
construct:custom-attribute define um atributo personalizado
construct:date-time usa um valor que representa uma combinação de data e hora
construct:date usa um valor que representa uma data (sem hora)
construct:decimal usa um número de ponto flutuante de 128 bits
construct:decrement decrementa um valor
construct:default-interface-implementation define uma implementação padrão em uma interface
construct:default define um valor padrão (por exemplo, para um parâmetro)
construct:destructuring desestrutura um valor em suas partes
construct:dictionary-comprehension cria um dicionário por meio de uma compreensão
construct:dictionary usa/define um dicionário/mapa
construct:discard usa o valor especial discard
construct:divide-assignment combina divisão com atribuição
construct:divide usa divisão
construct:do-while-loop usa um laço do-while
construct:double usa um número de ponto flutuante de 64 bits
construct:else define um bloco else
construct:enum define ou usa um enum (enumeração de valores)
construct:equality compara a igualdade de dois valores
construct:error define ou usa um erro
construct:event define ou usa eventos
construct:exception define ou usa exceções
construct:explicit-conversion converte explicitamente de um tipo para outro tipo
construct:explicit-import importa apenas funcionalidades específicas
construct:exponentiation calcula a exponenciação de um valor
construct:expression-bodied-member define um membro com corpo de expressão
construct:extension-method define um método de extensão
construct:field-access acessa um campo
construct:field define um campo
construct:finally usa finally para garantir que um bloco de código específico sempre rode
construct:flags-enum define ou usa um enum de flags
construct:float usa um número de ponto flutuante de 32 bits
construct:floating-point-number usa um número de ponto flutuante
construct:for-loop usa um laço for
construct:foreach usa um laço foreach
construct:function-overloading usa sobrecarga de funções
construct:function define uma função
construct:generator define uma função ou um método gerador
construct:generic-function define uma função parametrizada com um ou mais tipos
construct:generic-method define um método parametrizado com um ou mais tipos
construct:generic-type define um tipo parametrizado com um ou mais tipos
construct:getter define um getter
construct:global-function define uma função disponível globalmente
construct:global-variable define uma variável disponível globalmente
construct:header define um arquivo de cabeçalho
construct:hexadecimal-number define um número em notação hexadecimal
construct:if usa uma condicional if
construct:implicit-conversion converte implicitamente de um tipo para outro tipo
construct:implicit-loop itera implicitamente sobre uma coleção de valores
construct:implicit-return retorna um valor implicitamente
construct:import importa funcionalidades implementadas em outro lugar (por exemplo, de um namespace/módulo)
construct:increment incrementa um valor
construct:index-operator define um operador para indexar um objeto
construct:indexer define ou usa um indexador
construct:indexing acessa um valor por índice
construct:inequality compara a desigualdade de dois valores
construct:infix-operator define um operador infixo
construct:initialization inicializa um objeto após a criação
construct:initializer-list inicializa os valores dos campos de um objeto
construct:initializer inicializa um objeto
construct:instance cria ou usa uma instância de um tipo
construct:instantiation cria uma instância de um tipo
construct:int usa um número inteiro com sinal de 32 bits
construct:integral-number usa um número inteiro (integer)
construct:interface define uma interface
construct:invocation invoca um método/função
construct:iterator define uma função ou um método sobre o qual é possível iterar
construct:jagged-array usa um jagged array (um array de arrays)
construct:lambda define uma lambda (também chamada de "função anônima")
construct:linked-list usa uma lista encadeada
construct:linq usa LINQ
construct:list-comprehension constrói uma lista por meio de uma compreensão
construct:list usa uma lista
construct:local-function define uma função local
construct:local-variable define uma variável local
construct:lock usa um lock
construct:logical-and executa um AND lógico
construct:logical-not executa um NOT lógico
construct:logical-or executa um OR lógico
construct:long usa um número inteiro com sinal de 64 bits
construct:loop define um laço
construct:macro define uma macro
construct:membership-test verifica se um valor pertence a outro valor
construct:metatable define uma metatable
construct:method-chaining encadeia várias chamadas de método
construct:method-overloading usa sobrecarga de métodos
construct:method-override define um método sobrescrito
construct:method define um método
construct:module define um módulo (agrupamento de código)
construct:modulo-assignment combina o resto da divisão com atribuição
construct:modulo usa o resto da divisão
construct:multi-dimensional-array usa um array com várias dimensões
construct:multiline-string define uma string multilinha
construct:multiple-assignment atribui vários valores de uma vez
construct:multiple-dispatch usa despacho múltiplo
construct:multiply-assignment combina multiplicação com atribuição
construct:multiply usa multiplicação
construct:named-argument passa um argumento pelo nome
construct:namespace define um namespace (agrupamento de código)
construct:nested-function define uma função aninhada
construct:nested-type define um tipo aninhado
construct:nesting usa aninhamento
construct:nint usa um número inteiro com sinal específico da plataforma (32 ou 64 bits)
construct:nuint usa um número inteiro sem sinal específico da plataforma (32 ou 64 bits)
construct:null usa null/nil para representar a ausência de um valor
construct:nullability lida com valores null/nil
construct:number usa um número (com ou sem sinal)
construct:object-initializer define os valores de um objeto por meio de um inicializador
construct:octal-number define um número em notação octal
construct:operator-overloading usa sobrecarga de operadores
construct:option usa um tipo option
construct:optional-parameter define um parâmetro opcional
construct:overflow usa estouro aritmético
construct:parameter define um parâmetro
construct:parenthesized-expression coloca uma expressão entre parênteses
construct:pattern-matching usa correspondência de padrões
construct:pattern define um padrão usado na correspondência de padrões
construct:pipe-backward usa um pipe para trás
construct:pipe-forward usa um pipe para frente
construct:pipeline define um pipeline
construct:point-free define funções sem os argumentos sobre os quais elas operam
construct:pointer usa um ponteiro
construct:postfix-decrement decrementa um valor usando notação pós-fixa
construct:postfix-increment incrementa um valor usando notação pós-fixa
construct:prefix-decrement decrementa um valor usando notação pré-fixa
construct:prefix-increment incrementa um valor usando notação pré-fixa
construct:print imprime um valor no console
construct:property define uma propriedade (getter/setter)
construct:query-expression consulta dados por meio de uma expressão
construct:queue usa uma fila
construct:range define um intervalo
construct:read-only define um valor somente leitura
construct:record define um record
construct:regular-expression define ou usa uma expressão regular
construct:result usa um tipo result
construct:return-type define o tipo de retorno de uma função ou de um método
construct:return retorna de uma função/método
construct:sbyte usa um número inteiro com sinal de 8 bits
construct:scientific-notation-number define um número em notação científica
construct:set-comprehension cria um conjunto por meio de uma compreensão
construct:set usa um conjunto
construct:setter define um setter
construct:short usa um número inteiro com sinal de 16 bits
construct:slice usa um slice
construct:stack usa uma pilha
construct:static-field define um campo estático
construct:static-method define um método estático
construct:string-formatting constrói uma string por meio de uma string de formato
construct:string-interpolation define uma string interpolada
construct:string define uma string
construct:struct define uma struct
construct:subtract-assignment combina subtração com atribuição
construct:subtract usa subtração
construct:sum-type define um tipo soma
construct:switch usa um switch
construct:table define uma tabela
construct:template-alias define um alias para um template
construct:template-parameter define um parâmetro de template
construct:template define um template
construct:throw lança uma exceção
construct:time usa um objeto que representa o horário
construct:try trata uma exceção explicitamente
construct:tuple usa uma tupla
construct:type-alias define um alias para um tipo
construct:type-conversion converte (faz cast de) um valor para outro tipo
construct:type-extension estende um tipo com novas funcionalidades
construct:type-inference infere automaticamente o tipo de um valor/função
construct:type-test verifica se um valor tem um tipo específico
construct:uint usa um número inteiro sem sinal de 32 bits
construct:ulong usa um número inteiro sem sinal de 64 bits
construct:unary-minus usa um menos unário
construct:unary-plus usa um mais unário
construct:underscored-number usa um número com sublinhados como separadores de dígitos
construct:union-type define um tipo união
construct:user-defined-exception define uma exceção personalizada, definida pelo usuário
construct:ushort usa um número inteiro sem sinal de 16 bits
construct:using-directive usa código de outro arquivo
construct:using-statement atribui e descarta um valor por meio da instrução using
construct:varargs define um parâmetro que aceita passar zero ou mais valores
construct:variable declara uma variável
construct:vector usa um vetor
construct:verbatim-string usa uma string verbatim (sem sequências de escape)
construct:virtual-method define um método virtual
construct:visibility-modifiers especifica a visibilidade de um construto (por exemplo, um método ou uma classe)
construct:while-loop usa um laço while
construct:yield produz um valor em um laço sob demanda

Usos

Como essa categoria é específica de cada linguagem, não há tags usadas com frequência aqui.