Houve uma discussão na TNB uma vez sobre a melhor escala de temperatura e concordamos em algo: Faça a média das quatro principais escalas de temperatura! Ou seja, Celsius , Kelvin , Fahrenheit e Rankine (Desculpe Réaumur).
Portanto, agora o problema é que a maioria das pessoas não usa esse sistema. Então, preciso de um programa para converter novamente a partir dessa média!
Desafio
Dada a média das representações Celsius, Fahrenheit, Kelvin e Rankine de uma certa temperatura, produz as representações padrão individuais, em qualquer ordem pré-especificada e consistente. Acontece que isso é possível, com base nos meus cálculos do quadro branco. A entrada será um único valor de ponto flutuante em qualquer faixa que seu idioma possa suportar e a saída será quatro valores de ponto flutuante em qualquer formato razoável. Você pode restringir a entrada para forçar a saída no intervalo do seu idioma, mas você deve ser capaz de dar suporte ao Absolute Zero (portanto, você deve ser capaz de lidar com números negativos).
Casos de teste
input -> (Celsius, Fahrenheit, Kelvin, Rankine)
100 -> (-70.86071428571424, -95.54928571428565, 202.28928571428574, 364.12071428571437)
20 -> (-128.0035714285714, -198.4064285714286, 145.14642857142857, 261.2635714285714)
-10 -> (-149.43214285714282, -236.97785714285715, 123.71785714285716, 222.69214285714287)
10000 -> (7000.567857142858, 12633.022142857144, 7273.717857142858, 13092.692142857144)
Esses valores foram gerados com o programa Python de Uriel , e eu verifiquei que eles estavam corretos.
13092....
Rankines em vez de #13091...
Respostas:
Pitão ,
403736 bytesExperimente online!
Especificações
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Matemática
fonte
JavaScript (ES6), 49 bytes
fonte
Python, 63 bytes
a
é a média, retorna uma tupla dos resultados conforme(celsius, fahrenheit, kelvin, rankine)
Matemática envolvida:
fonte
Dyalog APL,
4640 bytes6 bytes salvos graças a @ Adám
Experimente online!
Mônada anônima, usa o conjunto de caracteres Dyalog Classic.
fonte
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
e de byte único de codificação. O GNU APL possui dfns, mas usa UTF-8 e não⍨
, enquanto o APL2 (que era a página de código à qual você vinculou) não possui nem dfns nem⍨
.PHP, 62 bytes
Ordem Kelvin, Celsius, Rankine, Fahrenheit
Versão Online
PHP, 64 bytes
Ordem Kelvin, Rankine, Fahrenheit, Celsius
Versão Online
fonte
dc, 37
38bytes[Edit 1: Adicionado terceiro formulário, pelo comentário de Neil]
Estes [primeiros dois] têm o mesmo comprimento :( O primeiro produz Fahrenheit, Celsius, Kelvin, Rankine (de cima para baixo na pilha), e o segundo produz Fahrenheit, Rankine, Celsius, Kelvin.
Exemplo de saídas (
dc
usa _ para sinalizar números negativos na entrada): [das duas primeiras formas; veja a edição abaixo para o terceiro formulário.]Como funciona
9k
define aritmética de 9 lugares.?
lê a entrada do stdin, deixando-a no topo da pilha (TOS).183.205+
adiciona 183,205 ao TOS1.4/
divide o TOS por 1,4 ou 7/5, dando graus Kelvin.d
TOS duplicado. (Ou seja, duplica os graus Kelvin)1.8*r
calcula Rankine de Kelvin e depois inverte os dois primeiros da pilha.d273.15-
duplica TOS e subtrai 273,15 para obter graus Celsius.d1.8*32+
duplica o TOS, multiplica por 9/5 e adiciona 32, para Fahrenheit.f
imprime o conteúdo da pilha.Edição 1, continuação:
Este formulário, sugerido por Neil, começa computando Celsius em vez de Kelvin. Isso economiza uma rotação
r
ao computar Rankin a partir de Kelvin.Ele calcula Celsius = (Média - 199,205) * 5/7 via
199.205-1.4/
, adiciona 273,15 para obter Kelvin, multiplica por 1,8 para obter Rankin e subtrai 459,67 para obter Fahrenheit. Por exemplo:fonte
9k?199.205-1.4/d273.15+d1.8*d459.67-f
economiza 1 byte, alterando a ordem de saída.CJam , 38 bytes
Kelvins =
(5*input+916.025)/7
Saídas como
Experimente online!
fonte
Python 3, 67 bytes
Este código faz uma álgebra para obter a temperatura em Celsius, então eu a converto para as outras unidades de temperatura. As temperaturas são armazenadas na lista
t
.fonte
Sussurros v2 , 168 bytes
Experimente online!
Saídas como
Kelvin\nCelsius\nRankine\nFahrenheit
fonte