যোগফল (সর্বাধিক) 5 টি প্রাইম


16

টেরেন্স টাও সম্প্রতি গোল্ডবাচের অনুমানের একটি দুর্বল রূপ প্রমাণ করলেন ! এর শোষণ করা যাক!

একটি বিজোড় পূর্ণসংখ্যা দেওয়া হয়েছে n > 1, n5 টি পর্যন্ত প্রাথমিকের যোগফল হিসাবে লিখুন । আপনার পছন্দ মতো ইনপুট নিন এবং আপনি চান তবে আউটপুট দিন। উদাহরণ স্বরূপ,

def g(o):
    for l in prime_range(o+1):
        if l == o:
            return l,
        for d in prime_range(l+1):
            for b in prime_range(d+1):
                if l+d+b == o:
                    return l,d,b
                for c in prime_range(b+1):
                    for h in prime_range(c+1):
                        if l+d+b+c+h == o:
                            return l,d,b,c,h

সেজ কোড যা ইনপুট হিসাবে একটি পূর্ণসংখ্যা নেয় এবং সংখ্যার আউটপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা প্রদান করে n। তাওর উপপাদ্য দ্বারা, এটি সর্বদা শেষ হবে!

ইনপুট

একটি বিজোড় পূর্ণসংখ্যার n। কীভাবে ইনপুট নেবেন তা আপনি সিদ্ধান্ত নেন তবে এটি যদি অদ্ভুত হয় তবে এটি ব্যাখ্যা করুন।

আউটপুট

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

স্কোরিং

এটি কোড গল্ফ, ক্ষুদ্রতম বাইট গণনা জয়।

বোনাস! যদি 'গোল্ডব্যাচ' শব্দটি আপনার প্রোগ্রামের একটি উপসর্গ হিসাবে উপস্থিত হয় (অগত্যা ধারাবাহিকভাবে নয়; কেবল ক্রমানুসারে। ক্ষেত্রে কোনও ব্যাপার নেই) আপনার 8 টি পয়েন্ট বিয়োগ করে। উপরের কোডটি এর একটি উদাহরণ।


প্রথম সংখ্যাটি যাচাই করতে, বিজোড় পূর্ণসংখ্যা> 1, 3 হয়। কোন যোগফলের 3 টি উত্পাদন করে? আমি কি সুস্পষ্ট দেখতে পাচ্ছি না?
ব্যবহারকারী অজানা

'সুস্পষ্ট' ভাষাগত। যেহেতু 3 টি প্রধান, এটি 1 প্রাথমিকের যোগফল। স্মার্টাস প্রতিক্রিয়া: কনওয়ে বলবে যে 3 হ'ল সমষ্টি 7 + (-1) + (-1) + (-1) + (-1)।
বুথবি

একক মান যোগফল নয়। আমি নেতিবাচক মানগুলির পরিবর্তে মান> 3 দিয়ে শুরু করার পরামর্শ দেব।
ব্যবহারকারী অজানা

1
একটি একক মান একটি যোগফল। নেতিবাচক মান সম্পর্কে মন্তব্যটি একটি স্মার্টাস মন্তব্য ছিল, যেমনটি স্পষ্টভাবে উল্লেখ করা হয়েছে।
বুথবি

2
"সাবস্ট্রিং (অগত্যা পরপর নয়; শুধু অনুক্রমে ...)" এটি একটি বলা হয় subsequence
জোয়ে অ্যাডামস

উত্তর:


3

জে , 29

(#~y=+/@>),{5$<0,p:i._1 p:>:y

ধরে নিই ইনপুট রয়েছে y। প্রকাশের মান হ'ল 5 প্রাইম বা 0 এর সমষ্টি অনুসারে তালিকার বাক্সগুলির তালিকা y

   y =। 16
   (# ~ y = + / @>), {5 $ <0, পি: i._1 পি:> y
+ + ---------- ---------- + + + + ---------- ---------- + + + + ----- ----- + + --------- + + ---------- + + ---------- + + ---------- - --------- + + ---------- + + ---------- + + ---------- + + ------- - + + --------- + + ---------- + + ---------- + + ---------- + + ---- ------ + + ---------- + + ---------- + + ---------- + + --------- + + ------...
| 0 0 0 3 13 | 0 0 0 5 11 | 0 0 11 11 | 0 0 13 13 | 0 0 2 3 11 | 0 0 2 7 7 | 0 0 2 11 3 | 0 0 3 0 13 | 0 0 3 2 11 | 0 0 11 11 | 0 0 3 13 0 | 0 0 5 0 11 | 0 0 5 11 0 | 0 0 7 2 7 | 0 0 7 7 2 | 0 0 11 0 5 | 0 0 11 2 3 | 0 0 11 3 2 | 0 0 11 5 0 | 0 0 13 0 3 | 0 0 13 3 0 | 0 2 0 3 11 | 0 2 0 7 7 | 0 2 0 ...
+ + ---------- ---------- + + + + ---------- ---------- + + + + ----- ----- + + --------- + + ---------- + + ---------- + + ---------- - --------- + + ---------- + + ---------- + + ---------- + + ------- - + + --------- + + ---------- + + ---------- + + ---------- + + ---- ------ + + ---------- + + ---------- + + ---------- + + --------- + + ------...

কোনও বোনাস পয়েন্ট অর্জনের জন্য পর্যাপ্ত অক্ষর নেই।


সুন্দরভাবে সম্পন্ন! আমি মনে করি এই চ্যালেঞ্জের সময় কোনও ভাষা জেকে পরাজিত করতে পারে না।
ক্রিশ্চিয়ান লুপাস্কু

8

গণিত , 38

IntegerPartitions[n,5,Prime~Array~n,1]

WA এর মাধ্যমে কোনও উপায় খুঁজে
পাচ্ছে না

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

কল্পনা করুন যে IntegerPartitionsফাংশনটির নাম দেওয়া হয়েছিল Goldbach...;)
ক্রিশ্চিয়ান লুপাস্কু

@ w0lf তবুও, এটি জে> _> এর চেয়ে 1 বেশি হবে
রিক্সিয়াস

@ রিক্সিয়াস নং, এটি 21 এর চেয়ে কম স্কোর করবে , জে এর চেয়ে 8 কম
মিঃ উইজার্ড

8

সি, 192-8 = 184 অক্ষর

ধারাবাহিকভাবে "গোল্ডব্যাচ" এবং (বিরামচিহ্ন বাদ দিয়ে) এবং "তাও" রয়েছে।
যখন সমষ্টি কম 5 মৌলিক (অর্থাত সবসময়), কপি করে প্রিন্ট শূন্য (16 = হয় 0+0+0+3+13)
পড়ুন মান ইনপুট থেকে সংখ্যা: echo 30 | ./prog

#define T(x)for(x=0;x<=s;b=&x,c(++x))
G,o,l,d,*b,a;c(h)
{(*b-1?h<3:++*b)||c(*b%--h?h:++*b);}
main(s){
    scanf("%d",&s);
    T(G)T(o)T(l)T(d)T(a)o+G+l+d+a-s?0:exit(printf("%d+%d+%d+%d+%d\n",G,o,l,d,a));
}

পুরানো সংস্করণ (১9৯ টি অক্ষর), যা কেবলমাত্র 5 টি মৌলিক সংখ্যার সন্ধান করতে পারে (এবং তাই x <10 এর জন্য ব্যর্থ হয়):

#define T(x)for(x=2;x<s;b=&x,c(++x))
G,o,l,d,*b,a;c(h)
{h<3||c(*b%--h?h:++*b);}
main(s){
    scanf("%d",&s);
    T(G)T(o)T(l)T(d)T(a)o+G+l+d+a-s?0:exit(printf("%d+%d+%d+%d+%d\n",G,o,l,d,a));
}

ব্যাখ্যা: পরবর্তী প্রধানের সাথে
cসেট *bকরে ( *bএটি যদি প্রধান হয় তবে তা অন্তর্ভুক্ত )।
Tলুপের জন্য একটি তৈরি করে, যা G,o,l,d,aপরের মূলটিতে চলকগুলির একটিকে অগ্রসর করে।
লুপগুলির জন্য সকলের মধ্যে আমরা যোগফলটি মেলে কিনা তা যাচাই করে নিই এবং প্রিন্ট করে যদি তা হয় তবে প্রস্থান করুন।


4
G,o,l,d,*b,a;c(h)একটি সুন্দর স্পর্শ!
জোয়েল করনেট

এটি n = 3
বুথবি

@ বুথবি, আপনি ঠিক বলেছেন, এটি কেবলমাত্র 5 টি প্রাইম খুঁজে পেয়েছে, কম নয়।
ugoren

ব্যবহারকারী_ অজ্ঞাত এর জন্য একটি ভাল সমাধান রয়েছে: যোগফলের জন্য শূন্যের প্রধান বিবেচনা করুন
বুথবি

@ বুথবি, পরিবর্তিত আমার চেয়ে আমার চেয়ে বেশি ব্যয় করা উচিত, কারণ আমার যুক্তি স্বাভাবিকভাবেই 1 জনকে প্রধান হিসাবে বিবেচনা করে এবং 0 দিয়ে শুরু করার সময় আমাকে এড়িয়ে যাওয়া দরকার।
উগ্রোরেন

6

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

~+.ṗᵐl≤5∧

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

~+.          Output (.) should sum to the input,
   ṗᵐ        consist of all primes,
     l≤5     and have length ≤ 5.
        ∧    (Don't unify that 5 with the implicit output variable.)

1
অর্ডার পরিবর্তন করে আপনি একটি বাইট সংরক্ষণ করতে পারেন । এছাড়াও নোট করুন যে প্রশ্নটি বলেছে যে ইনপুটটি বিজোড়
H.PWiz

1
@ H.PWiz আর মত অন্য একটি এই
এরিক আউটগল্ফার

4

রুবি 138 124 117 - 8 = 109

require'mathn'
def g(o,l=[])
p l if l.inject(:+)==o#db
(l.last||1..o).each{|d|d.prime?and g(o,l+[d])if l.count<5}
end

সাথে কল g(<number>)। নমুনা আউটপুট:

[2, 2, 2, 2, 19]
[2, 2, 3, 3, 17]
[2, 2, 3, 7, 13]
...

পরীক্ষা: http://ideone.com/rua7A


1
শুধু নির্বাণ #dbলাইন 3 বোনাসের জন্য যথেষ্ট হবে: আপনি পাবেন achথেকে .each
ইলমারি করোনেন

1
'স্থির আউটপুট ফর্ম্যাট' বলতে কী বোঝ? এটি সম্পূর্ণরূপে উন্মুক্ত - আপনি যদি চান তবে স্থানগুলিকে নিক্স করতে পারেন।
বুথবি

@ ইলমারি কারোনেন দুর্দান্ত টিপ! আমি আমার পোস্ট সম্পাদনা করেছি। ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

@ বুথবি এটি দেখার জন্য আপনাকে ধন্যবাদ। আমি নমুনা আউটপুট দেখেছি এবং এটি একটি প্রয়োজন বলে মনে করি। আমি এখন দেখছি যে আউটপুট ফর্ম্যাট খোলা আছে। আপডেট করা হয়েছে।
ক্রিশ্চিয়ান লুপাস্কু

2

পিএইচপি 143 122 - 8 = 114

সম্পাদনা: আউটপুটটিতে কয়েকটি বাইট সংরক্ষণ করা হয়েছে, সুস্পষ্ট ফাংশন কলটি সরিয়েছে।

<?function g($o,$l,$d,$b){for(;$o>=$b=gmp_intval(gmp_nextprime(+$b));)echo$b^$o?$l<4&&g($o-$b,$l+1,"$d$b,",$b-1):"$d$b
";}

Unrolled:

<?
function g($o,$l,$d,$b){
  for(;$o>=$b=gmp_intval(gmp_nextprime(+$b));)
    echo$b^$o?$l<4&&g($o-$b,$l+1,"$d$b,",$b-1):"$d$b
";}

এর @g(<number>);জন্য নমুনা আউটপুট সহ কল ​​করুন n=27:

2,2,2,2,19
2,2,3,3,17
2,2,3,7,13
2,2,5,5,13
2,2,5,7,11
2,2,23
2,3,3,19
2,3,5,17
2,3,11,11
2,5,7,13
2,7,7,11
3,3,3,5,13
3,3,3,7,11
3,3,5,5,11
3,3,7,7,7
3,5,5,7,7
3,5,19
3,7,17
3,11,13
5,5,5,5,7
5,5,17
5,11,11
7,7,13

হুম ... আপনার জমা দেওয়া কোডটি কাজ করছে বলে মনে হচ্ছে না। আপনি ~õ;}শেষে একটি মজাদার জিনিস পেয়েছেন ...
বুথবি

~ õ (chr (245)) "\ n" এর জন্য শর্টহ্যান্ড। এই উদাহরণস্বরূপ, এটি আসলে প্রয়োজনীয় নয়। আমি সমাধান থেকে এটি অপসারণ করব।
primo

কোড এন = 3 এর জন্য ব্যর্থ।
বুথবি

@ বুথ্বই আমি বিশ্বাস করি না এটি করে। এন = 3 এর জন্য, এটি 3 নম্বর আউটপুট দেয় এবং তারপরে সমাপ্ত হয় (যেহেতু প্রাইমের কোনও যোগফল 3 নেই)। আপনি এটির উত্পাদন আশা করছিলেন কি?
প্রিমো

আমি কোন আউটপুট দেখতে পাচ্ছি না। 5, 7, 9, 11. জন্য দুর্দান্ত কাজ করে ide আদর্শone.com/cMNR8 এছাড়াও, আপনি ফাংশনটি সংজ্ঞায়িত করতে এবং কল না করার জন্য নির্দ্বিধায় নোট করুন।
বুথবি

2

রুবি 2 -rmathn, 66 বাইট - 8 = 58

g=->o,*l{o==l.reduce(:+)?p(l):l[5]||b=Prime.each(o){|x|g[o,*l,x]}}

গল্ফওয়াল্ফের উত্তরের উপর ভিত্তি করে ভারী, তবে এটি 6 বছর বয়সী থেকে আমি নিতপিকিংয়ের পরিবর্তে নিজের পোস্ট করতে চলেছি। প্রযুক্তির অগ্রগতিতে হস্তযুক্ত ল্যাম্বদা অন্তর্ভুক্ত রয়েছে, বিনামূল্যে এর reduceপরিবর্তে 5 এর পার্টিশনে থামার একটি নিখুঁত উপায় এবং যা সমস্ত প্রাইমের চেয়ে কম বা সমান (এবং একটি উপস্থাপন করে ) এর উপরে পুনরাবৃত্তি করে । সম্ভবত আরও 6 বছরে আরও ভাল উপায় ব্যবহার করার উপায় থাকবে ।injectdPrime.each(o)oachb


1

স্কালা 137-8 = 129

def g(o:Int)={val l=0+:(2 to o).filterNot(d=>(2 to d-1).exists(d%_==0))
for(b<-l;a<-l;c<-l;h<-l;e<-l;if(b+a+c+h+e==o))yield{(b,a,c,h,e)}}

বুথবাইয়ের ইঙ্গিতের পরে: একটি ফাংশন কলকে নির্মূল করে, 3 কে 3 এর যোগফল এবং কিছুই হিসাবে ব্যাখ্যা করতে দেয় না, আউটপুট থেকে ইনপুট সরিয়ে দেয় - আরও 20 টি অক্ষর সংরক্ষণ করে।

জোর দেওয়া বোনাস:

Def g (o : Int) = {val l = 0 + :( 2 to o) .filterNot ( d => (2 থেকে d-1)। উপস্থিতি (d% _ == 0)) এর জন্য (b <-l ; a <-l; c <-l; h <-l; e <-l; যদি (বি + এ + সি + এইচ + ই == ও)) ফলন {( খ, এ, সি, এইচ , ই) }}

অনুরোধ এবং ফলাফল:

println (l(17)) 
Vector((17,0,0,2,2,13), (17,0,0,2,13,2), (17,0,0,3,3,11), ...

প্রতিটি তালিকার x পর্যন্ত যোগফল আউটপুটটি পুনরাবৃত্তি করে এবং তারপরে 5 টি যোগফল দেখায়। নিখরচায় সমমানের জন্য 0, যেমন 2 + 2 + 13।

Ungolfed:

// see if there is some x, such that o%x is 0.
def dividable (o:Int) = (2 to o-1).exists (x=> o % x == 0)

// +: is a kind of cons-operator for Vectors
def primelist (d: Int) = {
  val s = 0 +: (2 to d).filterNot (b => dividable (b))
  for (a <- s;
    b <- s;
    c <- s;
    h <- s;
    e <- s;
    if (a+b+c+h+e == d)) yield {(a,b,c,h,e)}
}

আমি স্কালার সাথে পরিচিত নই। এটি কিভাবে বলা হয়? আপনি আদর্শের ডটকমকে একটি কাজের উদাহরণ পোস্ট করতে পারেন ?
বুথবি

আপনি এটিকে কেবল সহজ- স্কালায় কার্যকর করেন কারণ আইডিওনের চেয়ে কম বয়লারপ্লেটের প্রয়োজন। অনুরোধের println (l(17))জন্য, উদাহরণস্বরূপ। আউটপুটটি সাধারণত দেখতে লাগে Vector((17,0,0,2,2,13), (17,0,0,2,13,2), (17,0,0,3,3,11)এবং এর অর্থ: 17 টি যোগফল করতে হয়, এবং যোগফলগুলি 0, 0 হয় (শূন্যের অর্থ যোগানের অনুপস্থিতি) 2 + 2 + 13। কেবল স্কালার লিঙ্কটি ইতিমধ্যে
ব্যবহারকারী অজ্ঞাত

শীতল ধন্যবাদ! দেখে মনে হচ্ছে আপনি কয়েকটি অক্ষর সংরক্ষণ করতে পারেন: yield{(d,a,...-> yield{(a,...এবং সংজ্ঞা প্যাকিং দ্বারা gমধ্যে filterNot(...)। যাহোক. এটি এন = 3 এর জন্য ব্যর্থ।
বুথবি

কি (2 to d)পরিবর্তে (2 to d-1), কিন্তু আমি একমত না যে 3 3. এর সমষ্টি আপনি একটি সেট আপ করুন যোগফল পারেন, হ্যাঁ, এটা একটি খালি সেট, অথবা এক সংখ্যা গঠিত নির্ধারণ করা যাবে। তবে এমন একটি পরিমাণ তৈরি করা যা এনের দিকে নিয়ে যায় - আমি কেবল প্রতিবাদে আমার কোডটি পরিবর্তন করি।
ব্যবহারকারী অজানা

আপনার উত্তর সংক্ষিপ্ত করতে আপনার বাধা অস্বীকার যতটা মহৎ হতে পারে, আপনার উত্তরটি আপনার উত্তরকে ক্ষুন্ন করে। আপনি যার যোগফলের তালিকাগুলি ফিরিয়ে দিচ্ছেন 3। এরকম একটি হওয়া উচিত (0,0,0,0,3)
বুথবি

1

মুপাড 113 - 8 = 105

g:=[0,ithprime(i)$i=1..n]:f:=_for_in:f(l,g,f(d,g,f(b,g,f(a,g,f(c,g,if l+d+b+a+c=n then print(l,d,b,a,c)end)))))

এই সংস্করণটি প্রতিটি সমাধানের সমস্ত অনুমতি প্রিন্ট করবে:

0, 0, 0, 0, 7
0, 0, 0, 2, 5
0, 0, 0, 5, 2
0, 0, 0, 7, 0
0, 0, 2, 0, 5
...

এবং হ্যাঁ, এটি একটি দীর্ঘ তালিকা তৈরি করে g। কে পাত্তা দেয়? :-)

অবরুদ্ধ সংস্করণ:

g:=[0].select([$1..n],isprime):
for l in g do
  for d in g do
    for b in g do
      for a in g do
        for c in g do
          if l+d+b+a+c=n then print(l,d,b,a,c); end;
        end
      end
    end
  end
end

আমার মুপাদে অ্যাক্সেস নেই - কেউ কি এটি কাজ করে তা পরীক্ষা করতে পারে?
বুথবি

1

জেলি , 19 বাইট (তবে খুব ধীর - পরামর্শ চেয়েছিল)

ÆR;0x5Œ!ḣ€5¹©S€i³ị®

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

ÆR;0x5Œ!ḣ€5¹©€i³ị®     main link, takes one argument N
ÆR                     get all the primes less than N
  ;0x5                 add zero, and then repeat the entire list 5 times
      Œ!               get all the permutations of this huge list (takes a long time!)
        ḣ€5            for each permutation, just take the first 5 numbers
                       (this gives us all possible length-5 combinations of the primes plus zero, with some repeats)
           ¹©          save that list to register
              S€       take the sum of every permutation in the list...
                i³     and find the index of our first argument N in that list of sums
                  ị®   then recall our list of permutations, and get the correct permutation at that index!

এটি দ্রুত এবং খাটো করার জন্য আপনার যদি কোনও ধারণা থাকে তবে দয়া করে আমাকে জানান!


1
12 বাইটṗЀ5দৈর্ঘ্যের এক থেকে পাঁচের মধ্যে প্রাইমের সমস্ত সংমিশ্রণ উত্পাদন করে। S=¥উপাদানগুলির মধ্যে একটির যোগফল চেইনের যুক্তির সমান এবং Ðfকেবল সেই উপাদানগুলিকেই রাখে কিনা তা পরীক্ষা করে। তালিকার একই স্তরে প্রাইমগুলির সমস্ত তালিকা রাখতে কেবল সেখানে রয়েছে
ডাইলানান

এখন 10 বাইট থেকে এবং Ƈজন্য alias লেখা হিসাবে যোগ করা হয়নি ЀএবংÐf
dylnan
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.