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

자기 번호 (또한 콜롬비아 또는 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
var QUESTION_ID=159881,OVERRIDE_USER=41020;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


답변

옥타브 , 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