조건 p (i)로서 길이가 인 모든 정수 i = k, k + 1, ..에 대한 f (i)의 합이 유지됩니다.이 수학 표현식을 프로그래밍 방식으로 어떻게 기록합니까?
(sigma ((v sine-coeff) (w E-factor) (x solar-coeff) (y lunar-coeff) (z moon-coeff)) (* v (expt cap-E w) (sin-degrees (+ (* x solar-anomaly) (* y lunar-anomaly) (* z moon-argument)))))))
시그마는 다음과 같습니다 :
(defmacro sigma (list body) ;; TYPE (list-of-pairs (list-of-reals->real)) ;; TYPE -> real ;; $list$ is of the form ((i1 l1)..(in ln)). ;; Sum of $body$ for indices i1..in ;; running simultaneously thru lists l1..ln. `(apply '+ (mapcar (function (lambda ,(mapcar 'car list) ,body)) ,@(mapcar 'cadr list))))
(전체 소스 코드에 대한 다음과 같은 일반적인 LISP 코드를 기반으로
for (i = 0; i <= V_COUNT; i++) { sum += sine_coeff[i] * pow(E, e_factor[i]) * sin( (solar_coeff[i] * solar_anomaly) + (lunar_coeff[i] * lunar_anomaly) + (moon_coeff[i] * moon_argument) ); }
:
나는 갈거야 , Calendrical calculations source code
를 참조하십시오. 답장을 보내 주셔서 감사합니다. 코드 예제를 살펴보면, 필자는 프로그래밍 측면에서 저자가 실제로 특정 값 집합을 반복해야한다는 결론에 도달했습니다. 그렇기 때문에 p
은 값이 부족한 경우, 즉 컨트롤이 목록의 끝에 도달했을 때 False
을 반환해야한다고 결론지었습니다.
이미 눈앞에 커먼 리스프 코드가있을 때 "프로그래밍으로 어떻게 써야합니까?"라는게 무슨 뜻입니까? 모욕 :) –
Lol, 네, 실제로 질문은 언어 적으로 실패한 것입니다. 이미 프로그래밍 방식으로 작성했기 때문에) "언어 x로 변환하는 방법"을 묻지 않은 이유는 실제로 발생하는 것을 이해하려고하기 때문입니다. 이리. –