평균 기온!


21

최고 온도 스케일에 대해 TNB에서 한 번 토론이 진행되었으며, 우리는 무언가에 동의했습니다. 즉, Celsius , Kelvin , FahrenheitRankine (죄송합니다).

이제 문제는 대부분의 사람들이이 시스템을 사용하지 않는다는 것입니다. 따라서이 평균에서 다시 변환 할 프로그램이 필요합니다!

도전

특정 온도의 섭씨, 화씨, 켈빈 및 랭킨 표현의 평균을 고려하면 미리 정의되고 일관된 순서로 개별 표준 표현을 출력합니다. 내 화이트 보드 계산에 따라 가능하다는 것이 밝혀졌습니다. 입력은 언어가 처리 할 수있는 모든 범위의 단일 부동 소수점 값이며 출력은 합리적인 형식의 4 개의 부동 소수점 값입니다. 출력이 언어 범위 내에 있도록 입력을 제한 할 수 있지만 절대 0까지 지원할 수 있어야합니다 (따라서 음수를 처리 할 수 ​​있어야 함).

테스트 사례

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)

이 값은 Uriel의 Python 프로그램 으로 생성 되었으며 올바른지 확인했습니다.



나는 처음 세 가지 테스트 사례가 어쨌든 엉망이라고 생각합니다. 화씨와 켈빈 숫자는 같은 소수 부분을 가지며 그 반대도 마찬가지입니다.
ETHproductions

또한 마지막 테스트 케이스의 경우 13092....대신 대신 Rankines를받습니다.13091...
Business Cat

7
-11.99 켈빈?!
Jonathan Allan

2
가설에서 음의 켈빈 온도에는 본질적으로 아무런 문제가 없습니다 . 그들은 단지 일정한 온도보다 무한히 뜨겁습니다 . (참고 : 저는 물리학자가 아닙니다. 나는 하루 종일 유튜브 비디오를보고 인터넷에서 하나 인 척합니다).
Draco18s

답변:


4

Pyth , 40 37 36 바이트

-BJ + c36641280c * 5Q7 273.15-B * J1.8 459.67 
-BJc + 916.025 * 5Q7 273.15-B * J1.8 459.67
-BJc + 916.025 * 5Q7 273.15-B * 1.8J459.67

온라인으로 사용해보십시오!

명세서

  • 입력: 100
  • 산출: [Kelvin, Celcius]\n[Rankine, Fahrenheit]

수학

kelvin = (average*5+916.025)/7

10

자바 스크립트 (ES6), 49 바이트

f=
a=>[a=(a-199.205)/1.4,a+=273.15,a*=1.8,a-=459.67]
<input oninput=f(this.value).map(function(x,i){o.rows[i].cells[1].textContent=x})>
<table id=o>
<tr><th>Celsius:</th><td></td></tr>
<tr><th>Kelvin:</th><td></td></tr>
<tr><th>Rankine:</th><td></td></tr>
<tr><th>Fahrenheit:</th><td></td></tr>
</table>


당신 : 당신의 코드에서 섭씨 잘못된 철자
numbermaniac

2
@numbermaniac Bah, 그리고 모든 문제 후 나는 화씨의 철자를 다시 확인하러 갔다.
Neil

10

파이썬, 63 바이트

def f(a):x=(a+183.205)*5/7;m=x*9/5;return x-273.15,m-459.67,x,m

a 평균이며 결과의 튜플을 다음과 같이 반환합니다. (celsius, fahrenheit, kelvin, rankine)

관련된 수학 :

kelvin = x
celsius = x - 273.15
fahrenheit = x * 9/5 - 459.67
rankine = x * 9/5

a = (x + x - 273.15 + x * 9/5 - 459.67 + x * 9/5) / 4 = x * 7/5 - 183.205
x = (a + 183.205) * 5/7

3

Dyalog APL, 46 40 바이트

@ Adám 덕분에 6 바이트 절약

273.15 459.67 0 0-⍨4⍴63 35÷⍨45×183.205+⊢

온라인으로 사용해보십시오!

익명 모나드는 Dyalog Classic 문자 세트를 사용합니다.


아니요, Dyalog Classic 문자 세트를 사용 합니다. Dyalog APL에서만 작동하기 때문입니다.
Adám


@ Adám 감사합니다! 요청 만해도 다른 APL에서 작동하지 않는 이유는 무엇입니까?
Uriel

단 Dyalog 모두 가지기 때문에 {dfns}, 그리고 단일 바이트 인코딩. GNU APL에는 dfn이 있지만 UTF-8을 사용하고 없습니다 . 반면에 APL2 (연결된 코드 페이지)에는 dfns도 없습니다 .
Adám

이제 묵시적 기차를 사용하고 있으므로 Dyalog APL (및 J)에 고유하므로 Dyalog APL입니다.
Adám


2

dc, 37 38 바이트

[편집 1 : Neil의 의견에 따라 세 번째 양식 추가]

[처음 두 개] 는 모두 같은 길이입니다. (첫 번째 것은 화씨, 섭씨, 켈빈, 랭킨 (스택에서 맨 아래까지)를 생성하고 두 번째는 화씨, 랭킨, 섭씨, 켈빈을 생성합니다.

9k?183.205+1.4/d1.8*rd273.15-d1.8*32+f
9k?183.205+1.4/d273.15-rd1.8*d459.67-f
9k?199.205-1.4/d273.15+d1.8*d459.67-f

출력 예 ( dc_를 사용하여 입력시 음수를 표시) : [처음 두 형식에서; 세 번째 양식은 아래 편집을 참조하십시오.]

20
-198.406428572
-128.003571429
145.146428571
261.263571427

20
-198.406428573
261.263571427
145.146428571
-128.003571429

_10
-236.977857144
-149.432142858
123.717857142
222.692142855

_10
-236.977857145
222.692142855
123.717857142
-149.432142858

작동 원리

9k?183.205+1.4/d1.8*rd273.15-d1.8*32+f

9k9 자리 산술을 설정합니다.
?stdin에서 입력을 읽고 스택 상단 (TOS)에 그대로 둡니다.
183.205+TOS에 183.205를 더하여
1.4/TOS를 1.4 또는 7/5로 나누고 켈빈 온도를 제공합니다.
dTOS를 복제합니다. (즉, 켈빈 도로 복제)
1.8*r켈빈에서 랭킨을 계산 한 다음 스택의 상위 2 개를 반대로합니다.
d273.15-TOS를 복제하고 273.15를 빼서 섭씨 온도를 얻습니다.
d1.8*32+화씨에 대해 TOS를 복제하고 9/5를 곱한 다음 32를 더합니다.
f스택의 내용을 인쇄합니다.


편집 1, 계속 :

9k?199.205-1.4/d273.15+d1.8*d459.67-f

Neil이 제안한이 양식은 Kelvin 대신 Celsius를 계산하는 것으로 시작합니다. r켈빈에서 Rankin을 계산할 때 회전 ( )을 저장합니다 .

를 통해 Celsius = (Average-199.205) * 5 / 7을 계산 199.205-1.4/하고 273.15를 더해 켈빈을 얻고 1.8을 곱하여 Rankin을 얻고 459.67을 빼서 화씨를 얻습니다. 예를 들면 다음과 같습니다.

20
-198.406428571
261.263571429
145.146428572
-128.003571428

9k?199.205-1.4/d273.15+d1.8*d459.67-f출력 순서를 변경하여 1 바이트를 저장합니다.
Neil

@ 닐, 감사합니다! 답변으로 수정되었습니다.
James Waldby-jwpat7


0

파이썬 3, 67 바이트

c=(5*float(input())-996.025)/7;t=[c,c*1.8+32,c+273.15,c*1.8+491.67]

이 코드는 섭씨 온도를 얻기 위해 대수를 수행 한 다음 다른 온도 단위로 변환합니다. 온도가 목록에 저장됩니다 t.


0

s 속말 v2 , 168 바이트

> Input
> 5
> 7
> 183.205
>> 2÷3
>> 1+4
>> 6⋅5
>> 7-11
>> 7⋅12
>> 9-13
> 273.15
> 1.8
> 459.67
>> Output 7
>> Output 8
>> Output 9
>> Output 10
>> Then 14 15 16 17

온라인으로 사용해보십시오!

다음과 같이 출력 Kelvin\nCelsius\nRankine\nFahrenheit

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.