In TNB wurde einmal über die beste Temperaturskala diskutiert, und wir waren uns einig: Nehmen Sie den Durchschnitt aller vier Haupttemperaturskalen! Das heißt, Celsius , Kelvin , Fahrenheit und Rankine (Sorry Réaumur).
Jetzt ist das Problem, dass die meisten Leute dieses System nicht benutzen. Also, ich brauche ein Programm, um von diesem Durchschnitt zurück zu konvertieren!
Herausforderung
Ausgehend vom Durchschnitt der Celsius-, Fahrenheit-, Kelvin- und Rankine-Darstellungen einer bestimmten Temperatur werden die einzelnen Standarddarstellungen in einer vorgegebenen und konsistenten Reihenfolge ausgegeben. Anhand meiner Whiteboard-Berechnungen hat sich herausgestellt, dass dies möglich ist. Die Eingabe ist ein einzelner Gleitkommawert in dem Bereich, den Ihre Sprache verarbeiten kann, und die Ausgabe erfolgt in vier Gleitkommawerten in einem angemessenen Format. Sie können die Eingabe einschränken, um zu erzwingen, dass die Ausgabe im Bereich Ihrer Sprache liegt, aber Sie müssen in der Lage sein, bis zum absoluten Nullpunkt zu unterstützen (daher müssen Sie in der Lage sein, negative Zahlen zu verarbeiten).
Testfälle
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)
Diese Werte wurden mit Uriels Python-Programm generiert und ich habe überprüft, ob sie korrekt sind.
13092....
Rankines statt13091...
Antworten:
Pyth ,
403736 BytesProbieren Sie es online!
Technische Daten
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Mathematik
quelle
JavaScript (ES6), 49 Byte
quelle
Python, 63 Bytes
a
ist der Durchschnitt, liefert ein Tupel der Ergebnisse als(celsius, fahrenheit, kelvin, rankine)
Mathematik beteiligt:
quelle
Dyalog APL,
4640 Bytes6 Bytes gespart dank @ Adám
Probieren Sie es online!
Anonyme Monade, verwendet den Dyalog Classic-Zeichensatz.
quelle
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
und Single-Byte - Codierung. GNU APL hat dfns, verwendet aber UTF-8 und hat no⍨
, während APL2 (die Codepage, mit der Sie verlinkt haben) weder dfns noch hat⍨
.PHP, 62 Bytes
Ordnung Kelvin, Celsius, Rankine, Fahrenheit
Online Version
PHP, 64 Bytes
Ordnung Kelvin, Rankine, Fahrenheit, Celsius
Online Version
quelle
DC, 37
38Bytes[Edit 1: Dritte Form hinzugefügt, laut Neils Kommentar]
Diese [ersten beiden] sind beide gleich lang :( Der erste Wert gibt Fahrenheit, Celsius, Kelvin, Rankine (von oben nach unten auf dem Stapel) und der zweite Wert gibt Fahrenheit, Rankine, Celsius, Kelvin an.
Beispielausgaben (
dc
verwendet _, um negative Zahlen bei der Eingabe zu signalisieren): [aus den ersten beiden Formen; siehe Bearbeitung unten für die dritte Form.]Wie es funktioniert
9k
Setzt eine 9-stellige Arithmetik.?
Liest die Eingabe von stdin und belässt sie oben auf dem Stack (TOS).183.205+
addiert 183,205 zu TOS1.4/
dividiert TOS durch 1,4 oder 7/5, was Grad Kelvin ergibt.d
dupliziert TOS. (Das heißt, Duplikate von Kelvin)1.8*r
berechnet Rankine aus Kelvin und kehrt dann die ersten beiden Stapel um.d273.15-
dupliziert die TOS und subtrahiert 273,15, um Grad Celsius zu erhalten.d1.8*32+
dupliziert die TOS, multipliziert mit 9/5 und addiert 32 für Fahrenheit.f
druckt den Inhalt des Stapels.Edit 1, Fortsetzung:
Diese von Neil vorgeschlagene Form beginnt mit der Berechnung von Celsius anstelle von Kelvin. Dies erspart eine Drehung (an
r
), wenn Rankin aus Kelvin berechnet wird.Es berechnet Celsius = (Durchschnitt - 199,205) * 5/7 über
199.205-1.4/
, addiert 273,15, um Kelvin zu erhalten, multipliziert mit 1,8, um Rankin zu erhalten, und subtrahiert 459,67, um Fahrenheit zu erhalten. Beispielsweise:quelle
9k?199.205-1.4/d273.15+d1.8*d459.67-f
Spart 1 Byte durch Ändern der Ausgabereihenfolge.CJam , 38 Bytes
Kelvin =
(5*input+916.025)/7
Ausgänge als
Probieren Sie es online!
quelle
Python 3, 67 Bytes
Dieser Code führt eine Algebra aus, um die Temperatur in Celcius zu ermitteln, und konvertiert sie dann in die anderen Temperatureinheiten. Die Temperaturen werden in der Liste gespeichert
t
.quelle
Flüstern v2 , 168 Bytes
Probieren Sie es online!
Ausgänge als
Kelvin\nCelsius\nRankine\nFahrenheit
quelle