সর্বনিম্ন সংখ্যার গণনা করুন যেখানে সংখ্যার ক্রমের যোগফল প্রদত্ত মানের চেয়ে বেশি


14

আপনি নীচের হিসাবে সংখ্যার একটি অসীম ক্রম সংজ্ঞায়িত করা হয়েছে:

1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
...

ক্রমটি n1 এবং এর সহ বিভাজকের যোগফল n

xইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যা দেওয়া , সর্বনিম্ন সংখ্যা গণনা করুন nযা এর চেয়ে বেশি ফলাফল তৈরি করবে x

পরীক্ষার মামলা

f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960

প্রত্যাশিত আউটপুট

আপনার প্রোগ্রাম উভয় n এবং এর বিভাজকদের যোগফল উভয়ই ফিরে আসা উচিত :

$ ./challenge 100
48,124

বিধি

এটি কোড-গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড, প্রতিটি ভাষায় জয়।


4
এই ক্রমটি কি কেবলমাত্র nবিভাজকের যোগফল ? আপনি সম্ভবত এটি স্পষ্টভাবে বলতে চাইবেন।
মার্টিন এন্ডার

3
এছাড়াও, আপনার "প্রত্যাশিত আউটপুট" বিচার করে আপনি উভয়ই চান n এবং f(n) তবে আপনি নির্দিষ্টকরণে কোথাও এটি বলেন না।
মার্টিন ইন্ডার

2
বোনাসগুলি খারাপ , বিশেষত যখন তারা অস্পষ্ট থাকে। এটিকে হ্রাস করা থেকে রক্ষা করার জন্য আমি এটিকে সরিয়ে নেওয়ার সিদ্ধান্ত নিয়েছি।
মিঃ এক্সকোডার

2
আপনি কি আবার পরীক্ষা করতে পারেন f(1000) = 48? এর ভাজক সমষ্টি 48হল124
caird coinheringaahing

3
উত্তর গ্রহণের আগে কমপক্ষে এক সপ্তাহ অপেক্ষা করা ভাল, অন্যথায় আপনি নতুন সমাধানগুলি নিরুৎসাহিত করতে পারেন।
Zgarb

উত্তর:


8

ব্র্যাচল্যাগ , 9 বাইট

∧;S?hf+S>

এই প্রোগ্রামটি "আউটপুট ভেরিয়েবল" থেকে ইনপুট নেয় .এবং "ইনপুট ভেরিয়েবল" এ আউটপুট দেয় ?এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

∧;S?hf+S>
∧;S        There is a pair [N,S]
   ?       which equals the output
    h      such that its first element's
     f     factors'
      +    sum
       S   equals S,
        >  and is greater than the input.

অন্তর্নিহিত পরিবর্তনশীল N ক্রমবর্ধমান ক্রমে গণনা করা হয়, সুতরাং এর সর্বনিম্ন আইনি মানটি আউটপুটটির জন্য ব্যবহৃত হয়।


10

জেলি , 18 12 11 10 বাইট

1Æs>¥#ḢṄÆs

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

-1 বাইট ধন্যবাদ মিঃ এক্সকোডারকে !

কিভাবে এটা কাজ করে

1Æs>¥#ḢṄÆs - Main link. Argument: n (integer)
1   ¥#     - Find the first n integers where...
 Æs        -   the divisor sum
   >       -   is greater than the input
       Ṅ   - Print...
      Ḣ    -   the first element
        Æs - then print the divisor sum

আপনি কেন ব্যাখ্যা করতে পারবেন কেন 1প্রয়োজনীয় এবং কীভাবে ¥কাজ করে?
dylnan

1
@ অল্লান দ্য 1 টি গণনা শুরু করতে 1বলে #এবং ¥পূর্বের দুটি লিঙ্কগুলি ( Æsএবং >) নেয় এবং এগুলি একটি ডায়াড হিসাবে প্রয়োগ করে (অর্থাত্ দুটি যুক্তি সহ), বাম যুক্তিটি পুনরাবৃত্তি এবং ডান যুক্তিটি ইনপুট।
২৩

ওহ, এটি এখন উপলব্ধি করে। #কিছু ক্ষেত্রে আগে আমার কাছে কিছুটা বিভ্রান্তি ছিল।
dylnan

4

ওল্ফ্রাম ভাষা (গণিত) , 53 বাইট

{#,f@#}&@@Select[Range[x=#]+1,(f=Tr@*Divisors)@#>x&]&

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

2 এবং x + 1 এর মধ্যে সমস্ত মান চেষ্টা করে, যেখানে x ইনপুট।

( Selectসমস্ত কাজ করে এমন মানগুলির একটি তালিকা প্রত্যাবর্তন করে তবে ফাংশনটি {#,f@#}&এগুলিকে ইনপুট হিসাবে গ্রহণ করে এবং তারপরে প্রথমটি বাদে তার সমস্ত ইনপুট উপেক্ষা করে))



4

হুশ , 12 11 বাইট

§eVḟ>⁰moΣḊN

-1 বাইট, @ জগারবকে ধন্যবাদ!

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


চতুর! অদ্ভুত যদিও কীভাবে ,কাজ করে না (বা অনুমানটি খুব বেশি সময় নেয়?)।
ბიმო

এটি কোনও ধরণের অনুমান করে তবে অসীম তালিকার বাইরে চলে। এটি argument এর ওভারলোডিংয়ের কারণে ঘটতে পারে যা দ্বিতীয় তর্ক হিসাবে পূর্ণসংখ্যার গ্রহণ করে তবে এটি কেবল অনুমান।
Zgarb


4

জাপট , 15 বাইট

[@<(V=Xâ x}a V]

চেষ্টা করে দেখুন


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U[]আমাদের অ্যারে আবরণ। প্রথম উপাদানটির জন্য, @ }aএমন একটি ফাংশন যা অবিচ্ছিন্নভাবে চালিত হয় যতক্ষণ না এটি সত্যবাদী মান প্রত্যাবর্তন করে, প্রতিটি সময় নিজেকে বাড়ানো পূর্ণসংখ্যার (০ থেকে শুরু করে) পাস করে এবং সেই সংখ্যার চূড়ান্ত মান আউটপুট করে। âবর্তমান পূর্ণসংখ্যা ( X) এর বিভাজক পায়, তাদের যোগফল xদেয় এবং ফলাফলটি পরিবর্তনশীলকে বরাদ্দ করা হয় V। চেয়ে কম <কিনা Uতা পরীক্ষা করে দেখুন V। অ্যারেতে দ্বিতীয় উপাদানটি ঠিক তখন V


4

ক্লোজার , 127 বাইট

(defn f[n](reduce +(filter #(zero?(rem n %))(range 1(inc n)))))
(defn e[n](loop[i 1 n n](if(>(f i)n){i,(f i)}(recur(inc i)n))))

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

-স্টাইটবক্সকে -4 বাইটের জন্য ধন্যবাদ!



কয়েকটি বাইট সংরক্ষণ করার জন্য কিছু শ্বেতস্পেস সরানো যেতে পারে। এটি অনলাইন চেষ্টা করুন!
স্টেডিবক্স 23

এই ক্ষেত্রে reduceপ্রতিস্থাপন করা যেতে পারে apply, এছাড়াও বাক্যটি সিনট্যাক্সের eমাধ্যমে একটি বেনামী ফাংশন হিসাবে প্রকাশ করা যেতে পারে #(...), আপনার কোড গল্ফ এ নামকরণ করার দরকার নেই। #(=(rem n %)0)তুলনায় খাটো #(zero?(rem n %))। এবং মনে রাখবেন যে ,এটি শ্বেত স্থান, এবং এটি অনুসরণ করার সাথে সাথে এই ক্ষেত্রে সরিয়ে ফেলা যায় (, সুতরাং এটি সঠিকভাবে বিশ্লেষণ করা হবে।
নিকোনিহার

@ নিকোনিয়ার সহকর্মী ক্লোজিস্টের সাথে দেখা করে ভাল লাগছে, আমি খুব শীঘ্রই এই পোস্টটি সম্পাদনা করব
অ্যালোনোকি

3

রুবি , 58 বাইট

সম্পূর্ণ প্রোগ্রাম কারণ আমি নিশ্চিত না যে ল্যাম্বডাসের অনুমতি রয়েছে কিনা। / অসহায়তা

gets
$.+=1until$_.to_i.<v=(1..$.).sum{|n|$.%n<1?n:0}
p$.,v

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

ব্যাখ্যা

gets     # read line ($_ is used instead of v= because it cuts a space)
$.+=1    # $. is "lines read" variable which starts at 1 because we read 1 line
    until     # repeat as long as the next part is not true
$_.to_i  # input, as numeric
  .<v=   # is <, but invoked as function to lower operator prescedence
  (1..$.)        # Range of 1 to n
  .sum{|n|       # .sum maps values into new ones and adds them together
     $.%n<1?n:0  # Factor -> add to sum, non-factor -> 0
  }
p$.,v    # output n and sum

3
লাম্বদাস অবশ্যই অনুমোদিত।
জিউসেপ

3

জাভাস্ক্রিপ্ট (ES6), 61 58 বাইট

f=(n,i=1,s=j=0)=>j++<i?f(n,i,i%j?s:s+j):s>n?[i,s]:f(n,++i)
<input type=number min=0 oninput=o.textContent=f(this.value)><pre id=o>

সম্পাদনা: @ আরনাউল্ডকে 3 বাইট সংরক্ষণ করা হয়েছে


আমি "স্ক্রিপ্ট ত্রুটি" পেয়েছি। 545 এর উপরে কোনও মান ইনপুট করার সময়
স্টাডলিজেআর

সাফারি ব্যবহার করার চেষ্টা করুন; স্পষ্টতই এটি টেল কল অপটিমাইজেশন সমর্থন করে। (অথবা আপনি যদি এটিগুলি সন্ধান করতে পারেন তবে Chrome এর কিছু সংস্করণ এটিকে "পরীক্ষামূলক জাভাস্ক্রিপ্ট বৈশিষ্ট্যগুলি" এর মাধ্যমে সক্ষম করে))
নীল

3

05 এ বি 1 , 11 বাইট

>LʒÑO‹}нDÑO

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

মেটা sensকমত্য অনুযায়ী অনুমোদিত হিসাবে স্ট্যাকের আউটপুট ছেড়ে দেয় । আমি )ভিজ্যুয়ালাইজেশনের স্বার্থে যুক্ত করেছি , তবে প্রোগ্রামটিও স্পষ্টতই স্ট্যাকের শীর্ষস্থানটি মুদ্রণ করে।





2

এমএটিএল , 12 বাইট

`@Z\sG>~}@6M

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

ব্যাখ্যা

`      % Do...while
  @    %   Push iteration index (1-based)
  Z\   %   Array of divisors
  s    %   Sum of array
  G    %   Push input
  >~   %   Greater than; logical negate. This is the loop condition
}      % Finally (execute on loop exit)
  @    %   Push latest iteration index
  6M   %   Push latest sum of divisors again
       % End (implicit). Run new iteration if top of the stack is true
       % Display stack (implicit)

2

গাইয়া , 11 বাইট

dΣ@>
↑#(:dΣ

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

মেটা sensকমত্য অনুযায়ী অনুমোদিত হিসাবে স্ট্যাকের আউটপুট ছেড়ে দেয় । আমি €.ভিজ্যুয়ালাইজেশনের স্বার্থে যুক্ত করেছি , তবে প্রোগ্রামটিও স্পষ্টতই স্ট্যাকের শীর্ষস্থানটি মুদ্রণ করে।




2

ফ্যাক্টর , 88

USE: math.primes.factors [ 0 0 [ drop 1 + dup divisors sum pick over > ] loop rot drop ]

নিষ্ঠুর বল অনুসন্ধান। এটি একটি উদ্ধৃতি (ল্যাম্বদা), callএটি xস্ট্যাক, পাতাগুলি nএবং f(n)স্ট্যাকের সাথে।

একটি শব্দ হিসাবে:

: f(n)>x ( x -- n f(n) )
  0 0 [ drop 1 + dup divisors sum pick over > ] loop rot drop ;

2

পাইথন 3, 163 বাইট

def f(x):
    def d(x):return[i for i in range(1,x+1) if x%i==0]
    return min(i for i in range(x) if sum(d(i)) >x),sum(d(min(i for i in range(x) if sum(d(i)) >x)))

3
হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম; প্রথম প্রথম পোস্ট! গল্ফিং দিক থেকে, আপনি হোয়াইটস্পেস সরিয়ে, ল্যাম্বডা ফাংশন ব্যবহার করে, সমস্ত কিছুকে এক লাইনে ভেঙে ফেলে এবং নিজেকে পুনরাবৃত্তি না করে কিছু বাইট সংরক্ষণ করতে পারেন। আমরা সাধারণত একটি অনলাইন পরীক্ষার পরিবেশের সাথে লিঙ্ক করি যেমন উদাহরণস্বরূপ টিআইও (১০ 105 বাইট , উপরে বর্ণিত কৌশলগুলি ব্যবহার করে))
জোনাথন ফ্রেচ

@ জোনাথনফ্রেচ: দুর্দান্ত মন্তব্য। সাধারণভাবে এবং noobবিশেষত নুবিদের সাথে আপনার ধৈর্যের জন্য ধন্যবাদ ;)
এরিক ডুমিনিল

2

পাইথন 3 , 100 বাইট

d=lambda y:sum(i+1for i in range(y)if y%-~i<1)
f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j))

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

জনাথন ফ্রেচকে ধন্যবাদপূর্ববর্তী অজগর 3 প্রয়াস সম্পর্কে মন্তব্যকে , আমি পাইথন সিনট্যাক্স সম্পর্কে আমার জ্ঞানটি কেবলমাত্র প্রসারিত করেছি। আমি কখনও ভাবিনি - + i i 1 ট্রিক, যা দুটি চরিত্র সংরক্ষণ করে।

তবে, উত্তরটি 1) ন্যূনতম নয় এবং 2) x = 1 এর জন্য কাজ করে না (বেনিফিটের জন্য যাওয়ার সময় তৈরি করা সহজ যা একটি সহজ ত্রুটির কারণে; আমি প্রত্যেককে এই প্রান্তের জন্য তাদের উত্তরগুলি পরীক্ষা করার পরামর্শ দিই কেস!)।

দ্রুত ব্যাখ্যা: sum(i+1for i in range(y)if y%-~i<1)সমান sum(i for i in range(1,y+1)if y%i<1)তবে দুটি অক্ষর সংরক্ষণ করে। মিঃ ফ্র্যাচকে আবার ধন্যবাদ Thanks

d=lambda y:sum(i+1for i in range(y)if y%-~i<1) সুতরাং y এর বিভাজকগুলি প্রদান করে।

f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j))আমি সত্যিই কাজ যেখানে যেখানে। যেহেতু একটি টিপল অভিধান ক্রমের সাথে কাজ করে, আমরা জে, ডি (জে) এর সাথে তুলনামূলক সহজেই তুলনা করতে পারি যতই আমরা জে তুলনা করতে পারি, এবং এটি আমাদেরকে ন্যূনতম জেটি খুঁজে পেতে, এটি একটি ভেরিয়েবলের মধ্যে সঞ্চয় করতে এবং / তারপরে / গণনা করতে দেয় না একটি পৃথক অপারেশন tuple। এছাড়াও, আমাদের <=, না <, ইন থাকতে হবে x<=d(j), কারণ ডি (1) 1 হয় তাই x 1 হলে আপনি কিছুই পান না। এটি আমাদের প্রয়োজন range(x+1)এবং না কেন এটিওrange(x)

আমি আগে টিপলটি ফিরিয়ে দিয়েছি, তবে তারপরে আমাকে এফ সাবস্ক্রিপ্ট করতে হবে, যাতে আরও তিনটি অক্ষর লাগে।


1
সাইটে স্বাগতম এবং প্রথম প্রথম পোস্ট। বেনামে ফাংশনগুলি এখানে নিখুঁতভাবে গ্রহণযোগ্য হিসাবে অপসারণ করে আপনি 98 বাইট পেতে পারেন f=!
21

আপনি কোডের অন্য লাইন থেকে বেনামে ফাংশনটি কল করতে পারবেন না, সমস্যা - ফাংশনটি কাজ করে তা পরীক্ষা করার জন্য আমার কাছে একটি পৃথক মুদ্রণ (চ (100)) বিবৃতি রয়েছে।
মাইকেল বোগার

এখানে সমস্যা নেই। এটি পুরোপুরি গ্রহণযোগ্য এবং f=আপনার বাইট গণনাটি অন্তর্ভুক্ত না করার জন্য কাজ করে এবং পাইথনের গল্ফ করার ভাল উপায়। পরীক্ষা করে দেখুন এই পাইথন আরও golfing টিপসের জন্য!
কেয়ার্ড কোইনারিংহিংহ

হুঁ। আমি যোগ করে আমার জমা সমান করতে পারি, তবে এর চেয়ে ভাল নাq=range এবং প্রতিস্থাপন rangeসঙ্গে qউভয় বিদ্যমান স্থানেই। দুঃখের বিষয়, এটি এর উন্নতি করে না এবং যেহেতু ল্যাম্বদা একটি মূলশব্দ তাই আমি এটির জন্য এটি ব্যবহার করতে পারি না, তাই আমাকে খুব বেশি অক্ষর নষ্ট করার কৌশলগুলি করতে হবে।
মাইকেল বোগার

@ মিশেলবোগার ওয়েল, আপনি পাইথনে একটি বেনামে কল করতে পারেন ; লাম্বদা এক্সপ্রেশন একটি ভেরিয়েবলের জন্য বরাদ্দ করা হবে না।
জোনাথন ফ্রেচ 16

2

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

def f(n):
 a=b=0
 while b<n:
	a+=1;i=b=0
	while i<a:i+=1;b+=i*(a%i<1)
 return a,b

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



দুটি স্পেসের সাথে ট্যাবগুলি প্রতিস্থাপনটি অজগর 3 এ 83 বাইটে এই কাজটি করে, যদিও এটি চেষ্টা করার জন্য আমাকে প্রিন্ট স্টেটমেন্টে প্রথম বন্ধনী লিখতে হয়েছিল। আপনি মুদ্রণ বিবৃতি দিয়ে রিটার্নের বিবৃতিও প্রতিস্থাপন করতে পারেন এবং এটি মুদ্রণের জন্য সহায়ক ফাংশন প্রয়োজন হয় না; বাইটগুলি একই থাকে।
মাইকেল বোগার



0

Clojure, 102 বাইট

#(loop[i 1](let[s(apply +(for[j(range 1(inc i)):when(=(mod i j)0)]j))](if(> s %)[i s](recur(inc i)))))

0

পিএইচপি, 69 বাইট

for(;$argv[1]>=$t;)for($t=$j=++$i;--$j;)$t+=$i%$j?0:$j;echo$i,',',$t;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.