Hubo una discusión en TNB una vez sobre la mejor escala de temperatura, y acordamos algo: ¡Tome el promedio de las cuatro escalas de temperatura principales! Es decir, Celsius , Kelvin , Fahrenheit y Rankine (lo siento, Réaumur).
Entonces, ahora el problema es que la mayoría de las personas no usan este sistema. Por lo tanto, necesito un programa para volver a convertir de este promedio.
Reto
Dado el promedio de las representaciones Celsius, Fahrenheit, Kelvin y Rankine de una temperatura determinada, genera las representaciones estándar individuales, en cualquier orden predefinido y consistente. Resulta que esto es posible, basado en mis cálculos de pizarra. La entrada será un único valor de punto flotante en cualquier rango que pueda manejar su idioma, y la salida será cuatro valores de punto flotante en cualquier formato razonable. Puede restringir la entrada para forzar que la salida esté en el rango de su idioma, pero debe poder admitir hasta el Cero absoluto (por lo tanto, debe ser capaz de manejar números negativos).
Casos de prueba
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)
Estos valores se generaron con el programa Python de Uriel , y verifiqué que eran correctos.
13092....
Rankines en lugar de13091...
Respuestas:
Pyth ,
403736 bytesPruébalo en línea!
Especificaciones
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Mates
fuente
JavaScript (ES6), 49 bytes
fuente
Python, 63 bytes
a
es el promedio, devuelve una tupla de los resultados como(celsius, fahrenheit, kelvin, rankine)
Matemáticas involucradas:
fuente
Dyalog APL,
4640 bytes6 bytes guardados gracias a @ Adám
Pruébalo en línea!
Mónada anónima, utiliza el conjunto de caracteres Dyalog Classic.
fuente
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
y de codificación de un solo byte. GNU APL tiene dfns, pero usa UTF-8 y no tiene⍨
, mientras que APL2 (que era la página de códigos a la que enlazó) no tiene ni dfns ni⍨
.PHP, 62 bytes
Orden Kelvin, Celsius, Rankine, Fahrenheit
Versión en línea
PHP, 64 bytes
Orden Kelvin, Rankine, Fahrenheit, Celsius
Versión en línea
fuente
cc, 37
38bytes[Edición 1: tercera forma agregada, según el comentario de Neil]
Estos [primeros dos] tienen la misma longitud :( El primero produce Fahrenheit, Celsius, Kelvin, Rankine (de arriba a abajo en la pila), y el segundo produce Fahrenheit, Rankine, Celsius, Kelvin.
Ejemplo de salidas (
dc
usa _ para señalar números negativos en la entrada): [de las dos primeras formas; vea la edición a continuación para el tercer formulario.]Cómo funciona
9k
establece aritmética de 9 lugares.?
lee la entrada de stdin, dejándola en la parte superior de la pila (TOS).183.205+
agrega 183.205 a TOS1.4/
divide TOS por 1.4 o 7/5, dando grados Kelvin.d
duplicados TOS. (Es decir, duplica grados Kelvin)1.8*r
calcula Rankine a partir de Kelvin, luego invierte los dos primeros de la pila.d273.15-
duplica TOS y resta 273.15 para obtener grados Celsius.d1.8*32+
duplica TOS, multiplica por 9/5 y agrega 32, para Fahrenheit.f
Imprime el contenido de la pila.Edición 1, continuación:
Esta forma, sugerida por Neil, comienza calculando Celsius en lugar de Kelvin. Esto ahorra una rotación (an
r
) al calcular Rankin desde Kelvin.Calcula Celsius = (Promedio - 199.205) * 5/7 vía
199.205-1.4/
, agrega 273.15 para obtener Kelvin, se multiplica por 1.8 para obtener Rankin y resta 459.67 para obtener Fahrenheit. Por ejemplo:fuente
9k?199.205-1.4/d273.15+d1.8*d459.67-f
ahorra 1 byte cambiando el orden de salida.CJam , 38 bytes
Kelvins =
(5*input+916.025)/7
Salidas como
Pruébalo en línea!
fuente
Python 3, 67 bytes
Este código hace un poco de álgebra para obtener la temperatura en Celcius, luego la convierto a las otras unidades de temperatura. Las temperaturas se almacenan en la lista
t
.fuente
Whispers v2 , 168 bytes
Pruébalo en línea!
Salidas como
Kelvin\nCelsius\nRankine\nFahrenheit
fuente