Ada diskusi yang terjadi di TNB sekali tentang skala suhu terbaik, dan kami sepakat sesuatu: Ambil rata-rata dari keempat skala suhu utama! Yaitu, Celsius , Kelvin , Fahrenheit , dan Rankine (Maaf Réaumur).
Jadi, sekarang masalahnya adalah, kebanyakan orang tidak menggunakan sistem ini. Jadi, saya butuh program untuk mengkonversi kembali dari rata-rata ini!
Tantangan
Mengingat rata-rata representasi Celsius, Fahrenheit, Kelvin, dan Rankine pada suhu tertentu, mengeluarkan representasi standar individu, dalam urutan yang telah ditentukan sebelumnya dan konsisten. Ternyata ini mungkin, berdasarkan perhitungan papan tulis saya. Input akan menjadi nilai titik-mengambang tunggal dalam rentang apa pun yang bahasa Anda bisa tangani, dan output akan menjadi empat nilai titik-mengambang dalam format apa pun yang masuk akal. Anda dapat membatasi input untuk memaksa output berada dalam kisaran bahasa Anda, tetapi Anda harus dapat mendukung hingga Absolute Zero (dengan demikian, Anda harus dapat menangani angka negatif).
Uji Kasus
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)
Nilai-nilai ini dihasilkan dengan program Python Uriel , dan saya memverifikasi bahwa mereka benar.
13092....
Rankines alih-alih13091...
Jawaban:
Pyth ,
403736 byteCobalah online!
Spesifikasi
100
[Kelvin, Celcius]\n[Rankine, Fahrenheit]
Matematika
sumber
JavaScript (ES6), 49 byte
sumber
Python, 63 byte
a
adalah rata-rata, mengembalikan tuple hasil sebagai(celsius, fahrenheit, kelvin, rankine)
Matematika yang terlibat:
sumber
Dyalog APL,
4640 byte6 byte disimpan berkat @ Adám
Cobalah online!
Monad anonim, menggunakan set karakter Dyalog Classic.
sumber
273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢
{dfns}
,⍨
dan single-byte encoding. GNU APL memiliki dfns, tetapi menggunakan UTF-8 dan tidak⍨
, sedangkan APL2 (yang merupakan codepage yang Anda tautkan) tidak memiliki dfns juga⍨
.PHP, 62 Bytes
Pesan Kelvin, Celsius, Rankine, Fahrenheit
Versi Online
PHP, 64 Bytes
Pesan Kelvin, Rankine, Fahrenheit, Celsius
Versi Online
sumber
dc, 37
38byte[Sunting 1: Menambahkan formulir ketiga, per komentar Neil]
Kedua [yang pertama] ini memiliki panjang yang sama :( Yang pertama menghasilkan Fahrenheit, Celcius, Kelvin, Rankine (atas ke bawah pada tumpukan), dan yang kedua menghasilkan Fahrenheit, Rankine, Celcius, Kelvin.
Contoh output (
dc
menggunakan _ untuk memberi sinyal angka negatif pada input): [dari dua bentuk pertama; lihat edit di bawah untuk formulir ketiga.]Bagaimana itu bekerja
9k
menetapkan aritmatika 9-tempat.?
membaca input dari stdin, meninggalkannya di atas tumpukan (TOS).183.205+
menambahkan 183,205 ke TOS1.4/
membagi TOS dengan 1,4 atau 7/5, memberikan derajat Kelvin.d
duplikat TOS. (Yaitu, duplikat derajat Kelvin)1.8*r
menghitung Rankine dari Kelvin, lalu membalikkan dua tumpukan teratas.d273.15-
duplikat TOS dan kurangi 273,15 untuk mendapatkan derajat Celcius.d1.8*32+
duplikat TOS, kalikan dengan 9/5, dan tambahkan 32, untuk Fahrenheit.f
mencetak isi tumpukan.Sunting 1, dilanjutkan:
Bentuk ini, disarankan oleh Neil, dimulai dengan menghitung Celcius alih-alih Kelvin. Ini menghemat rotasi (an
r
) saat menghitung Rankin dari Kelvin.Ini menghitung Celsius = (Rata-rata - 199.205) * 5/7 via
199.205-1.4/
, menambah 273,15 untuk mendapatkan Kelvin, mengalikan 1,8 untuk mendapatkan Rankin, dan kurangi 459,67 untuk mendapatkan Fahrenheit. Sebagai contoh:sumber
9k?199.205-1.4/d273.15+d1.8*d459.67-f
menghemat 1 byte dengan mengubah urutan output.CJam , 38 byte
Kelvin =
(5*input+916.025)/7
Output sebagai
Cobalah online!
sumber
Python 3, 67 byte
Kode ini melakukan beberapa aljabar untuk mendapatkan suhu dalam Celcius, kemudian saya mengubahnya ke unit suhu lainnya. Temperatur disimpan dalam daftar
t
.sumber
Bisikan v2 , 168 byte
Cobalah online!
Output sebagai
Kelvin\nCelsius\nRankine\nFahrenheit
sumber