본인 번호입니까? 그러한 평등을 만족하는 것을 찾을 수

자기 번호 (또한 콜롬비아 또는 Devlali 번호라고 함)은 자연수 인 x, 방정식 여기서 n + <digit sum of n> = x임의의 자연수에 대한 해결책이 없다 n. 예를 들어 21n = 15결과 로 표시 되는 자체 번호가 아닙니다 15 + 1 + 5 = 21. 한편, 20 n 그러한 평등을 만족하는 것을 찾을 수 없기 때문에 자기 번호 입니다.

이 정의는 숫자 합을 참조하므로 기본에 따라 다릅니다. 이 도전의 목적을 위해, 우리는 OEIS의 시퀀스 A003052 인 기본 10 자릿수 만 고려할 것 입니다. 이진 ( A010061 ) 및 기본 100 ( A283002 ) 자체 번호도 계산되었습니다.

도전

x입력 으로 양의 정수가 주어지면 x10 진수의 자릿수이면 참 값을, 그렇지 않으면 거짓 값을 출력하십시오. 진실과 거짓 값에 대한 설명은 주제에 대한이 메타 게시물을 참조하십시오 .

전체 프로그램 또는 기능을 작성할 수 있으며 일반적인 채널에서 입력 및 출력을 제공 할 수 있습니다. 물론 표준 허점 은 금지되어 있습니다.

이것은 이므로 답이 짧을수록 (바이트) 더 좋습니다!

테스트 사례

진실한 :

1
3
5
7
9
20
31
86
154
525

팔시 :

2
4
6
8
10
15
21
50
100
500

샌드 박스 링크

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

# Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

# [><>](http://esolangs.org/wiki/Fish), 121 bytes



답변

옥타브 , 37 바이트

@(n)sum(dec2base(t=1:n,10)'-48,1)+t-n

내 MATL 답변 포트.

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


답변

자바 (JDK 10) , 84 바이트

i->{for(int n=i;i-->1;)i|=((""+i).chars().map(x->x-48).sum()+i^n)-1>>-1;return~i<0;}

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

설명

i->{                                    // IntPredicate
  for(int n=i;i-->1;)                   //  for each number below n
    i|=(                                //   keep the sign of
      (""+i).chars().map(x->x-48).sum() //    sum of digits
      +i                                //    plus the number
      ^n                                //    xor n (hoping for a zero)
     )-1>>-1;                           //    changing that into a negative number if equals to zero
  return~i<0;                           //  return i>=0
}

크레딧


답변

05AB1E , 8 바이트

LD€SO+ÊW

온라인으로 사용해보십시오!
또는 테스트 스위트

설명

L          # push range [1 ... input]
 D         # duplicate
  €S       # split each number into a list of digits
    O      # sum digit lists
     +     # add (n + digitSum(n))
      Ê    # check for inequality with input
       W   # min


답변

Brachylog , 12 바이트

¬{⟦∋Iẹ+;I+?}

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

설명

¬{         }    Fails if succeeds, suceeds if fails:
  ⟦∋I             I ∈ [0, ..., Input]
    Iẹ+           The sum of the elements (i.e. digits) of I...
       ;I+?       ... with I itself results in the Input


답변

C (gcc) , 70 67 65 바이트

i,r,d,j;f(n){for(r=i=n;d=j=--i;r*=d!=n)for(;j;j/=10)d+=j%10;i=r;}

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

다른 2 바이트를 제거하기 위해 반환 된 값은 더 이상 1이 아니라 숫자 자체입니다.


답변

옥타브 , 49 47 44 바이트

@(x)arrayfun(@(k)k+sum(num2str(k)-48)-x,1:x)

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

설명:

num2str입력 숫자보다 많은 경우 공백을 구분 기호로 포함하는 문자열을 반환 하므로 범위에서 작업을 수행하는 것은 번거롭고 길다 . 따라서 48을 빼면 다음과 같이 1 -16 -16 2 -16 -16 3 -16 -16 4입력 범위가 1 … 4 입니다. 모든 -16바이트를 제거하려면 많은 바이트가 필요합니다.

따라서 우리는 이것을 사용하여 루프로 이것을 할 것 arrayfun입니다. 번호의 각각에 대해 K = 1 … X , x는 입력이고, 우리는 추가 k하고 그 자리 합 뺀다 x. 이것은 k의 각 숫자에 대한 연산 결과와 함께 배열을 반환합니다 . 배열의 숫자 중 하나가 0이면 숫자는 자체 숫자가 아닙니다.

입력 2021의 경우 출력은 다음과 같습니다.

20:  -18, -16, -14, -12, -10, -8, -6, -4, -2, -9, -7, -5, -3, -1, 1, 3, 5, 7, 9, 2
21:  -19, -17, -15, -13, -11, -9, -7, -5, -3, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 1, 3

input의 20경우 0이 아닌 요소와 input의 경우 0이 아닌 요소가 하나 이상 21있습니다. 그것은 그것이 20자기 번호이며, 21그렇지 않다는 것을 의미합니다 .

옥타브는 TIO- 링크에서 볼 수 있듯이 하나 이상의 0을 가진 배열을 false로 취급합니다.


답변

MATL , 11 바이트

t:tFYA!Xs+-

출력은 비어 있지 않은 배열이며, 모든 항목이 0이 아닌 경우에는 진실이며 하나 이상의 0이 포함 된 경우에는 거짓입니다.

온라인으로 사용해보십시오! 또는 진실 / 거짓 테스트를 포함한 모든 테스트 사례를 확인하십시오 .

설명

n = 10예를 들어 입력 을 고려하십시오 .

t       % Implicit input, n. Duplicate
        % STACK: 10, 10
:       % Range
        % STACK: 10, [1 2 3 4 5 6 7 8 9 10]
t       % Duplicate
        % STACK: 10, [1 2 3 4 5 6 7 8 9 10], [1 2 3 4 5 6 7 8 9 10]
FYA!    % Convert to base 10 digits and transpose
        % STACK: 10, [1 2 3 4 5 6 7 8 9 10], [0 0 0 0 0 0 0 0 0 1
                                              1 2 3 4 5 6 7 8 9 0]
Xs      % Sum of each column
        % STACK: 10, [1 2 3 4 5 6 7 8 9 10], [1 2 3 4 5 6 7 8 9 1]
+       % Add, element-wise
        % STACK: 10, [2 4 6 8 10 12 14 16 18 11]
-       % Subtract, element-wise
        % STACK: [8 6 4 2 0 -2 -4 -6 -8 -1]
        % Implicit display