참조 각도 찾기


17

이것은 매우 간단한 질문입니다. 에 따르면 내가 찾은이 임의의 웹 사이트 - 웹 아카이브 , 참조 각도는 the acute angle formed by the terminal side of the given angle and the x-axis.당신이 찾을 수있는 프로그램을 작성해야합니다.

대수 2의 내용이 기억 나지 않습니다. 이것이 무엇을 의미합니까?

각도는 일반적으로 표준 형식 으로 주어지며 각도의 한쪽을 배치하고 다른 쪽을 반 시계 방향으로 측정하여 측정합니다.

표준 양식

이것은 귀하의 입력이 될 것입니다. 출력은 이것의 기준 각도가됩니다. 이것을 기본적으로 터미널 측에서 x 축까지의 최소 거리라고 생각할 수 있습니다. 거리가 아닌 각도입니다. 여기 몇 가지 예가 있어요.

쿼드 2 심판 쿼드 1 심판

쿼드 3 심판 쿼드 4 심판

설명

  • 입력 및 제출에 대한 모든 기본값.
  • 각도는 도 단위 입니다.
  • 음의 각도, 정수가 아닌 각도 및 360도 이상의 각도 허용됩니다.
  • 형식으로 출력합니다 60 deg.
  • 이것은 이므로 바이트 단위의 가장 짧은 코드가 이깁니다!

또 다른 유용한 링크 .

테스트 사례

70      ->  70 deg
135     ->  45 deg
210     ->  30 deg
-60     ->  60 deg
91      ->  89 deg
610     ->  70 deg
-1000   ->  80 deg

1
90을 입력하면 어떻게됩니까?
lirtosiast

2
@ThomasKwa 어느 방향에서든 90입니다.
Maltysen

1
짧은 해결책은 abs(arcsin(sin(input)))+" deg"어느 언어가 이길 지 모르겠지만 (도 및 문자열 연산을 지원해야 함)입니다.
lirtosiast

입력은 항상 정수입니까?
lirtosiast

6
정수가 아닌 각도가 허용되므로 테스트 케이스에 각도를 포함시켜야합니다.
Dennis

답변:




5

파이썬 2, 34 바이트

lambda x:`90-abs(x%180-90)`+' deg'

"%d deg"필요한 괄호로 인해 문자열 형식을 사용하는 것이 더 길어집니다.



4

dc, 25

90?90+d*v180%-d*vn[ deg]p

참고 dc_대신 -ve 부호로 사용 -합니다.

테스트 출력 :

$ for test in 70 135 210 _60 91 610 _1000; do dc -e'90?90+d*v180%-d*vn[ deg]p' <<< $test ; done
70 deg
45 deg
30 deg
60 deg
89 deg
70 deg
80 deg
$

3

매스 매 티카, 22 31

ToString@Abs@Mod[#,180,-90]deg&

1
@ LegionMammal978 난 그냥 곱 그걸로 경우 deg, 0 deg될 것입니다 0.
alephalpha

1
출력 유형에 신경 쓰지 않기 때문에 다음과 같이 2 바이트를 절약 할 수 있습니다.Row@{Abs@Mod[#,180,-90],deg}&
LegionMammal978

3

파이썬 2, 35

lambda x:`min(x%180,-x%180)`+' deg'

각도가 작고 음의 모듈로 180 . 효과적으로 각도를 0에서 180까지의 범위로 변환하고 끝점에 가까워 질 때까지 거리를 유지합니다. 로 -x%180그룹화하십시오 (-x)%180.

Python 3의 문자열 형식화와 동일한 길이 :

lambda x:'%d deg'%min(x%180,-x%180)

3

피스 25 30 바이트

삼각 함수를 사용하여 고통스럽지 않은 독창적 인 솔루션. 퍼머 링크

+.R.t.a.t.t.tQ7Z3 6?%Q1Q0" deg

모든 제안을 환영합니다.


1
.t전화를 +.R.t.a.tF[Q7Z3)6?%Q1Q0" deg
받아서

산뜻한. 90.5 => 90.0 deg그러나 부동 소수점 입력에서 작동하지 않는 것으로 나타났습니다 .
Winny

당신이하는 때문되지 중 하나입니다 : pyth.herokuapp.com/...
Maltysen

재미있는 캐치. 입력 -60.5 => 60.5 deg과 함께 60.5 => 60.0 deg. Pyth 문제 -pyth / macros.py를 사용한 예제
Winny

1

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

Sp3000의 답변 과 비슷 하지만 JavaScript의 동작으로 인해 모듈러스가 상당히 길다 .

f=x=>90-Math.abs((x%180+180)%180-90)+' deg'

데모

브라우저 호환성을 위해 ES5에서 코드가 다시 작성되었습니다.

function f(x){return 90-Math.abs((x%180+180)%180-90)+' deg'}

// Snippet stuff
console.log = function(x){document.body.innerHTML += x + '<br>'};
[70,135,210,-60,91,610,-1000].map(function(v){console.log(f(v))});

CoffeeScript, 45 바이트

f=(x)->90-Math.abs((x%180+180)%180-90)+' deg'

5
나는 그것이 수십 년 후에도 우리가 %현명하게 구현할 언어가 거의 없다는 사실을 책임지는 PDP 하드웨어 엔지니어에 의한 디자인 결정이라고 생각합니다 .
피터 테일러

첫 번째 180 (t=180)을 바꾸고 다음 180을 t로 바꾸면 아마도 몇 바이트가 절약 될 것입니다.
Downgoat

@ vihan1086 그것은 동일합니다
rink.attendant.6


1

MATLAB, 44

익명 함수 사용하기 :

f=@(x)[num2str(min(mod([x -x],180))) ' deg']

예:

>> f=@(x)[num2str(min(mod([x -x],180))) ' deg']
f = 
    @(x)[num2str(min(mod([x,-x],180))),' deg']

>> f(70)
ans =
70 deg

>> f(210)
ans =
30 deg

>> f(-1000)
ans =
80 deg

4
이것은 끝에 'deg'를 추가하지 않습니다. (공감하지 않았습니다.)
Legendre

@Legendre 죄송합니다. 감사! 수정
Luis Mendo 2



-1

PHP, 44 바이트

하나의 명령 행 매개 변수를 사용합니다. 다시 PHP는 JavaScript와 같은 문제로 어려움을 겪습니다 .

<?=90-abs(($argv[1]%180+180)%180-90)+' deg';

표준 솔루션을 사용하려면 53 바이트가 필요합니다 (도 및 라디안 변환에는 많은 문자가 필요함).

<?=rad2deg(abs(asin(sin(deg2rad($argv[1])))))+' deg';

1
PHP .는 연결에 사용하지 않습니까?
Downgoat

@ vihan1086 예, PHP는를 사용합니다 .. 고정 될 때까지 하향 조정
Ismael Miguel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.