যার ইনজুটটির ডিজিটাল যোগটি তার চেয়ে বড় সংখ্যার সন্ধান করুন


28

"ডিজিটাল যোগ" সংখ্যার সমস্ত অঙ্কের যোগফলকে বোঝায়।

উদাহরণস্বরূপ, ডিজিটাল সমষ্টি 1324হল 10কারণ, 1+3+2+4 = 10

চ্যালেঞ্জটি হ'ল ইনপুট যার ডিজিটাল যোগটি ইনপুট তার চেয়ে ক্ষুদ্রতম সংখ্যা গণনা করার জন্য একটি প্রোগ্রাম / ফাংশন লিখুন।

ওয়াকথ্রু সহ উদাহরণ

উদাহরণ হিসাবে, নম্বরটি 9ইনপুট হিসাবে নিন:

9 = 1+8 -> 18
9 = 2+7 -> 27
9 = 3+6 -> 36
...
9 = 8+1 -> 81
9 = 9+0 -> 90

বৈধ আউটপুট উপরে সবচেয়ে ছোট সংখ্যা, যা হবে 18

চশমা

দ্রষ্টব্য যে 9এই উদাহরণটির জন্য বৈধ আউটপুট নয়, কারণ বিপরীত সংখ্যাটি মূল সংখ্যার চেয়ে বেশি হওয়া উচিত।

নোট করুন যে ইনপুটটি ইতিবাচক হবে।

টেস্ট-মামলা:

 2 => 11      (2 = 1 + 1)
 8 => 17      (8 = 1 + 7)
12 => 39     (12 = 3 + 9)
16 => 79     (16 = 7 + 9)
18 => 99     (18 = 9 + 9)
24 => 699    (24 = 6 + 9 + 9)
32 => 5999   (32 = 5 + 9 + 9 + 9)

তথ্যসূত্র:

এটি OEIS A161561

সম্পাদনা করুন: একটি অতিরিক্ত টেস্টকেস যুক্ত হয়েছে (18)

লিডারবোর্ড স্নিপেটের জন্য মার্টিন ইন্ডারকে ধন্যবাদ

var QUESTION_ID=81047,OVERRIDE_USER=31373;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>


11
এই শিরোনামটি আমার মস্তিষ্ককে আহত করেছে।
ফ্যাটালাইজ করুন

উত্তর:


4

05 এ বি 1 , 19 17 8 বাইট

কোড:

[>DSO¹Q#

ব্যাখ্যা:

[            # start infinite loop
 >           # increase loop variable, will initially be input
  DSO        # make a copy and sum the digits
     ¹Q#     # if it equals the input, break
             # else return to start of loop
             # implicitly print

এটি অনলাইনে চেষ্টা করুন

সম্পাদনা করুন: @ আদনানকে 9 টি বাইট সংরক্ষণ করা হয়েছে


4
SOডিজিটের যোগফল পেতে (পরিবর্তে একটি সংক্ষিপ্ত উপায় J`)O)। এছাড়াও, ভেরিয়েবল অ্যাসাইনমেন্ট ছাড়াই, আপনি [>DSO¹Q#:) করতে পারেন ।
আদনান

2
@Adnan। নিস! আমি এস কে পুরোপুরি মিস করেছি বুঝতে পারি আমার ভেরিয়েবলের দরকার নেই।
এমিগানা

14

পাইথন 2, 33 বাইট

lambda n:[n+9,`n%9`+n/9*'9'][n>9]

প্রত্যক্ষ অভিব্যক্তি। 9 টির শেষে এবং বাকিটি শুরুতে একটি সংখ্যা স্ট্রিং তৈরি করে। একক-অঙ্কের বাদে nদেয় n+9

কিছু আউটপুটে নেতৃস্থানীয় শূন্য রয়েছে ( 099জন্য 18)।


7

রেটিনা , 39 31 বাইট

r`1{1,9}
$.&
T`d`_d`^.$
^.$
1$&

ইনপুট লাগে ইউনারী মধ্যে

এটি অনলাইন চেষ্টা করুন! (প্রথম দুটি লাইন একবারে একাধিক পরীক্ষার কেস চালানোর অনুমতি দেয় এবং সুবিধার জন্য দশমিক থেকে অ্যানারিতে রূপান্তর করে))

এটি আসলে রৈখিকভাবে ফলাফলের জন্য অনুসন্ধান করে না, তবে এটি স্পষ্টভাবে গণনা করে:

  • যদি ইনপুটটি n9 এর চেয়ে বেশি হয়, আমরা এটি (মেঝেযুক্ত) নাইনগুলির n % 9পরে প্রতিস্থাপন করব n / 9
  • অন্যথায়, আমরা এটি দিয়ে প্রতিস্থাপন n + 9

অ্যানারি অংক হিসাবে !(বা অন্য কিছু যা নয় 1) ব্যবহার করে , আমি নিম্নলিখিত পদ্ধতির সাহায্যে আরও একটি বাইট সংরক্ষণ করতে পারি:

^!(?!!{9})
1
r`!{0,9}
$.&
0\B

তবে এই ইনপুট ফর্ম্যাটটি কিছুটা প্রসারিত বলে আমি মনে করি।


সুতরাং রেটিনা পূর্ণসংখ্যার ইনপুটকে অনুমতি দেবে না বা কেবল পূর্ণসংখ্যার গাণিতিক পরিচালনা করতে পারবে না?
লেভান্থ

@ লেভানথ রেটিনার কোনও গাণিতিক নেই - পুরো ভাষা নিয়মিত প্রকাশের মাধ্যমে স্ট্রিং প্রসেসিংয়ের উপর ভিত্তি করে তৈরি হয়, তাই সমস্ত পাটিগণিত সাধারণত অবিচ্ছিন্ন উপস্থাপনায় করা হয়। রেটিনা দশমিক পূর্ণসংখ্যার ইনপুট নিতে পারে এবং প্রথমে এটি অ্যানারিতে রূপান্তর করতে পারে, তবে এর জন্য 6 অতিরিক্ত বাইট খরচ হয় এবং আমাদের নীতিগুলি চ্যালেঞ্জ দশমিক নির্দিষ্ট না করে তবেই অ্যানারি ইনপুটটিকে অনুমতি দেয়। (দশমিক ইনপুট নেওয়ার পরিবর্তে যদি আপনার সমস্ত উত্তরের প্রয়োজন হয় তবে স্পেসিফিকেশনে তাই নির্দ্বিধায় বলুন এবং আমি আমার উত্তর আপডেট করব))
মার্টিন ইন্ডার

না না ঠিক আছে ^^ আমি কেবল
অ্যানারি


6

জাভা 7, 68 61 বাইট

int f(int n){return n>9?-~(n%9)*(int)Math.pow(10,n/9)-1:n+9;}

এখানে অন্যান্য উত্তরগুলির মতো প্রায় একই জিনিসটি করে। স্ট্রিং ম্যানিপুলেশন এবং লুপগুলি ব্যবহার না করে জাভা পন্থাটি দেখাতে চেয়েছিল।

আমি বোবা যে আমাকে স্মরণ করিয়ে দেওয়ার জন্য ফ্রাইআম দ্য এজম্যানকে ধন্যবাদ জানাই;)


কমপক্ষে আপনি এসকিউএলকে ছাড়িয়ে গেছেন?
আর

মেহ, এখানে বেশিরভাগ অজগর / রুবি উত্তরের চেয়ে দ্বিগুণ বড়, তাই এখনই জাভার পক্ষে আমার খুব খারাপ লাগছে না। সি কে হারাতে ভাল
লাগত

: / উফ, আমার ক্লাস ব্লক থেকে এটি পেয়েছে। আমি অবশ্যই এই জংসা হতে হবে।
জিওবিটস

@ জিওবিটস এটি সম্ভবত সি --- কে পরাজিত করবে।
gcampbell

@ ফ্রি সম্পূর্ণরূপে সেই কৌশল সম্পর্কে ভুলে গেছেন। ধন্যবাদ, যা আমাকে কমপক্ষে সি এর চেয়ে এগিয়ে
রেখেছে

3

এমএটিএল , 10 9 বাইট

`QtV!UsG-

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

`        % Do...while
  Q      %   Add 1. Takes input implicitly the first time
  t      %   Duplicate
  V!Us   %   To string, transpose, to number, sum. Gives sum of digits
  G-     %   Subtract input. If 0, the loop ends and the stack is implicitly displayed

1
V!Uআমার কাছ থেকে +1 এর চতুর ব্যবহার । এটি আমাদের এমএটিএল আইডিয়োমগুলির তালিকায় রাখা উচিত।
সোয়েভার

@ সোয়েভার হ্যাঁ, এটি প্রায়শই ব্যবহৃত হয়
লুইস মেন্ডো

3

জাভাস্ক্রিপ্ট (ES7), 32 বাইট

n=>(n%9+1)*10**(n/9|0)-(n>9||-8)

ES6 হিসাবে 38 বাইট:

n=>parseFloat(n%9+1+'e'+n/9)-(n>9||-8)

3

পাইথন 3, 128 94 84 74 বাইট

আউটপুট ছাড়াই, সরাসরি পন্থা, প্রাথমিক কোডগল্ফার;)

def r(n):
 m=n
 while 1:
  m+=1
  if sum(map(int,str(m)))==n:return(m)

1
প্রারম্ভিকদের জন্য, অনেকগুলি স্থান রয়েছে যা সরানো যেতে পারে। এর আগে / পরে = (() উদাহরণস্বরূপ।
এমিগানা

1
এছাড়াও আপনি এর print(m)সাথে প্রতিস্থাপন করতে পারেন return m(কোনও বাইট সংরক্ষণ করে না তবে আপনাকে নিজেই ফাংশনটিতে মুদ্রণ করতে হবে না)। আপনি এখনও print(r(n))আপনার ফাংশনটি পরীক্ষা করতে আউটপুট ফাংশন রিটার্ন মুদ্রণ করতে পারেন
লভেন্থ

1
আপনি প্রচুর নতুন লাইনগুলিও সরাতে পারেন; m=n+1;f=1এবংif s==n:f=0
নীল

1
মুদ্রণের পরিবর্তে প্রতিস্থাপন করার সময়, আপনি এটি সরাসরি-বিবৃতিতে করতে পারেন এবং চ অপসারণের পাশাপাশি অন্য বিবৃতিটিও মুছে ফেলতে পারেন।
এমিগানা

2
আপনি এখনও এফ অপসারণ করতে পারেন এবং 1: 1 এর সময় ব্যবহার করতে পারেন এবং এর সাথে (সি) এবং এর জন্যও স্থানটি সরিয়ে ফেলতে পারেন
Emigna

2

আসলে, 17 বাইট

╗1`;$♂≈Σ╜;)=)>*`╓

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

╗1`;$♂≈Σ╜;)=)>*`╓
╗                  save input to reg0
 1`;$♂≈Σ╜;)=)>*`╓  first integer n (>= 0) where:
   ;$♂≈Σ╜;)=         the base-10 digital sum equals the input and
            )>*      is greater than the input

এই উত্তরটি দুর্দান্ত কারণ এটি ফ্লার্ট ( ;))
মনিকা'র মোকদ্দমা

2

সি 73 65 বাইট

একটি সহায়ক ফাংশন সহ একটি ম্যাক্রো।

e(y){return y?10*e(y-1):1;}
#define F(n) n<9?n+9:(1+n%9)*e(n/9)-1

eফাংশন মাত্র দশ শক্তি নির্ধারণ এবং Fম্যাক্রো হিসাবে একই সমাধান পদ্ধতি ব্যবহার এই রুবি , এবং এই পাইথন উত্তর। দুঃখের বিষয়, উভয় উত্তর একসাথে করা সমান দৈর্ঘ্যের চেয়ে দীর্ঘ । তবে এটি প্রথম সি উত্তর।

(লিনের অপসারণের কৌশল দ্বারা 8 টি বাইট সংরক্ষণ করা হয়েছে int))


আপনি int8 টি বাইট সংরক্ষণ করে উভয় উপস্থিতি বাদ দিতে পারেন ।
লিন

2

ব্র্যাচল্যাগ , 8 বাইট (প্রতিদ্বন্দ্বী)

<.=:ef+?

= এই চ্যালেঞ্জটি পোস্ট হওয়ার পরে সংশোধিত হয়েছিল, যাতে এটি এখন সম্ভবত অসীম ডোমেনগুলিতে কাজ করে, যা এখানে কেস is

ব্যাখ্যা

<.       Output > Input
  =      Label the Output (i.e. unify it with an integer)
   :ef   Get the list of digits of the Output
      +? Input is the sum of all those digits

=আউটপুট এর মান এই পুরো ভবিষ্যদ্বাণীকে সত্য না করা পর্যন্ত এটি ব্যাকট্র্যাক হবে tra



1

পাইথন 2, 39 বাইট

lambda n:[n+9,(1+n%9)*10**(n/9)-1][n>9]

খাঁটি পূর্ণসংখ্যার গাণিতিক।

আউটপুট সহ সম্পূর্ণ প্রোগ্রাম

f=lambda n:[n+9,(1+n%9)*10**(n/9)-1][n>9]

print(f(2))
print(f(8))
print(f(12))
print(f(16))
print(f(17))
print(f(18))
print(f(24))
print(f(32))

আউটপুট:

11
17
39
79
89
99
699
5999

এই সূত্রটি নেতৃস্থানীয় শূন্যটি যেভাবে এড়িয়ে চলেছে তা আমি পছন্দ করি।
নিল

অন্য একজন @ নীল এটি ব্যবহার করে এড়াতে পারত eval
নীল

1

পাওয়ারশেল ভি 2+, 62 বাইট

param($n)for($a=$n+1;([char[]]"$a"-join'+'|iex)-ne$n;$a++){}$a

ইনপুট নেয় $nতারপরে একটি forলুপ কার্যকর করে। আমরা আমাদের টার্গেট নম্বর সেট করে লুপটি শুরু করি, এর $aচেয়ে বড় হতে হবে $n(যেহেতু এটি আরও বড় হতে হবে, এবং এটি 1..9সঠিকভাবে কাজ নিশ্চিত করে )। প্রতিটি লুপ আমরা বৃদ্ধি $a++। লুপটিতে যথাযথভাবে কিছু হয় না তবে শর্তযুক্তই যেখানে প্রোগ্রামের যুক্তি ঘটে। আমরা আক্ষরিক অর্থে লক্ষ্য সংখ্যাটি একটি স্ট্রিং হিসাবে নিচ্ছি, এটিকে একটি চর-অ্যারে হিসাবে কাস্ট করে, -joinঅ্যারেটি যুক্ত করে +তারপরে iex(এর অনুরূপ eval) পাইপ দিচ্ছি । এটি আমাদের ইনপুট সংখ্যার সমান কিনা তা আমরা পরীক্ষা করি এবং সে অনুযায়ী লুপিং চালিয়ে যেতে পারি। একবার লুপটি বের হয়ে গেলে, আমরা পৌঁছে গেলাম যেখানে আমাদের টার্গেট নম্বরটি আমাদের ইনপুট সংখ্যার সমান অঙ্ক-যোগফল, তাই $aপাইপলাইনে স্থাপন করা হয় এবং আউটপুট অন্তর্ভুক্ত থাকে।


রেফারেন্সের জন্য, অন্যান্য লোকেরা 67 67 বাইটে যে পদ্ধতিটি করেছে তার জন্য এখানে "9 এর উপযুক্ত সংখ্যার সাথে একটি স্ট্রিং তৈরি করুন"

param($n)(($n+9),(+(""+($n%9)+'9'*(($n/9)-replace'\..*'))))[$n-gt9]

বা "বিশুদ্ধ পূর্ণসংখ্যার গাণিতিক" পদ্ধতি যা অন্যান্য লোকেরা 70 বাইটে করে

param($n)(($n+9),("(1+$n%9)*1e$(($n/9)-replace'\..*')-1"|iex))[$n-gt9]

উভয়ই খাটো নয়, তবে উভয়ই আকর্ষণীয় interesting


আপনি 3 বাইট সংরক্ষণ করতে পারেন:param($n)for($a=$n+1;([char[]]"$a"-join'+'|iex)-$n){$a++}$a
mazzy

1

পাইকে, 9 8 7 বাইট, অ-প্রতিযোগী - আরও সাম্প্রতিক সংস্করণ ব্যবহার করে

.fhsq)h

এখানে চেষ্টা করুন!

.f      - first where true:
  h     - n+1
   sq    - digital_root(^) == input()
      h - that number +1

আবার পরীক্ষিত, আপনার সমাধান 1 থেকে 8 ইনপুটগুলির জন্য সঠিক আউটপুট দেয় না
লেভানথ

আমি মনে করি আমি এটি ভেঙে ফেলেছি ... সংখ্যা বাদে কাজ করে 1। বিটিডব্লিউ কেন Missing arg to Equals, evaling inputআসে? মানে আমি এটিকে একটি ইনপুট নম্বর দিই
লেভানথ

@ লিভান্থ এটি ঘটে কারণ ডিফল্টরূপে ওয়েব ইন্টারফেসের সতর্কতা চালু হয়েছে। আমি এটি বন্ধ করার জন্য একটি উপায় কোড করেছি (10 মিনিট আগের মত)। এটি কেন 1 এর জন্য কাজ করে না, আমি এটি 10 ​​টির চেয়ে বড় কিনা এবং যদি এখনও অবিরত থাকে তা পরীক্ষা করে দেখছিলাম।
নীল

1

জাভাস্ক্রিপ্ট (ES2015), 45 39 33 বাইট

@ কনর ও'ব্রায়েন এবং @ শন এইচকে আরও 6 টি বাইট সংরক্ষণ করা হয়েছে বলে
আমি মনে করি আমি এটি এটির মতোই ছেড়ে দেব, কারণ এই সংস্করণটি ব্যবহার করে @ নীলের উত্তর থেকে আলাদা String.repeat()

v=>+(v>9?v%9+'9'.repeat(v/9):v+9)

পূর্ববর্তী সংস্করণ (@ কুয়েরটি ধন্যবাদ 6 বাইট সংরক্ষিত):

f=v=>+(v/9>1?v%9+'9'.repeat(v/9|0):v+9)

প্রথম সংস্করণ:

f=v=>+(v/9>1?v%9+'9'.repeat(~~(v/9)):'1'+v-1)

1
~~(v/9)=> v/9|0, '1'+v-1=>v+9
কিওয়ারটি

@ কিওয়ার্টি আপনাকে অনেক ধন্যবাদ বিটওয়াইজ অপারেটরদের সম্পর্কে আমার আরও শিখতে হবে। দ্বিতীয় পরিবর্তন সম্পর্কে, দেখে মনে হচ্ছে যে আমি মামলাটি অতি-জটিল করে ফেলেছি v <= 9। আমি ভাবব যদি আমি সমস্ত সংখ্যাসূচক মানগুলি ফিরিয়ে দিতে পারি তবে এটি অন্য বাইট-সেভার (না। রেপিট () এবং + ()) এ মোড়কের রিটার্ন মান হতে পারে।
লাইব্রোগ

আমাদের নিয়ম অনুসারে আপনাকে ফাংশনের নাম দেওয়ার দরকার নেই
কনর ও'ব্রায়েন

1
v>92 বাইট সংক্ষিপ্ত, string.repeatকোনও দশমিক মান লাগবে |0না
শন এইচ

**অবশ্যই উত্তর না দিয়ে আমার উত্তর থেকে পৃথক ।
নিল

1

লুয়া, 52 বাইট

n=...+0
print(n>9 and(n%9)..string.rep(9,n/9)or n+9)

কোনও ফাইলে সংরক্ষণ করার জন্য এবং লুয়া ইন্টারপ্রেটারের সাথে চালানোর জন্য উদাহরণস্বরূপ lua <file> <input number>

আপনি এখানে এটি চেষ্টা করে দেখতে পারেন: https://repl.it/CXom/1

(Repl.it এ ইনপুট নম্বরটি পরীক্ষার স্বাচ্ছন্দ্যের জন্য হার্ড-কোডড হয়)


'... + 0' কী করে ...? এটি কি কোনও পূর্ণসংখ্যার সাথে ইনপুট ফেলে দেয়?
ইয়াতসি

1
হ্যাঁ, একটি সংখ্যায় (5.3 এর আগে লুয়া কেবল জাভাস্ক্রিপ্টের মতো ডাবলস ব্যবহৃত হবে)। লুয়া স্বয়ংক্রিয়ভাবে সংখ্যায় স্ট্রিংগুলিকে এক্সপ্রেশনগুলিতে রূপান্তর করবে তবে তুলনা নয়। সুতরাং n>9সঠিকভাবে কাজ করার জন্য এটি প্রথমে একটি সংখ্যাতে জোর করা দরকার।
পাইগুই

+1 টি! আমি দেখি. তাহলে ...+0>9কি কাজ করবে?
ইয়াতসি

1
হাঁ! এটি হবে :)
পাইগুই

1

র‌্যাকেট 70 টি অক্ষর, 71 বাইট

অন্যদের বেশিরভাগ হিসাবে একই অ্যালগরিদম। মডুলোর জন্য%, বা এক্সপেটের জন্য ** বা ডিফল্টরূপে পূর্ণসংখ্যা বিভাগ না থাকার জন্য অত্যন্ত দু: খজনক, অন্যথায় এটি অনেক কম হতে পারে এবং আমি সি এবং জাভা ছাড়িয়ে যেতে পারি। এখনও ভাষা পছন্দ

(λ(x)(if(> x 9)(-(*(+(modulo x 9)1)(expt 10(floor(/ x 9))))1)(+ x 9)))

1

হেক্সাগনি , 40 31 30 বাইট

<_:->.(.+><.'!.\@"9!%>!/{.}|.?

বা, আপনি যদি নিজের কোডটিকে কিছুটা কম রৈখিক এবং আরও কিছু বহুভুজ হতে পছন্দ করেন:

    < _ : -
   > . ( . +
  > < . ' ! .
 \ @ " 9 ! % >
  ! / { . } |
   . ? . . .
    . . . .

এটি অনলাইন চেষ্টা করুন!

কিছু ধারণা এবং অনুপ্রেরণার জন্য @ ফ্রিআমএইটিজিমনকে ধন্যবাদ: ও)

পূর্ববর্তী সংস্করণ: <.:->+_.!(..'!.\><9!%>@.{.}|.?"

প্রিভিউসার সংস্করণ: <><.-_|@"'!{|(.9+!8=@>{/".'/:!?$.%\1$..\


1
এটা কি কাজ বলে মনে হচ্ছে? এখনও গল্ফযোগ্য দেখাচ্ছে।
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান ভাল কাজ! এটি পোস্ট করার 2 মিনিট পরে আমি আরও অনেক ভাল উপায় করার কথা ভেবেছিলাম, বেশ, সবকিছুই। টানেলের দৃষ্টি, সম্ভবত? আমি একটি সংশোধিত সংস্করণে কাজ করছি।
সোকে

ধন্যবাদ :) কেবলমাত্র একটি এফওয়াইআই লোকেরা প্রায়শই গৌরবময় প্রোগ্রামিং ল্যাঙ্গুয়েজে হেক্সাগনির সাথে চ্যাট করে । আপনি চাইলে যোগদান করুন :)
FryAmTheEggman

1
এটি আরও কিছুটা কমাতে পরিচালিত: hexagony.tryitonline.net/…
FryAmTheEggman

1

পার্ল 6 ,  38   29 বাইট

{$_>9??(1+$_%9)*10**Int($_/9)-1!!$_+9}
{first *.comb.sum==$_,$_^..*}

(স্পষ্টতই সরাসরি পন্থা সংক্ষিপ্ত)

ব্যাখ্যা:

{
  first
    *.comb.sum == $_, # lambda that does the check
    $_ ^.. *          # Range.new: $_, Inf, :excludes-min
}

টেস্ট:

#! /usr/bin/env perl6

use v6.c;
use Test;

my @tests = (
   2 => 11,
   8 => 17,
   9 => 18,
  12 => 39,
  16 => 79,
  18 => 99,
  24 => 699,
  32 => 5999,
);

plan +@tests;

my &next-digital-sum = {first *.comb.sum==$_,$_^..*}

for @tests -> $_ ( :key($input), :value($expected) ) {
  is next-digital-sum($input), $expected, .gist;
}
1..8
ok 1 - 2 => 11
ok 2 - 8 => 17
ok 3 - 9 => 18
ok 4 - 12 => 39
ok 5 - 16 => 79
ok 6 - 18 => 99
ok 7 - 24 => 699
ok 8 - 32 => 5999

1

জাভা 10, 114 62 বাইট

n->{var r="";for(int i=0;i++<n/9;r+=9);return(n>9?n%9:n+9)+r;}

এটি অনলাইনে চেষ্টা করুন।

সম্পাদনা: শীর্ষস্থানীয় শূন্যগুলি ছাড়াই 130 73 বাইট ( @ লেভান্থেকে ধন্যবাদ ):

n->{var r="";for(int i=0;i++<n/9;r+=9);return new Long((n>9?n%9:n+9)+r);}

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

n->                           // Method with integer parameter and long return-type
  var r="";                   //  Result-String, starting empty
  for(int i=0;i++<n/9;r+=9);  //  Append `n` integer-divided by 9 amount of 9's to `r`
  return new Long(            //  Cast String to number to remove any leading zeroes:
    (n>9?                     //   If the input `n` is 10 or larger
      n%9                     //    Use `n` modulo-9
     :                        //   Else (`n` is smaller than 10):
      n+9)                    //    Use `n+9`
    +r);}                     //   And append `r`

1
যে কেউ আগ্রহী হয়: ফিক্স সাত বাইট আর হবে, প্রতিস্থাপন String c(int n){return""+(n>9?(n%9)+s(n):n+9);}সঙ্গেint c(int n){return Integer.parseInt((n>9?(n%9)+s(n):n+9));}
levanth

@levanth আমি এর মধ্যে সম্পাদনা করেছেন BTW, আপনি ভুলে গেছেন। ""+int c(int n){return Integer.parseInt(""+(n>9?(n%9)+s(n):n+9));}
কেভিন Cruijssen

1

রুবি, 33 বাইট

এটি একটি ইন্টিথমেটিক ভার্সন যা এক্সনরের পাইথন উত্তরের মতোই ঘটে। এটি একটি বেনামি ফাংশন যা কোনও int গ্রহণ করে এবং প্রদান করে।

->n{n<10?n+9:(1+n%9)*10**(n/9)-1}

আমি রুবিকে এতটা জানি না তবে -> শুরুতে কি কোনও বেনামে ফাংশন হয়?
লেভান্থ

@ এলভান্থ: হ্যাঁ আমি উপরে পরিষ্কার করব
মেগাটম

N = 9
জিবি

@ জিবি আপনাকে এটি নির্দেশ করার জন্য ধন্যবাদ thank এটা এখন স্থির।
মেগাটম

1

ম্যাথগল্ফ , 8 7 বাইট

Æ)_Σk=▼

এটি অনলাইন চেষ্টা করুন!

অন্তর্নিহিত ইনপুট হ্যাঁ।

ব্যাখ্যা:

          Implicit input
 Æ     ▼  Do while false loop that pops the condition
  )       Increment top of stack
   _      Duplicate
    Σ     Get the digit sum
     k    Get input
      =   Is equal?
          Implicit output

আমি জানি এটি একটি পুরানো উত্তর, তবে আপনি এটি এখন 7 বাইটে অন্তর্নিহিত ইনপুট দিয়ে সমাধান করতে পারেন (কেবল প্রথমটি এড়িয়ে যান k)।
ম্যাক্সব

0

রুবি, 38 বাইট

f=->n{n<11?n+9:"#{n<19?n-9:f.(n-9)}9"}

এই উত্তরটি ইনপুট আকারের উপর নির্ভর করে একটি স্ট্রিং বা int প্রদান করে। এটি একটি পুনরাবৃত্ত সমাধান যা 9 এর জন্য কম সমাধানের জন্য জিজ্ঞাসা করে শেষে "9" যুক্ত করে।


রুবি, 39 বাইট

f=->n{n<11?n+9:(n<19?n-9:f.(n-9))*10+9}

আরও একটি বাইটের জন্য, এই উত্তরটি সর্বদা একটি int দেয়। উপরের মত একই অ্যালগোরিদম কিন্তু সংখ্যার সাথে।



0

পিএইচপি, 77 টি অক্ষর

$n=$argv[1];$m=$n+1;while(1){if(array_sum(str_split($m))==$n)die("$m");$m++;}

0

ওরাকল এসকিউএল 11.2, 165 বাইট

SELECT l FROM(SELECT LEVEL l,TO_NUMBER(XMLQUERY(REGEXP_REPLACE(LEVEL,'(\d)','+\1')RETURNING CONTENT)) s FROM DUAL CONNECT BY 1=1)WHERE s=:1 AND l!=s AND rownum=1;

আন golfed

SELECT l   
FROM   (
         SELECT LEVEL l, -- Number to evaluate
                XMLQUERY( 
                          REGEXP_REPLACE(LEVEL,'(\d)','+\1')  -- Add a + in front of each digit 
                          RETURNING CONTENT
                        ).GETNUMBERVAL()s                     -- Evaluate le expression generated by the added + 
                FROM DUAL 
                CONNECT BY 1=1 -- Run forever            
       )
WHERE s=:1      -- The sum must be equal to the input
  AND l!=s      -- The sum must not be the input 
  AND rownum=1  -- Keep only the first result

0

পাইথন 3 55 বাইট

একই সাথে দুটি যুক্তি গ্রহণ করে

f=lambda a,b:a if sum(map(int,str(a)))==b else f(-~a,b)

অর্থাৎ এটিকে কল করতে আপনি f (x, x) ব্যবহার করবেন



0

পাওয়ারশেল, 54 বাইট

$args|%{(($_+9),+(''+$_%9+'9'*(($_-$_%9)/9)))[$_-gt9]}

পরীক্ষার স্ক্রিপ্ট:

$f = {

$args|%{(($_+9),+(''+$_%9+'9'*(($_-$_%9)/9)))[$_-gt9]}

}

@(
    ,(  1,  10   )
    ,(  2 , 11   )
    ,(  8 , 17   )
    ,(  9 , 18   )
    ,( 10,  19   )
    ,( 11,  29   )
    ,( 12 , 39   )
    ,( 16 , 79   )
    ,( 18 , 99   )
    ,( 19 , 199  )
    ,( 24 , 699  )
    ,( 27 , 999  )
    ,( 32 , 5999 )
    ,( 52 , 799999 )
    ,( 128, 299999999999999 )
) | % {
    $a,$e = $_
    $r = &$f $a
    "$($r-eq$e): $r"
}

আউটপুট:

True: 1 : 10
True: 2 : 11
True: 8 : 17
True: 9 : 18
True: 10 : 19
True: 11 : 29
True: 12 : 39
True: 16 : 79
True: 18 : 99
True: 19 : 199
True: 24 : 699
True: 27 : 999
True: 32 : 5999
True: 52 : 799999
True: 128 : 299999999999999

Expalantion

  • যদি [$_-gt9] প্রথম অঙ্ক এবং একটি লেজ ফেরত দেয়
    • প্রথম অঙ্কটি হ'ল $ _ এবং 9 এর যোগফলের মধ্যে পার্থক্য is$_%9 )
    • একটি লেজ কয়েকটি নাইন - '9'*(($_-$_%9)/9))
    • অবশেষে, ফলাফল 0 টি শীর্ষস্থানীয় 0 টি সরাতে একটি সংখ্যায় রূপান্তরিত করে
  • অন্যথায় ফিরে ($_+9)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.