Briefing
A dificuldade de uma pergunta do Code Golf pode ser calculada da seguinte forma:
Onde v
está o número de visualizações de uma pergunta
e a
é o número de respostas que uma pergunta tem
e ⌈ x ⌉ é o operador de teto .
Além disso:
Dificuldade atual da pergunta: ***
Tarefa
Escreva um programa que use dois números inteiros (v and a)
e produza a dificuldade asterisks (*)
.
A entrada pode estar na forma de uma matriz, uma sequência separada ou como argumentos de função separados
Dados de teste
Views Answers Difficulty Program Output
163 2 2 **
548 22 1 *
1452 24 1 *
1713 37 1 *
4162 32 2 **
3067 15 3 ***
22421 19 10 **********
Exemplo com pseudocódigo
v: 1713
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'
O código mais curto em bytes vence! Espaços à direita / à direita são permitidos.
/700 * 10
vez de/70
?Respostas:
JavaScript (ES6),
4039 bytesPorque
substring
fornece o comportamento de fixação e "teto" necessário. Edit: Normalmente, eu sou muito preguiçoso para me preocupar, mas porque ele recebeu 4 votos positivos, segui o conselho da @ MarsUltor para economizar 1 byte ao currying.fonte
v=>a=>
substr
? Eu sei que o segundo parâmetro faz a diferença, mas não tenho certeza sobre o primeiro ...slice
seria ainda mais curto.substr
eslice
interpretam um argumento negativo como contagem regressiva do final da string.Eu tenho vontade de fazer isso por um tempo ...
HTML + CSS
491487485 bytes-4 bytes graças a Conor O'Brien
-2 bytes graças ao lançamento de núcleos de hélio
A entrada é considerada como a largura e a altura da janela da página; largura sendo o número de Visualizações e altura sendo o número de Respostas.
Você pode experimentá-lo no seu navegador digitando
como um URL em uma nova guia.
fonte
}
s também.05AB1E, 11 bytes
Explicação
Experimente online
fonte
Javascript (ES6),
3736 bytesEconomizou 1 byte ao currying, graças a TheLethalCoder
Mostrar snippet de código
fonte
v=>a=>
em vez de(v,a)=>
?v=70, a=1
isso?Mathematica,
3835 bytesObrigado a @MartinEnder por 3 bytes
fonte
Clip
, que tem praticamente a mesma sintaxe que o Clamp do OP, mas então vi queStringRepeat
tem o terceiro argumento opcional para truncamento.Ceiling[]
.EXCEL, 29 bytes
Se você contar o Excel como uma representação do VBA Excel, poderá usar
onde
v
ea
são o nome das células de referência.fonte
CJam,
181514 bytesEconomizou 1 byte graças a Peter Taylor e 3 bytes graças a Adnan
Experimente online
fonte
C #,
684948 bytesEsta é a versão em C # desta excelente resposta de Neil.
Guardou outros 19 bytes graças a Neil
fonte
(int)System.Math.Floor(10-v/a/70)
ou apenas(int)(10-v/a/70)
.70d
sós, mas funciona melhor graçasd
lá.v=>a=>
Java 8, 57 bytes
Usa uma lambda para salvar bytes, executa o cálculo e as substrings para retornar a resposta.
Aqui está a minha turma para testá-lo.
Atualizar
fonte
java.lang.
pois é o pacote incluído padrão.System.out.println((int)2.99);
impressões2
e desde que eu tomar o valor pré-pavimentado de 10 e no chão então, é o mesmo que tomar o teto longe de 10.MATL , 12 bytes
Experimente online!
Explicação
O arredondamento e a fixação são feitos simultaneamente da seguinte forma: o número
x = v/a/70
é comparado com cada elemento da matriz[0 1 ... 9]
. Os números dessa matriz excedidosx
se tornarão asteriscos, e o restante serão espaços.fonte
Python2, 32 bytes
economizou 3 + 2 bytes e corrigido por um erro graças a Leaky Nun
semelhante à resposta de Neils. Usa o fato de que Python2 faz divisão inteira.
fonte
v=70
e #a=1
f=
pode ser removidov, a
pode se tornarv,a
Haskell, 35 bytes
[1..min(ceiling$v/a/70)10]
cria um intervalo de 1 à dificuldade calculada (uma lista vazia para a dificuldade 0).a>>b
repete a listab
length a
frequentemente.fonte
Pyke,
139 bytesExperimente aqui!
Explicação:
fonte
C #,
978987774241 bytesEconomizou 10 bytes graças a Adám
Economizou alguns bytes graças a Arnauld
fonte
(int)System.Math.Ceiling(v/a/70d)
por(v+69)/(70*a)
... Observe que, além disso, o v / a não pode ser negativo; portanto,c
pode ser muito simplificado, pois você não precisa verificar isso.Perl,
3532 bytesUse
-E
para ativarsay
e fornecer os argumentos na ordem inversa:Se argumentos em STDIN são permitidos, o seguinte é 29 bytes:
fonte
0|
vez de$-=
? (Pensando precedência do operador pode não estar certo ...)0|
faz um número negativo em um número enorme (levando a zero*
s),$-=
clips para 0 (levando a dez*
s), que é o que eu preciso aquiR,
68, 5052 bytesrep
coloca implicitamente um mínimo no número 0.Obrigado a @plannapus e @ Anastasiya-Romanova 秀 por detectar meu erro.
fonte
f=
1+
depoismin(
, a fim de obter os mesmos resultadosPitão ,
1713 bytes4 bytes de crédito a Luis Mendo por seu algoritmo .
Suíte de teste.
fonte
Javascript ES6, 48 bytes
fonte
C,
54,51,50, 49 bytesSupondo que
v
seja positivo ou zero ea
positivo, ax < min
caixa de fixação nunca é atendida, pois não há como o resultado da operação no teto ser negativo. Além disso, a matemática inteira com valores não negativos sempre produz o piso do resultado, então adicionamos1
para obter o teto.Esta solução requer uma
write
função, funciona no Linux pelo menos.Teste principal:
fonte
(v=v/a/70)
por(v/=a*70)
salva 1 byte.javascript:
8273 bytesfonte
console.log
, o retorno é bom. Você também pode salvar um byte emv=>a=>
vez de(v,a)=>
Dyalog APL , 15 bytes
'*'⍴⍨
o caractere repetiu isso muitas vezes:10⌊
min (10, ...⎕÷
entrada dividida por70×
setenta vezes a⎕
entradaTryAPL online!
fonte
'*'/⍨(⎕÷70×⎕)>⍳10
Água-viva , 18 bytes
Recebe entrada no formato
[a v]
. Experimente online!Explicação
%
é recíproco, assim%70
como 1/70.i
é entrada, como uma matriz de dois elementos./%
com entradasi
e%70
reduz a matrizi
por divisão invertida com valor inicial%70
. Em outras palavras, ele calcula v / (a / (1/70)) , que é igual a v / (70 * a) .M
assume o teto desse valor em
assume o máximo disso e10
.#'*
repete o*
caractere literal várias vezes.P
imprime o resultado sem aspas.fonte
MATLAB,
3433 bytesComo eu gosto muito desse desafio, aqui está um para o MATLAB (saídas à esquerda de espaços em branco):
Inspirado na resposta de @Luis Mendo. Agradecemos a @pajonk por salvar um byte.
fonte
[... '']
vez dechar(...)
. E você realmente precisa deceil
quando, no final, você está comparando com números inteiros?m4,
136135 bytesDefine uma macro
f
que levav
ea
, e se expande para a saída correta. A maior parte do programa é uma implementação de teto.fonte
dc,
110 108 10498 bytesIsso foi um delírio, já que fatiar não é uma coisa. Além disso, dc não manipula seqüências de caracteres. Eu realmente estava esperando por uma string que seria <5 horas de codificação. No lado positivo, finalmente comecei a escrever construções comuns, como para loops. Também tive que formular o arredondamento / teto, então obrigado por isso.
Chamado no bash:
Substituindo (acima) pelo código e /
v
ea
por suas respectivas contrapartes acima. As aspas simples são importantes (caso contrário, você obtém o histórico do bash).Explicado:
Provavelmente é mais capaz de jogar golfe, mas eu estava tentando finalizá-lo para evitar a otimização prematura.
fonte
[*]n
=>42P
. Cada instância de10
pode ser substituída porI
.[]p
=>IP
Haskell, 35 bytes
Esta solução é tão completamente diferente da resposta de Laikoni quanto para algo tão trivial. No entanto, a pontuação (por enquanto) é exatamente a mesma.
Isso produz dez estrelas, depois raspa algumas. Fácil de estender à dificuldade arbitrária com uma lista infinita.
Eu consegui raspar mais um byte. Mas, embora todos os casos de teste funcionem, isso não deve estar correto em geral.
fonte
TI-Basic, 39 bytes
fonte
PowerShell v2 +, 47 bytes
De certa forma, um porto da resposta JavaScript de @ Neil .
Pega entrada
$args
e as divide, depois divide por70
e adiciona.499
. Como o PowerShell faz o arredondamento do banqueiro , isso é efetivamenteceil
duas casas decimais de precisão. Se for necessária precisão adicional, prenda quantos9
s adicionais forem necessários.Junto com o
1..
, isso forma um índice de intervalo em uma sequência. A cadeia é'*'*11
, ie'***********'
. Isso resulta em uma matriz de caracteres, para que-join
juntos de volta em uma string. Essa cadeia é deixada no pipeline e a saída é implícita. Como a resposta de Neil, isso efetivamente "prende" a saída entre 1 e 10 estrelas.Suíte de teste
fonte
Python 3,
6968 bytesEu não queria copiar a resposta do Python 2, então a minha é um pouco mais longa.
Economizou 1 byte graças ao Program man
fonte
from math import *
salvará alguns bytes #import*
sem espaço.Na verdade, 14 bytes
Experimente online!
Aproveita o fato de que 0 visualizações e 0 respostas são impossíveis e, portanto,
ceil(v/a) > 0
,.Explicação:
fonte