Une discussion a eu lieu au TNB une fois sur la meilleure échelle de température, et nous nous sommes mis d'accord sur quelque chose: Prenez la moyenne des quatre échelles de température principales! C'est-à-dire, Celsius , Kelvin , Fahrenheit et Rankine (Désolé Réaumur).
Donc, maintenant le problème est que la plupart des gens n'utilisent pas ce système. Donc, j'ai besoin d'un programme pour revenir à cette moyenne!
Défi
Étant donné la moyenne des représentations Celsius, Fahrenheit, Kelvin et Rankine d'une certaine température, produire les représentations standard individuelles, dans n'importe quel ordre prédéfini et cohérent. Il s'avère que cela est possible, sur la base de mes calculs de tableau blanc. L'entrée sera une seule valeur à virgule flottante dans la plage que votre langue peut gérer, et la sortie sera quatre valeurs à virgule flottante dans n'importe quel format raisonnable. Vous pouvez restreindre l'entrée pour forcer la sortie à se situer dans la plage de votre langue, mais vous devez pouvoir prendre en charge jusqu'à Absolute Zero (ainsi, vous devez pouvoir gérer les nombres négatifs).
Cas de test
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)
Ces valeurs ont été générées avec le programme Python d' Uriel , et j'ai vérifié qu'elles étaient correctes.
13092....
Rankines au lieu de13091...
Réponses:
Pyth ,
403736 octetsEssayez-le en ligne!
Spécifications
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Math
la source
JavaScript (ES6), 49 octets
la source
Python, 63 octets
a
est la moyenne, renvoie un tuple des résultats comme(celsius, fahrenheit, kelvin, rankine)
Mathématiques impliquées:
la source
Dyalog APL,
4640 octets6 octets enregistrés grâce à @ Adám
Essayez-le en ligne!
Monade anonyme, utilise le jeu de caractères Dyalog Classic.
la source
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
et le codage sur un seul octet. GNU APL a des dfns, mais utilise UTF-8 et n'en a pas⍨
, tandis qu'APL2 (qui était la page de code à laquelle vous avez lié) n'a ni dfns ni⍨
.PHP, 62 octets
Commandez Kelvin, Celsius, Rankine, Fahrenheit
Version en ligne
PHP, 64 octets
Commandez Kelvin, Rankine, Fahrenheit, Celsius
Version en ligne
la source
dc, 37
38octets[Edit 1: Ajout du troisième formulaire, selon le commentaire de Neil]
Ces [deux premiers] sont tous les deux de la même longueur :( Le premier produit Fahrenheit, Celsius, Kelvin, Rankine (de haut en bas sur la pile), et le second produit Fahrenheit, Rankine, Celsius, Kelvin.
Exemples de sorties (
dc
utilise _ pour signaler des nombres négatifs en entrée): [à partir des deux premières formes; voir la modification ci-dessous pour le troisième formulaire.]Comment ça marche
9k
définit l'arithmétique à 9 positions.?
lit l'entrée de stdin, la laissant en haut de la pile (TOS).183.205+
ajoute 183,205 à TOS1.4/
divise TOS par 1,4 ou 7/5, donnant des degrés Kelvin.d
duplique TOS. (C'est-à-dire, double les degrés Kelvin)1.8*r
calcule Rankine à partir de Kelvin, puis inverse les deux premiers de la pile.d273.15-
duplique TOS et soustrait 273.15 pour obtenir des degrés Celsius.d1.8*32+
duplique TOS, multiplie par 9/5 et ajoute 32 pour Fahrenheit.f
imprime le contenu de la pile.Édition 1, suite:
Cette forme, suggérée par Neil, commence par calculer Celsius au lieu de Kelvin. Cela enregistre une rotation (an
r
) lors du calcul de Rankin à partir de Kelvin.Il calcule Celsius = (Moyenne - 199,205) * 5/7 via
199.205-1.4/
, ajoute 273,15 pour obtenir Kelvin, multiplie par 1,8 pour obtenir Rankin et soustrait 459,67 pour obtenir Fahrenheit. Par exemple:la source
9k?199.205-1.4/d273.15+d1.8*d459.67-f
enregistre 1 octet en modifiant l'ordre de sortie.CJam , 38 octets
Kelvins =
(5*input+916.025)/7
Sorties en tant que
Essayez-le en ligne!
la source
Python 3, 67 octets
Ce code fait de l'algèbre pour obtenir la température en Celcius, puis je la convertis dans les autres unités de température. Les températures sont enregistrées dans la liste
t
.la source
Whispers v2 , 168 octets
Essayez-le en ligne!
Sorties en tant que
Kelvin\nCelsius\nRankine\nFahrenheit
la source