W TNB odbyła się dyskusja na temat najlepszej skali temperatur i uzgodniliśmy coś: weźcie średnią ze wszystkich czterech głównych skal temperatur! To znaczy, Celsjusz , Kelvin , Fahrenheit i Rankine (Przepraszamy Réaumur).
Problem polega na tym, że większość ludzi nie korzysta z tego systemu. Potrzebuję więc programu do konwersji z tej średniej!
Wyzwanie
Biorąc pod uwagę średnią reprezentację Celsjusza, Fahrenheita, Kelvina i Rankine'a dla określonej temperatury, wyprowadzaj poszczególne standardowe reprezentacje, w dowolnej z góry określonej i spójnej kolejności. Okazuje się, że jest to możliwe na podstawie moich obliczeń na tablicy. Dane wejściowe będą pojedynczymi wartościami zmiennoprzecinkowymi w dowolnym zakresie obsługiwanym przez Twój język, a dane wyjściowe będą czterema wartościami zmiennoprzecinkowymi w dowolnym rozsądnym formacie. Możesz ograniczyć wprowadzanie, aby wymusić, aby wynik był w zakresie twojego języka, ale musisz być w stanie obsługiwać do Absolute Zero (dlatego musisz być w stanie obsługiwać liczby ujemne).
Przypadki testowe
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)
Wartości te zostały wygenerowane za pomocą programu Uriel w języku Python , a ja zweryfikowałem, że są poprawne.
13092....
Rankines zamiast13091...
Odpowiedzi:
Pyth ,
403736 bajtówWypróbuj online!
Okular
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Matematyka
źródło
JavaScript (ES6), 49 bajtów
źródło
Python, 63 bajty
a
jest średnią, zwraca krotkę wyników jako(celsius, fahrenheit, kelvin, rankine)
Wymagana matematyka:
źródło
Dyalog APL,
4640 bajtów6 bajtów zapisanych dzięki @ Adám
Wypróbuj online!
Anonimowa monada, używa zestawu znaków Dyalog Classic.
źródło
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
sposób kodowania jednego bajtu. GNU APL ma dfns, ale używa UTF-8 i nie ma go⍨
, podczas gdy APL2 (który był stroną kodową, do której prowadzisz link) nie ma ani dfns, ani⍨
.PHP, 62 bajty
Zamów Kelvina, Celsjusza, Rankine'a, Fahrenheita
Wersja online
PHP, 64 bajty
Zamów Kelvina, Rankine'a, Fahrenheita, Celsjusza
Wersja online
źródło
dc, 37
38bajtów[Edycja 1: Dodano trzeci formularz, według komentarza Neila]
Te [pierwsze dwa] mają tę samą długość :( Pierwszy produkuje Fahrenheita, Celsjusza, Kelvina, Rankine'a (od góry do dołu na stosie), a drugi produkuje Fahrenheita, Rankine'a, Celsjusza, Kelvina.
Przykładowe dane wyjściowe (
dc
używa _ do sygnalizowania liczb ujemnych na wejściu): [z pierwszych dwóch form; zobacz edycję poniżej dla trzeciego formularza.]Jak to działa
9k
ustawia arytmetykę na 9 miejsc.?
odczytuje dane wejściowe ze standardowego wejścia, pozostawiając je na górze stosu (TOS).183.205+
dodaje 183,205 do TOS1.4/
dzieli TOS przez 1,4 lub 7/5, dając stopnie Kelvina.d
powiela TOS. (To znaczy, powiela stopnie Kelvina)1.8*r
oblicza Rankine'a na podstawie Kelvina, a następnie odwraca górne dwa stosu.d273.15-
powiela TOS i odejmuje 273,15, aby uzyskać stopnie Celsjusza.d1.8*32+
powiela TOS, mnoży przez 9/5 i dodaje 32 dla Fahrenheita.f
drukuje zawartość stosu.Edycja 1, ciąg dalszy:
Ta forma, sugerowana przez Neila, zaczyna się od obliczenia Celsjusza zamiast Kelvina. To oszczędza rotate (an
r
) podczas obliczania Rankin z Kelvina.Oblicza Celsjusza = (Średnia - 199,205) * 5/7 przez
199.205-1.4/
, dodaje 273,15, aby uzyskać Kelvina, mnoży przez 1,8, aby uzyskać Rankina, i odejmuje 459,67, aby uzyskać Fahrenheita. Na przykład:źródło
9k?199.205-1.4/d273.15+d1.8*d459.67-f
oszczędza 1 bajt, zmieniając kolejność wyjściową.CJam , 38 bajtów
Kelwiny =
(5*input+916.025)/7
Wyjścia jak
Wypróbuj online!
źródło
Python 3, 67 bajtów
Ten kod wykonuje algebrę, aby uzyskać temperaturę w stopniach Celsjusza, a następnie przekonwertowałem ją na inne jednostki temperatury. Temperatury są przechowywane na liście
t
.źródło
Whispers v2 , 168 bajtów
Wypróbuj online!
Wyjścia jak
Kelvin\nCelsius\nRankine\nFahrenheit
źródło