계수 요약


27

이 시퀀스를 "예수 시퀀스"라고합니다. 왜냐하면 mod 이기 때문입니다 . </ pun>

이 시퀀스에서는 모든 양의 정수 m을 입력 n 보다 작게 취하고 각 m 마다 n 모듈로 의 합을 취합니다 . 다른 말로:

an=m=1n1nmodm

예를 들어, 14 라는 용어를 사용하십시오 .

14 % 1 = 0
14 % 2 = 0
14 % 3 = 2
14 % 4 = 2
14 % 5 = 4
14 % 6 = 2
14 % 7 = 0
14 % 8 = 6
14 % 9 = 5
14 % 10 = 4
14 % 11 = 3
14 % 12 = 2
14 % 13 = 1
0+0+2+2+4+2+0+6+5+4+3+2+1=31

여기서 목표는이 순서를 구현하는 함수를 작성하는 것입니다. 시퀀스 항 (이는 1-2 31 의 양의 정수임 )을 유일한 입력으로 취하여 해당 항의 값을 출력해야합니다. 이다 OEIS A004125 .

항상 그렇듯이 표준 허점이 적용되고 바이트 단위의 최단 답변이 승리합니다!

답변:





6

펑키 , 25 바이트

n=>fors=~-i=1i<n)s+=n%i++

단지 Naïve의 대답은 효과가있는 것 같습니다.

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

Desmos , 25 바이트

f(x)=\sum_{n=1}^xmod(x,n)

Desmos에 붙여 넣은 다음을 호출하여 실행하십시오 f.

Desmos에 붙여 넣을 때 라텍스는 다음과 같습니다

그러나 그래프는 다음과 같습니다

그것은 무작위로 보이고 모든 곳에서 보이지만 정수만 지원 한 결과입니다.

RProgN 2 , 9 바이트

x=x³x\%S+

설명

x=x³x\%S+
x=          # Store the input in "x"
  x         # Push the input to the stack.
   ³x\%     # Define a function which gets n%x
       S    # Create a stack from "x" with the previous function. Thus this gets the range from (1,x), and runs (i%x) on each element.
        +   # Get the sum of this stack.

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

ReRegex , 71 바이트

#import math
(_*)_a$/d<$1_>b$1a/(\d+)b/((?#input)%$1)+/\+a//u<#input
>a

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

ARBLE , 19 바이트

sum(range(1,a)|a%i)

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

아마 나중에 56 바이트

whenf is*{n=0whenx is*{ifx>0{n=n+f%x x--}elseprintn}x=f}

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


이 도전에 대한 제출이 끝날까요? 지금까지 나는 40 분마다 새로운 것을 얻었습니다. : P
Nissa

@StephenLeppik 아, 난 아직도 더 올거야 걱정하지 마십시오.
ATaco

@StephenLeppik 다양한 언어의 품질이 우수하기 때문에 오히려 그렇지 않습니다.
ATaco

@StephenLeppik 나는 그들을 당신을 위해 합병했습니다.
ATaco

4
이러지 마십시오. 별도의 언어, 심지어 별도의 접근 방식조차도 별도의 답변으로 가야합니다.
Dennis





4

파이썬 2 , 44 바이트

lambda n:sum(map(lambda x:x%(n-x),range(n)))

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

편집 : 범위 (0, n)를 범위 (n)으로 변경했습니다.


2
안녕하세요, 사이트에 오신 것을 환영합니다! range암시 적으로의 첫 번째 인수를 사용 0하므로 range(n)대신 수행하여 2 바이트를 줄일 수 있습니다.
DJMcMayhem

오 와우! 나는 그것을 생각조차하지 않았다. 감사합니다
Max00355

1
PPCG에 오신 것을 환영합니다! map38 바이트 대신 목록 이해력을 사용할 수 있습니다 . 온라인으로 사용해보십시오!
Mr. Xcoder

네 말이 맞지만 닐의 대답에 사용되었으므로 그것을 복사하는 것이 가장 좋은 것인지 확실하지 않았습니다. 물론 여기에 뭔가 빠진 것이 아니라면. 조금 더 길어도 대안을 게시하고 싶었습니다.
Max00355




3

표준 ML (MLton) , 53 51 바이트

fn& =>let fun f 1a=a|f%a=f(% -1)(a+ &mod%)in f&0end

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

언 골프 드 :

fn n =>
   let fun f 1 a = a
         | f x a = f (x-1) (a + n mod x)
   in  
       f n 0
   end

이전 53 바이트 버전 :

fn n=>foldl op+0(List.tabulate(n-1,fn i=>n mod(i+1)))

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

설명:

List.tabulate정수 x와 함수 f를 받아서 목록을 생성합니다 [f 0, f 1, ..., f(x-1)]. 어떤 수를 감안할 때 n, 우리는 전화 List.tabulaten-1하고, 기능 fn i=>n mod(i+1)0으로 나누어 방지하기 위해. 결과 목록은로 요약됩니다 foldl op+0.






2

05AB1E , 6 바이트

ÎGIN%+

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

내 첫 05AB1E 프로그램;)

Btw 두 개의 39를 얻었습니다 .1은 JS6, 1은 파이썬이지만 너무 늦었습니다.

설명:

ÎGIN%+
Î                      # Push 0, then input, stack = [(accumulator = 0), I]
 G                     # For N in range(1, I), stack = [(accumulator)]
  IN                   # Push input, then N, stack = [(accumulator), I, N]
    %                  # Calculate I % N, stack = [(accumulator), I % N]
     +                 # Add the result of modulus to accumulator



2

추가 ++ , 14 바이트

L,RAdx$p@BcB%s

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

작동 원리

L,   - Create a lambda function.
     - Example argument:     [7]
  R  - Range;        STACK = [[1 2 3 4 5 6 7]]
  A  - Argument;     STACK = [[1 2 3 4 5 6 7] 7]
  d  - Duplicate;    STACK = [[1 2 3 4 5 6 7] 7 7]
  x  - Repeat;       STACK = [[1 2 3 4 5 6 7] 7 [7 7 7 7 7 7 7]]
  $p - Swap and pop; STACK = [[1 2 3 4 5 6 7] [7 7 7 7 7 7 7]]
  @  - Reverse;      STACK = [[7 7 7 7 7 7 7] [1 2 3 4 5 6 7]]
  Bc - Zip;          STACK = [[7 1] [7 2] [7 3] [7 4] [7 5] [7 6] [7 7]]
  B% - Modulo each;  STACK = [0, 1, 1, 3, 2, 1, 0]
  s  - Sum;          STACK = [8]


2

Windows 배치 (CMD), 63 바이트

@set s=0
@for /l %%i in (1,1,%1)do @set/as+=%1%%%%i
@echo %s%

이전 64 바이트 버전 :

@set/ai=%2+1,s=%3+%1%%i
@if %i% neq %1 %0 %1 %i% %s%
@echo %s%

2

T-SQL, 80 79 바이트

@MickyT 덕분에 -1 바이트

WITH c AS(SELECT @ i UNION ALL SELECT i-1FROM c WHERE i>1)SELECT SUM(@%i)FROM c

@다음과 같은 정수 매개 변수에서 입력을받습니다 .

DECLARE @ int = 14;

공통 테이블 표현식을 사용하여에서 1까지 숫자를 생성합니다 n. 그런 다음 cte를 사용하여 모듈러스를 요약합니다.

참고 : cte는 ; 는 이전 진술과 cte 사이 . 내가 본 대부분의 코드 ;는 선언 직전에 선언하지만,이 경우 입력 명령문에 바이트를 넣어 바이트를 저장할 수 있습니다 (기술적으로 내 코드는 유일한 명령문이므로).

사용해보십시오 (SEDE)


덜 "SQL-y"방식은 76 ​​바이트입니다. 이번에는 입력 변수가 @i아닌 @(1 바이트 절약) 이것은 단지 while루프를 수행합니다.

DECLARE @ int=2,@o int=0WHILE @<@i BEGIN SELECT @o+=@i%@,@+=1 END PRINT @o






1

Pyth , 5 바이트

s%LQS

s%LQS - Full program, inputs N from stdin and prints sum to stdout
s     - output the sum of
 %LQ  - the function (elem % N) mapped over 
    S - the inclusive range from 1..N

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


오, 사실 나는 당신과 다른 5 인치를 발견했고, 당신을 올바르게 읽지 못했습니다
Dave
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.