식 시그마 피


20

모르는 사람들을 위해 Sigma 는 그리스 문자로, 수학에서 크게 의미하는 부호로 사용됩니다. 에 따라 나타낼 표현식을 나타내는 문자열이 주어지면 각 대해 결과의 합을 계산하십시오 . 간결하게, 당신은 다음 과 같은 를 찾아야 합니다 :E ( k ) E ( k ) k { 1 , 2 , 3 , 4 , 5 } SkE(k)E(k)k{1,2,3,4,5}S

S=k=15E(k)

식의 예 :E(k)=k2+k2


명세서

  • 당신은 보장됩니다 :
    • 오류가 없는지, 그리고 그것을 선택한 구문의 의존의 있도록 표현이 유효한지 (예 : 만 지원하는 경우 2*k, 아무가 없을 것 2k)
    • 만 더 값이 좋아없는, 그래서 결과 사이의 값을 정의 1/0, inf또는 nan나타납니다
  • 위의 표현이 선택한 프로그래밍 언어의 한계에 적합하다고 가정 할 수 있으므로 오버플로 또는 기타 한계 관련 오류가 발생하지 않습니다.
  • 공백이 아닌 다른 ASCII 문자를 k선택할 수 있습니다
  • 프로그램 다음 작업을 지원 해야합니다 .
    • 또한 ( +, plus(), add(), sum())
    • 감산 ( -, minus(), subtract())
    • 지수 ( **, ^, pow()음의 지수에 염기 및 지원, 또는 다른 지정되어야한다)
    • 의 형태로 제곱근 sqrt(k), k^0.5, k**0.5, 또는 그러나 다른 당신이 원하는
    • 곱셈과 나눗셈
  • 제출은 사용법을 언급하면서 전체 프로그램 또는 기능 일 수 있습니다.
  • 출력시 후행 / 선행 공백이 허용됩니다.
  • 최소 정밀도 : 소수점 2 자리

테스트 사례 (포함 k)

+---------------+--------------+   
|  Input = E(k) |    Output    |
|---------------+--------------|
|2*k            | 30           |
|---------------+--------------|
|sqrt(k)        | 8.38         | (* with minimum decimal precision)
|---------------+--------------|
|k+k/2+k**2     | 77.5         |
|---------------+--------------|
|k**2           | 55           |
+---------------+--------------+

점수는 소스 + 컴파일러 플래그의 바이트 수입니다. 이러한 허점 은 엄격히 금지 된다는 점을 명심하면서 가장 낮은 점수의 유효한 제출물이 승리 합니다. 여기 에 파이썬 의사 코드가 있습니다.


plus()대신에 우리가 취할 수 있습니까 +? (다른 모든 운영자에게도 동일한 질문)
Stewie Griffin

@StewieGriffin 예는, plus(), add(), sum()및 등가물이 허용됩니다. 편집 내용을 참조하십시오.
Mr. Xcoder

아니요, @ComradeSparklePony
Mr. Xcoder

접미사 표기법을 사용할 수 있습니까? 예를 들어, 맨 위의 테스트 케이스 3은 다음과 같습니다 N N2/+N2**+.
스파클 포니 동지

그것은 매우 이상하지만, E(x)@ComradeSparklePony 의 "형식"을 분명히 밝히기 만하면 허용됩니다
Mr. Xcoder

답변:


3

젤리 , 5 바이트

vЀ5S

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

유효한 젤리 모나 딕 체인을 입력하십시오 (내 링크에서 골프 다운했습니다).

작동 원리

vЀ5S
 Ѐ     for each of ...
   5        5 (implicitly converted to [1,2,3,4,5]), ...
v           evaluate the input with the above as argument
    S   and find the sum

9

수학, 17 14 13 바이트

3 바이트를 절약 한 Ian Miller에게 감사합니다.

1 바이트를 절약 해 준 LegionMammal978에게 감사합니다.

#~NSum~{k,5}&

입력은 다음을 포함하는 실제 표현식이어야합니다. k예 :

#~NSum~{k,5}&[Sqrt[k]^3+4]

2
나는 Mathematica가 이것을 위해 내장되어 있다고 추측 했어야했다
Xcoder Mr. Xcoder

2
Mathematica 는 상황에 따라 항상 내장되어 있습니다. : P
완전히 인간적인

1,대해 필요하지 않습니다 Sum.
Ian Miller

실제로 그것은 짧아 질 수 있습니다N@#~Sum~{k,5}&
Ian Miller

@IanMiller 물론입니다. 고맙습니다!
마틴 엔더



3

05AB1E , 8 7 6 바이트

6G¹.VO

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

입력은 접미사 표기법으로되어 있으며 변수 N을 사용합니다 . 05AB1E는 스택 기반 언어이므로 접미사 표기법 만 작동합니다.

형식 E(N): 작업을 수행 할 번호를 쓴 다음 작업 부호를 씁니다. 예를 들어, 3+43 4+, 3*4+2*3것입니다 3 4* 2 3* +. 또한이 사용주의 t대신 sqrt하고, m대신이 **, 그렇게 sqrt(N)될 것이다 Nt.

설명:

6G¹.VO
6G     For N in range(1,6). This includes [1,2,3,4,5].
  ¹.V  Read and eval input.
     O Sum results.


3

Japt , 10 바이트

6ÆK=XOxUÃx

입력 문자열은 변수를 대문자로 사용해야합니다 K. sqrt(K)로 입력해야합니다 K**0.5.

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

설명

eval범위는 저에게 유리하게 작용하지 않았습니다. 계수 변수 X를 전역 변수 로 재정의해야했습니다 K.

6ÆK=XOxUÃx      // implicit: U = input string
6oXYZ{K=XOxU} x // expanded

6oXYZ{      }   // create array [0, 6) and map to function:
      K=X       //   redefine the array value to global K
         OxU    //   eval the input string
              x // sum the resulting array

흠, Ox직접 번역 하여 eval(도움이 될지 궁금 합니다.
ETHproductions


2

APL (Dyalog) , 9 바이트

+/⍎⎕⊣k←⍳5

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

덧셈은 +, 뺄셈은 -, 곱셈은 ×, 나누기는 ÷지수이며 *, 실행은 오른쪽에서 왼쪽이므로 ()식을 그룹화 하는 데 사용하십시오 .

입력은입니다 k.

설명

k←⍳5                    Set k to be equal to the vector 1 2 3 4 5
                       The left argument:
+/                      Sum of
⍎⎕                      The evaluated input (the eval returns an array because k is an array)

다음은 열차를 입력으로 가져 오는 솔루션입니다 (Jelly 답변과 같은) +/(⍎⎕)¨⍳5.


2

공통 리스프, 55 바이트

(defun f(x)#.(read))(print(+(f 1)(f 2)(f 3)(f 4)(f 5)))

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

Example input - output: 
(* x 2) - 30 
(sqrt x) - 8.382333 
(+ (/ x 2) x (expt x 2)) - 155/2 
(expt x 2) - 55

다르고 더 긴 (58 바이트) 버전-1에서 7까지의 합계를 계산하면 더 짧아지기 시작합니다.

(print #.`(+,@(mapcar #'(lambda(x)#.(read))'(1 2 3 4 5))))

또 다른 더 긴 방법 ( 65 64 바이트)-함수를 정의하지 않습니다-식을 루프에 삽입하십시오. 더 큰 금액 일수록 더 짧아 져야합니다.

(setf a(read)b 0)(loop as x from 1 to 5 do(incf b #.a))(print b)

2

스위프트 202 184 바이트

import Foundation;func s(i:String){print([1,2,3,4,5].map{NSExpression(format:i.replacingOccurrences(of:"k",with:"\($0).0")).expressionValue(with:nil,context:nil)as!Float}.reduce(0,+))}

어떤 이유로 이것은 로컬에서만 실행됩니다 :(.

내가하고있는 일에 대한 설명은 다음과 같습니다.

import Foundation // Import the Foundation module

func s(i:String){ // Create a function that takes in a String and returns a Float

    print( // Print the result of the follow algorithm to strdout

        [1,2,3,4,5].map{ //Conduct the follow code on numbers 1 - 5

            NSExpression(format: // Create an expression with the following String and return it 

            i.replacingOccurrences(of:"k",with:"\($0).0")) // Create a string replacing all ocurrances of 'k' in `i` with the current Float from the map

           .expressionValue(with:nil,context:nil)as!Float // Get the resulting value of the expression

       }.reduce(0,+) // Add the result of all the expressions together
    )
}

@Mr에게 감사합니다. 15 바이트 절약을위한 Xcoder!


2

TI 기본, 12 바이트

Σ(expr(Ans),K,1,5

와 전화 "string":prgmNAME, string의 유효한 TI-기본 표현이다 K.


같은 길이의 흥미로운 솔루션 :Ans->u:sum(u(1,5
lirtosiast


1

dc , 31 24 바이트

?sa1k[lax+Kd1+k5>p]dspxp

입력은 역 폴란드 표기법 (후위 표기법이라고도 함 [])으로 제공되고 다음과 같이 대괄호 ( )로 묶어야합니다 .

  • Kk매개 변수로 교체 ;
  • + 추가를 나타내는;
  • -빼기를 나타내고 _그 뒤에 음수를 나타내는 임의의 숫자;
  • * 곱셈을 나타내는;
  • / 분할을 나타내는;
  • ^ 지수를 나타내는;
  • v 제곱근을 나타냅니다.

예를 들어 -2*k+k+3*k**2+k**0.5-k/2로 입력하십시오 [_2K*K+K2^3*+Kv+K2/-]. 이것은 현재 정밀도 (초기로 설정 됨 ) 를 반환 K하는 dc명령 이라는 사실을 이용 합니다 1. 따라서 결국이 정밀도는로 출력을 반환합니다 6.

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



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