Fundo:
Costumo descobrir que, ao navegar em um site Stackexchange, começo a me perguntar como as pessoas obtêm a quantidade de reputação que possuem. Eu sei que sempre posso contar com o codegolf SE para resolver meus problemas, então aqui está:
Crie um programa que aceite um número inteiro positivo que represente a reputação de uma pessoa. Vamos ignorar as recompensas e dizer que estas são as únicas maneiras de ganhar / perder rep no SE (tabela completa aqui ):
- Toda conta começa com 1 representante e não pode ficar abaixo dessa
- Sua pergunta foi aprovada = +5
- Sua resposta está com voto positivo = +10
- Sua pergunta foi rebaixada = -2
- Sua resposta foi reduzida = -2
- Você recusou uma resposta = -1
- Sua resposta é aceita = +15
- Você aceita uma resposta = +2
Seu programa deve descobrir quantas dessas ações ocorreram na conta desse usuário para obter o representante que ele possui. Ele deve descobrir o menor número de ações para chegar a esse nível de representante. Exemplos:
Entrada: 11 Saída: 1 resposta com voto positivo
Entrada: 93 Saída: 6 respostas aceitas, 1 resposta aceita
Nestes exemplos, quando digo 'pergunta votada', significa que a pergunta dessa pessoa foi votada. Quando digo "resposta com voto negativo", isso significa que eles votaram contra a resposta de outra pessoa.
Regras:
code-golf , então o código mais curto que pode fazer isso vence.
Respostas:
Golfscript,
162144 bytesComo funciona
A ideia geral é exatamente a mesma da minha resposta do Bash .
fonte
Bash,
247202192 bytesComo funciona
Após o comando sed funcionar, o seguinte script bash é executado:
Para obter a solução ideal (número mínimo de eventos para obter
n
reputação), basta calcular o número de respostas aceitas (a
) necessárias para obter uma reputação abaixo de 16 (1 resposta aceita) e manipular o resíduo da seguinte maneira:fonte
-2
e tem-1
votos negativos.Perl,
500263256208 bytesScript
rep.pl
:Uso
A entrada é esperada como número inteiro positivo, fornecida como argumento para o script. As diferentes ações são exibidas como linhas.
Testes
Ungolfed
Versão mais antiga
Editar% s
S
não mais necessária.E
não é mais necessária.fonte
R,
454421Agradeço a Dennis por sua resposta que me ajudou muito.
Versão ungolfed
fonte
JavaScript -
270237227206192 caracteresExatamente tantos caracteres quanto Bash (sim!), E supera Python e Perl :) Reduz a reputação até
14
depois do que leva e depois toma as outras ações necessárias, completamente em estilo de loop.EDIT 1: Convertido
\n
se,
convertido em umif
bloco para ternário, e melhor piso com nomes curtos.EDIT 2: Muito obrigado a Alconja, que me ajudou a reduzir 11 caracteres. Depois disso, fiz mais algumas correções para reduzir mais 2 caracteres.
Versão antiga:
Teste:
ENTRADA:
42
SAÍDA:
ENTRADA:
1337
SAÍDA:
Código Ungolfed:
fonte
function name(args){}
torna - sename=(args)=>{}
e, assim, economiza muitos bytes.q
uma vez, para que você possa incorporá-la. Além disso, você pode soltar ac
variável e fazer um emr%=15
vez der-=c*15
. Deve diminuir para 195 caracteres (r=prompt()-1,a="1answer ",v="vote,";s=(r/15|0)+"answer accept,",r%=15;if(r>9)s+=a+"+"+v,r-=10;if(r>2)s+="1question +"+v,r-=5;r>0?s+=a+"accepted,":0;if(r<-1)s+=a+"-"+v;r&1?s+=a+"-voted":0;alert(s)
).Linguagem do Game Maker, 276
fonte
C # - 391
Um pouco longo, e eu não testei isso completamente (muito). :)
Sem golfe - NOVO
Sem golfe - VELHO (409)
Teste:
fonte
Python -
213207Amaldiçoe-lhe nomes de função longos!
Exemplo: (ignore a nova linha à direita)
fonte
EOF
. Você pode me indicar um compilador que funcione (e que devo guardar para referência futura)?C ++, 276 (316 com inclusões)
Compila com o GCC, com avisos. Exemplo:
Sinta-se à vontade para portar isso para um idioma que não exija declarações de tipo e publicá-lo como seu.
fonte
JavaScript -
273256235Cálculo e produção combinados, e ainda jogou golfe, totalizando 287.
Editar: tirou algumas variáveis por mais algumas.
Removido Math.Floor para a abordagem | 0.
Movido alguma inicialização para o parâmetro prompt (), removidos alguns colchetes, alertando com o acréscimo da sequência final.
fonte
prompt
e não poderá codificar o valor.Python3, 188B
Uso:
python3 score.py <ret> 11 <ret>
onde esse script é salvo como score.py.Saída de amostra:
fonte