Como todos sabemos, meta está transbordando com queixas sobre marcando código-golfe entre línguas (sim, cada palavra é um link independente, e estas podem ser apenas a ponta do iceberg).
Com tanto ciúme daqueles que realmente se preocuparam em procurar a documentação do Pyth, achei que seria bom ter um desafio um pouco mais construtivo, condizente com um site especializado em desafios de código.
O desafio é bastante direto. Como entrada , temos o nome do idioma e contagem de bytes . Você pode usá-las como entradas de função stdinou como método de entrada padrão de idiomas.
Como resultado , temos uma contagem de bytes corrigida , ou seja, sua pontuação com o handicap aplicado. Respectivamente, a saída deve ser a saída da função stdoutou o método de saída padrão do seu idioma. A saída será arredondada para números inteiros, porque amamos desempatadores.
Usando o mais feio, cortado junto consulta ( ligação - sinta-se livre para limpá-lo), eu consegui criar um conjunto de dados (ZIP com .xslx, .ods e .csv) que contém um instantâneo de todas as respostas para code-golfe perguntas . Você pode usar este arquivo (e assumir que ele esteja disponível para o seu programa, por exemplo, é na mesma pasta) ou converter esse arquivo para outro formato convencional ( .xls, .mat, .savetc - mas ele só pode conter os dados originais!). O nome deve permanecer QueryResults.extcom exta extensão de escolha.
Agora, para os detalhes. Para cada idioma, há um parâmetro Boilerplate Be Verbosity V. Juntos, eles podem ser usados para criar um modelo linear da linguagem. Vamos nser o número real de bytes, e cser a pontuação corrigida. Usando um modelo simples n=Vc+B, obtemos a pontuação corrigida:
n-B
c = ---
V
Simples o suficiente, certo? Agora, para determinar Ve B. Como você pode esperar, faremos uma regressão linear ou, mais precisamente, uma regressão linear ponderada em mínimos quadrados. Não vou explicar os detalhes sobre isso - se você não tiver certeza de como fazer isso, a Wikipedia é sua amiga ou, se tiver sorte, a documentação do seu idioma.
Os dados serão os seguintes. Cada ponto de dados será a contagem de bytes ne a contagem média de bytes da pergunta c. Para contabilizar os votos, os pontos serão ponderados, pelo número de votos mais um (para contabilizar 0 votos), vamos chamar assim v. Respostas com votos negativos devem ser descartadas. Em termos simples, uma resposta com 1 voto deve contar o mesmo que duas respostas com 0 votos.
Esses dados são então ajustados ao modelo acima mencionado n=Vc+Busando regressão linear ponderada.
Por exemplo , dados os dados para um determinado idioma
n1=20, c1=8.2, v1=1
n2=25, c2=10.3, v2=2
n3=15, c3=5.7, v3=5
Agora, nós compor as matrizes e vetores relevantes A, ye W, com os nossos parâmetros no vector
[1 c1] [n1] [1 0 0] x=[B]
A=[1 c2] y=[n2] W=[0 2 0], [V]
[1 c3] [n3] [0 0 5]
resolvemos a equação da matriz (com 'denotar a transposição)
A'WAx=A'Wy
para x(e consequentemente, obtemos nosso Be Vparâmetro).
Sua pontuação será a saída do seu programa, quando for indicado o seu próprio nome de idioma e o número da conta. Então, sim, desta vez até usuários de Java e C ++ podem ganhar!
AVISO: A consulta gera um conjunto de dados com muitas linhas inválidas devido a pessoas que usam formatação de cabeçalho 'cool' e pessoas que marcam suas perguntas de desafio de código como código-golfe . O download que forneci removeu a maioria dos outliers. NÃO use o CSV fornecido com a consulta.
Feliz codificação!
C++ <s>6 bytes</s>. Além disso, nunca fiz T-SQL antes de hoje e já estou impressionado comigo mesmo por conseguir extrair o número de bytes.
