A entrada é uma matriz de (pelo menos 3, no máximo 20) números inteiros diferentes. Cada número inteiro é maior que -1000 e menor que 1000.
Sua tarefa é reduzir os números "mapeando-os linearmente" de 0.0
para 1.0
. Isso significa que o menor número da matriz será mapeado para 0,0, o maior para 1,0.
Você obtém a matriz como um parâmetro (dentro de uma função) ou argumentos stdin / program (você pode escolher). Imprima o resultado no formato double1;double2;double3;...
. A saída deve ter a mesma ordem que a entrada .
Se desejar, você pode arredondar a saída para 2 dígitos após o ponto decimal. Deve haver pelo menos 1 dígito após o ponto decimal.
O uso de funções internas (funções que diminuem os números para você, como mathematicas Rescale
) não é permitido .
Exemplos:
Input Output
[5,-20,30] 0.5;0.0;1.0
[1,2,3,4,5] 0.0;0.25;0.5;0.75;1.0
[0,5,100,400] 0.0;0.01;0.25;1.0
(A última saída é arredondada, caso contrário, seria 0.0;0.0125;0.25;1.0
)
Respostas:
CJam, 18 bytes
Observe que o intérprete online representa erroneamente
0d
como em0
vez de0.0
.Exemplo de execução
Como funciona
fonte
JavaScript, ES6, 81 bytes
Obrigado a @ edc65 pelo
toFixed
truqueExecute-o no Firefox Console mais recente.
Isso cria uma função
f
que você pode chamar comofonte
If you want, you can round the output to 2 digits after the decimal point
essa é a maneira mais simples eu acho1
para,1.0
exceto o que eu fiz.Python 2,
72 68 63 5655Obviamente não é tão conciso quanto as outras respostas, mas de qualquer maneira:
Exemplo de execução:
Antigo (68 caracteres, escrito em Python 3):
fonte
m=min(x)
.CJam,
2423 bytesA entrada deve ser como:
Experimente online aqui Note-se que em linha impressões compilador
Double 0
como0
única. Execute o interpretador java que imprime corretamente.Como funciona:
fonte
0;0.5;1
vez de0.0;0.5;1.0
.0.0
.C # 92
Executando dentro do LinqPad
Teste no LinqPad
Resultado
fonte
APL (15)
(ou, sem trens, também 15 caracteres :)
Isso lê o argumento do teclado e imprime o resultado na tela.
Explicação:
⎕
: leia uma linha do teclado e avalie-a+-⌊/
: subtraia o item mais baixo da matriz de todos os itens da matriz+÷⌈/
: divida cada item na matriz pelo item mais alto da matriz2⍕
: formato com duas casas decimaisTeste:
fonte
Pyth , 18
Agora com a formatação correta!
Teste:
Explicação:
fonte
Oitava 25
Assume que a entrada está inserida
l
e, como é um shell interativo, o resultado é impresso automaticamente (isso é permitido?)fonte
input
obter informações do usuário e imitar STDIN. Você também pode escrever uma função. Além disso, isso imprime o resultado no formato correto?APL, 31 caracteres / 55 bytes
Código antigo sem dígitos após o ponto decimal:
Tome o mínimo de vetor, faça a diferença entre o máximo e o mínimo de vetor, subtraia o mínimo de cada elemento e divida pela diferença entre min e max.
Código editado para imprimir dois dígitos após o ponto decimal:
fonte
CJam,
3029 bytesEspera a entrada em STDIN como
[5 -20 30]
.Teste aqui. (Isso imprimirá inteiro
0
e1
sem ponto decimal, mas o interpretador Java imprime0.0
e1.0
.)Devido a um erro que não pode reduzir
{e>}*
a:e>
apesar de que deve ser possível de acordo com a especificação (o que permitiria poupar 4 bytes quando aplicado a ambos MIN e MAX).Explicação ligeiramente desatualizada: (será alterada mais tarde)
No final do programa, o conteúdo da pilha é impresso por padrão.
Tenho certeza de que existe uma maneira de salvar metade da pilha reorganizada, mas ainda não estou tão confortável com o CJam.
fonte
0;0.5;1
vez de0.0;0.5;1.0
.Xojo, 179 bytes
fonte
R, 60 bytes
A formatação consome muitos bytes devido
0
e,1
por padrão, é aparada para exibir nada além da parte inteira.fonte
Clojure 63
Não segue as regras, pois retorna frações em vez de duplas. Se isso não for aceitável, adicione 7 bytes
Ungolfed:
Chamadas assim:
Resultado:
(1/2 0 1)
fonte
Ruby, 49
Explicação:
fonte
05AB1E , 13 bytes (não concorrente)
Experimente online!
fonte
Q (31) FORMATO DE SAÍDA INADEQUADO
entrada
resultado
fonte
Perl - 60
fonte
Java 7, 149 bytes
Ungolfed & código de teste:
Experimente aqui.
Resultado:
fonte