গুণের দ্বারা বাছাই করুন


34

আপনার এমন একটি প্রোগ্রাম বা ফাংশন লিখতে হবে যা ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দিয়েছে যাতে কঠোরভাবে বর্ধনশীল তালিকা তৈরি করার সম্ভাব্য ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যার সাথে প্রতিটি উপাদানকে গুণ করে।

উদাহরণস্বরূপ যদি ইনপুট হয়

5 4 12 1 3

গুণগুলি হবে

5*1=5 4*2=8 12*1=12 1*13=13 3*5=15

এবং আউটপুট ক্রমবর্ধমান তালিকা হবে

5 8 12 13 15

ইনপুট

  • কমপক্ষে 1 টি উপাদান যুক্ত ধনাত্মক পূর্ণসংখ্যার একটি তালিকা

আউটপুট

  • ধনাত্মক পূর্ণসংখ্যার একটি তালিকা

উদাহরণ

9 => 9
1 2 => 1 2
2 1 => 2 3
7 3 => 7 9
1 1 1 1 => 1 2 3 4
5 4 12 1 3 => 5 8 12 13 15
3 3 3 8 16 => 3 6 9 16 32
6 5 4 3 2 1 => 6 10 12 15 16 17
9 4 6 6 5 78 12 88 => 9 12 18 24 25 78 84 88
8 9 41 5 12 3 5 6 => 8 9 41 45 48 51 55 60
15 8 12 47 22 15 4 66 72 15 3 4 => 15 16 24 47 66 75 76 132 144 150 153 156

এটি কোড গল্ফ তাই সংক্ষিপ্ততম প্রোগ্রাম বা ফাংশন জিতে।

মজাদার ঘটনা: ইনপুটটির জন্য আউটপুটটির শেষ উপাদানটি A007952 সিকোয়েন্সের উপাদান N, N-1, ... ,1বলে মনে হয় । যদি আপনি কোনও প্রমাণ পান তবে আপনাকে এটি আপনার গল্ফ উত্তরে অন্তর্ভুক্ত করতে বা মন্তব্য হিসাবে পোস্ট করার জন্য আপনাকে স্বাগত জানানো হবে।(N+1)th


কেউ কি এখনও এই প্রমাণ ভিত্তিতে তৈরি করেছেন?
কনার ক্লার্ক

উত্তর:


20

জেলি , 6 5 বাইট

:‘×µ\

@ ডেনিস জেগে আমাকে মারধর করার আগে প্রথম জেলি উত্তর দিন। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

:          Integer division, m//n
 ‘         Increment, (m//n+1)
  ×        Multiply, (m//n+1)*n
   µ       Turn the previous links into a new monadic chain
    \      Accumulate on the array

-1 বাইটের জন্য @ ডেনিসকে ধন্যবাদ


4
:‘×µ\একটি বাইট সংরক্ষণ করে।
ডেনিস


9

জাভাস্ক্রিপ্ট (ES6), 28

@ পেট্রিক রবার্টসের পরামর্শ অনুসারে সম্পাদনাটিp একটি অবিশ্বাস্য পরামিতি হতে পারে। একই বাইট গণনা তবে একটি বৈশ্বিক চলক ব্যবহার করা এড়ানো

(a,p)=>a.map(n=>p=n*-~(p/n))

পরীক্ষা

f=(a,p)=>a.map(n=>p=n*-~(p/n))

console.log=x=>O.textContent+=x+'\n'

;[
[[9], [ 9]],
[[1, 2], [ 1, 2]],
[[2, 1], [ 2, 3]],
[[7, 3], [ 7, 9]],
[[1, 1, 1, 1], [ 1, 2, 3, 4]],
[[5, 4, 12, 1, 3], [ 5, 8, 12, 13, 15]],
[[3, 3, 3, 8, 16], [ 3, 6, 9, 16, 32]],
[[6, 5, 4, 3, 2, 1], [ 6, 10, 12, 15, 16, 17]],
[[9, 4, 6, 6, 5, 78, 12, 88], [ 9, 12, 18, 24, 25, 78, 84, 88]],
[[8, 9, 41, 5, 12, 3, 5, 6], [ 8, 9, 41, 45, 48, 51, 55, 60]],
[[15, 8, 12, 47, 22, 15, 4, 66, 72, 15, 3, 4], [ 15, 16, 24, 47, 66, 75, 76, 132, 144, 150, 153, 156]]
].forEach(t=>{
  var i=t[0],k=t[1],r=f(i),ok=(k+'')==(r+'')
  console.log(i + ' => ' + r + (ok?' OK':'FAIL expecting '+x))
})
<pre id=O></pre>


আমার মনে হয় আপনি আমার উত্তর যেমনটি করেছিলেন ঠিক তেমন মডুলো ব্যবহার করে আপনি কয়েকটি বাইট সঞ্চয় করতে পারবেন ।
16

আপনি কি পি = 0 এড়িয়ে যেতে পারবেন না? একাধিক তালিকাগুলিতে এটি একাধিক চালনার জন্য আপনার এটি দরকার তবে প্রশ্নটি কেবল একটি একক তালিকার জন্য
চার্লি ওয়াইন

1
@ চার্লিওয়াইন আপনি যদি কোনও ভেরিয়েবল আরম্ভ না করেন আপনি অপরিজ্ঞাত ভেরিয়েবলের জন্য ত্রুটি পাবেন। যদি সুযোগক্রমে ভেরিয়েবলটি ইতিমধ্যে বিদ্যমান থাকে (এটি সহজেই কোনও ওয়েব পৃষ্ঠার পরিবেশে ঘটতে পারে), এর কোনও ভুল মান থাকতে পারে।
edc65

@ edc65 যথেষ্ট নিশ্চিত, পি ইতিমধ্যে এই পৃষ্ঠায় সংজ্ঞায়িত করা হয়েছে!
চার্লি ওয়েন

1
আবার চিন্তা @PatrickRoberts, আমার এখনও globals এড়াতে পারে: f=a=>a.map(n=>a+=n-a%n,a=0)। তবে এটি আমার অ্যালগরিদম নয় (মূর্খ আমাকে) তাই আমি আমার যেমন রাখি
তেমনিভাবে

6

পাইথন 2, 67 64 বাইট

কোড-গল্ফিংয়ে প্রথমে চেষ্টা করুন, যাতে পরামর্শগুলি প্রশংসা করা হয়।

def m(l):
 for x in range(1,len(l)):l[x]*=l[x-1]/l[x]+1
 print l

হাই, আমি মনে করি আপনি লাইনটি প্রতি 2 বাইট হিসাবে (উইন্ডোজ ব্যবহার করে) হিসাবে গণনা করছেন তবে এই সাইটে আপনি প্রতিটি লাইনকে একক বাইট হিসাবে গণনা করছেন? সুতরাং আপনার স্কোর আসলে 65 বাইট হয়। (আপনি যদি নিশ্চিত না হন তবে আপনি নিজের কোডটি মোটেরেফ.ইন / বাইট-কাউন্টারে কপি এবং পেস্ট করতে পারেন)) এছাড়াও, অন্য কোনও বাইট সংরক্ষণ করার print lপরিবর্তে আপনি এটি করতে পারেন return l। সুন্দর কাজ!
mathmandan

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

সমস্যা নেই! বিটিডাব্লু, যেহেতু আপনি উল্লেখ করেছেন যে "টিপসের প্রশংসা করা হয়", আপনি কোডগলফ.স্ট্যাকেক্সেঞ্জের / প্রশ্নগুলি / ৫৪/২ এর মাধ্যমে ব্রাউজ করতে আগ্রহী হতে পারেন । উপভোগ করুন!
mathmandan

5

পিএইচপি, 55 46 42 41 বাইট

আইএসও 8859-1 এনকোডিং ব্যবহার করে।

for(;$a=$argv[++$i];)echo$l+=$a-$l%$a,~ß;

এটি চালান ( -dকেবল নান্দনিকতার জন্য যুক্ত):

php -d error_reporting=30709 -r 'for(;$a=$argv[++$i];)echo$l+=$a-$l%$a,~ß;' 10 10 8
  • ইসমাইল মিগুয়েলে 1 বাইট থেক্স সংরক্ষণ করা হয়েছে।
  • মেঝে পরিবর্তে মডুলো ব্যবহার করে 8 বাইট সংরক্ষণ করা হয়েছে
  • ইসমাইল মিগুয়েলে 4 বাইট THX সংরক্ষণ করা হয়েছে (পূর্বাবস্থার পরিবর্তে)
  • একটি জায়গা উত্পাদন করার জন্য একটি বাইট সংরক্ষণ করা।

আমি মনে করি যে আপনি প্রতিস্থাপন করতে পারেন $a+0সঙ্গে +$a। এছাড়াও, আপনি অনুমান করতে পারেন যে ইনপুট একটি হবে না 0, তাই, আপনি আপনার প্রতিস্থাপন করতে পারেন $a+0&&printকেবল সঙ্গে +$a&print। আসলে, আপনি এমনকি করতে পারেন $a&print, পিএইচপি থেকে "0" == 0 == 0.0 == false। তবে আপনি যদি কেবল একটি ব্যবহার করেন তবে এটির প্রয়োজন হবে না বলে echoআমি মনে করি।
ইসমাইল মিগুয়েল

বাইনারি andকাজ করবে না (যৌক্তিকতার বিপরীতে), না এইভাবে কাজ প্রতিধ্বনি করবে। যেহেতু আমি সি এল আই থেকে ইনপুট নিচ্ছি, প্রথম যুক্তিটি হ'ল -, আমি শূন্য প্রিন্ট করার পরিবর্তে ধরতে চাই। ব্যবহার করে দেখুন php -r 'print_r($argv);' foo। আপনার প্রথম পরামর্শের সাথে 1 বাইট সংরক্ষণ করা হয়েছে, যদিও।
aross

1
কীভাবে for(;$a=$argv[++$i];)echo$l+=$a-$l%$a,' ';? এটি 42 বাইট দীর্ঘ এবং প্রথম উপাদানটি এড়িয়ে যায়।
ইসমাইল মিগুয়েল

দুর্দান্ত এক, thx @
ইসমাইল

আপনাকে স্বাগতম. আপনি যদি সত্যিই অদ্ভুত হতে চান তবে স্থানটি প্রতিস্থাপন করতে পারবেন a^Aতবে এতে প্রচুর সতর্কতা ছড়িয়ে পড়বে (সতর্কতা অবহেলাযোগ্য)। এটি কোনও উপায়েই বাইকাউন্ট পরিবর্তন করবে না, তবে অবশ্যই এটি অন্যরকম দেখাচ্ছে।
ইসমাইল মিগুয়েল

4

হাস্কেল (30 28 25 বাইট)

scanl1(\x y->y*div x y+y)

প্রসারিত সংস্করণ

f :: Integral n => [n] -> [n]
f xs = scanl1 increaseOnDemand xs
 where
   increaseOnDemand :: Integral n => n -> n -> n
   increaseOnDemand acc next = next * (1 + acc `div` next)

ব্যাখ্যা

scanl1আপনাকে একটি তালিকা ভাঁজ করতে এবং সমস্ত মধ্যবর্তী মানগুলি অন্য তালিকায় জমা করতে সক্ষম করে। এটির একটি বিশেষত্ব scanl, যা নিম্নলিখিত ধরণের রয়েছে:

scanl  :: (acc  -> elem -> acc)  -> acc -> [elem] -> [acc]
scanl1 :: (elem -> elem -> elem) ->        [elem] -> [elem]

scanl1 f (x:xs) = scanl f x xs

অতএব, আমাদের কেবল একটি উপযুক্ত ফাংশন যা আমাদের তালিকার শেষ দুটি উপাদান ( accপ্রসারিত সংস্করণে) নেয় এবং আমরা প্রসেস করতে ইচ্ছুক একটি ( nextপ্রসারিত সংস্করণে) এবং একটি উপযুক্ত সংখ্যা ফেরত দেয়।

আমরা সহজেই পরবর্তী নম্বরটির মাধ্যমে সংযোজককে ভাগ করে ফলাফলটি মেঝে করে এই নম্বরটি অর্জন করতে পারি। divযে যত্ন নেয়। এরপরে, 1তালিকাটি আসলে বাড়ছে তা নিশ্চিত করার জন্য আমাদের কেবল যুক্ত করতে হবে (এবং এটি আমাদের শেষ হয় না 0)।


আপনার ফাংশনটির একটি নাম দেওয়ার দরকার নেই। আপনি এর ( ... )সাথে প্রতিস্থাপন করতে পারেন $ ...এবং আমি মনে করি আপনি একটি চূড়ান্ত নিউলাইন গণনা করেছেন যা বাদ দেওয়া যেতে পারে:, scanl1$\x y->y*div x y+y24 বাইট।
নিমি

@ নিমিমি: সত্যি? এক্সপ্রেশন গণনা? যে হচ্ছে বললেন, আমি যে কোনো বাইট সংরক্ষণ করবেন না (...)বনাম $সাল থেকে $\ অপারেটর হিসাবে পার্স পরার এবং আমি পরে একটি একক স্থান হবে $
জেটা

নামবিহীন ফাংশনটি ডিফল্টরূপে অনুমোদিত scanl1(...)হয় একটি নামবিহীন ফাংশন। সংক্রান্ত $বনাম (): আপনি ঠিক বলেছেন, আমার ভুল।
নিমি

4

সি ++, 63 60 57 বাইট

void s(int*f,int*e){for(int c=*f;++f!=e;c=*f+=c/ *f**f);}

একটি পরিসীমা দেওয়া জায়গায় জায়গায় কাজ করে [first, last)। মূলত টেম্পলেট বৈকল্পিক হিসাবে লেখা, তবে এটি দীর্ঘ ছিল:

template<class T>void s(T f,T e){for(auto c=*f;++f!=e;c=*f+=c/ *f**f);}

বর্ধিত সংস্করণ

template <class ForwardIterator>
void sort(ForwardIterator first, ForwardIterator last){
    auto previous = *first;

    for(++first; first != last; ++first){
        auto & current = *first;
        current += current * (current / previous);
        previous = current;
    }
}

3

সিজেম, 13 বাইট

q~{\_p1$/)*}*

সিজেএম-শৈলীর তালিকা হিসাবে ইনপুট। আউটপুট লাইনফিড পৃথক করা হয়।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

q~    e# Read and evaluate input.
{     e# Fold this block over the list (i.e. "foreach except first")...
  \   e#   Swap with previous value.
  _p  e#   Duplicate and print previous value.
  1$  e#   Copy current value.
  /   e#   Integer division.
  )*  e#   Increment and multiply current value by the result.
}*

চূড়ান্ত মানটি স্ট্যাকের উপর ছেড়ে যায় এবং শেষে স্বয়ংক্রিয়ভাবে মুদ্রিত হয়।


3

ম্যাথামেটিকাল, 36 32 বাইট

 #2(Floor[#1/#2]+1)&~FoldList~#&

পরীক্ষা

#2(Floor[#1/#2]+1)&~FoldList~#& /@ {{5, 4, 12, 1, 3}, 
   {15, 8, 12, 47, 22, 15, 4, 66, 72, 15, 3, 4}}
(* {{5, 8, 12, 13, 15}, {15, 16, 24, 47, 66, 75, 76, 132, 144, 
  150, 153, 156}} *)

3

পার্ল, 17 + 3 = 20 বাইট

$p=$_*=$==1+$p/$_

প্রয়োজনীয় -pএবং -lপতাকা:

$ perl -ple'$p=$_*=$==1+$p/$_' <<< $'15\n8\n12\n47\n22\n15\n4\n66\n72\n15\n3\n4'
15
16
24
47
66
75
76
132
144
150
153
156

ব্যাখ্যা:

# '-p' reads each line into $_ and auto print
# '-l' chomp off newline on input and also inserts a new line when printing
# When assigning a number to `$=` it will automatic be truncated to an integer
# * Added newlines for each assignment 
$p=
  $_*=
    $==
      1+$p/$_

3

পাইথন (3.5), 63 62 বাইট

def f(a):
 r=[0]
 for i in a:r+=i*(r[-1]//i+1),
 return r[1:]

পরীক্ষা

>>> print('\n'.join([str(i)+' => '+str(f(i)) for i in [[9],[1,2],[2,1],[7,3],[1,1,1,1],[5,4,12,1,3],[3,3,3,8,16],[6,5,4,3,2,1],[9,4,6,6,5,78,12,88],[8,9,41,5,12,3,5,6],[15,8,12,47,22,15,4,66,72,15,3,4]]]))
[9] => [9]
[1, 2] => [1, 2]
[2, 1] => [2, 3]
[7, 3] => [7, 9]
[1, 1, 1, 1] => [1, 2, 3, 4]
[5, 4, 12, 1, 3] => [5, 8, 12, 13, 15]
[3, 3, 3, 8, 16] => [3, 6, 9, 16, 32]
[6, 5, 4, 3, 2, 1] => [6, 10, 12, 15, 16, 17]
[9, 4, 6, 6, 5, 78, 12, 88] => [9, 12, 18, 24, 25, 78, 84, 88]
[8, 9, 41, 5, 12, 3, 5, 6] => [8, 9, 41, 45, 48, 51, 55, 60]
[15, 8, 12, 47, 22, 15, 4, 66, 72, 15, 3, 4] => [15, 16, 24, 47, 66, 75, 76, 132, 144, 150, 153, 156]

পূর্ববর্তী সমাধান

কিছু পুনরাবৃত্ত সমাধান কিন্তু বৃহত্তর

(68 bytes) f=lambda a,i=0:[i,*f(a[1:],a[0]*(i//a[0]+1))][i==0:]if a!=[]else[i]
(64 bytes) f=lambda a,i=0:a>[]and[i,*f(a[1:],a[0]*(i//a[0]+1))][i<1:]or[i]

এর পরিবর্তে r+=[…], আপনি ব্যবহার করতে পারেনr+=…,
সাইয়েস

@Cyoce আমি পরিবর্তন করতে কিন্তু যখন আমি সংজ্ঞায়িত r=[0]ডিফল্ট প্যারামিটারে rnonlocal হয়ে
Erwan

আপনি ঠিক বলেছেন, পাইথন কীভাবে ডিফল্ট প্যারামগুলি পরিচালনা করেছিল। অন্য টিপটি যদিও কাজ করা উচিত
সাইয়েস

@ কিয়েস হ্যাঁ এটি টিপসের জন্য ধন্যবাদ ধন্যবাদ
এরওয়ান

3

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

{≤.;?%0∧}ᵐ<₁

প্রতিটি ভেরিয়েবলকে একটি সংখ্যার দ্বারা গুণিত করার যথেষ্ট অদ্ভুত চেষ্টা করা শুরু করবে 2 বা 0 বা 1 দিয়ে গুণ করে না। এটি কাজ করে বলে মনে হয় এবং অন্য ব্র্যাচল্যাগ বাস্তবায়নকে মারধর করে

ব্যাখ্যা

{       }ᵐ          --  Map each number
 ≤.                 --      to a number greater or equal to the original
  .;?%0             --      and a multiple of the original
       ∧            --      no more constraints
          <₁        --  so that the list is strictly increasing

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


2

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

:_{h_.|[L:T],LhH,(T_,IH;0:$Ie*H=:T>I),Lb:I:1&:[I]rc.}.

ব্যাখ্যা

:_{...}.                § Call sub-predicate 1 with [Input, []] as input. Unify its output
                        § with the output of the main predicate


§ Sub-predicate 1

h_.                     § If the first element of the input is an empty list, unify the
                        § output with the empty list
|                       § Else
[L:T],LhH,              § Input = [L,T], first element of L is H
    (T_,IH              §     If T is the empty list, I = H
    ;                   §     Else
    0:$Ie*H=:T>I),      §     Enumerate integers between 0 and +inf, stop and unify the
                        §     enumerated integer with I only if I*H > T
Lb:I:1&                 § Call sub-predicate 1 with input [L minus its first element, I]
:[I]rc.                 § Unify the output of the sub-predicate with
                        § [I|Output of the recursive call]

2

পাইথ, 11

t.u*Yh/NYQ0

পরীক্ষা স্যুট

ক্রমবর্ধমান হ্রাস করে কি এমন হ্রাস করে যা শুরু করে সমস্ত মধ্যবর্তী মানগুলি ফেরত দেয় 0। যেহেতু ইনপুটটিতে কেবল ধনাত্মক পূর্ণসংখ্যা রয়েছে তা নিশ্চিত করা যায়, এটি ঠিক। প্রতিটি পদক্ষেপে, আমরা পুরাতন মান গ্রহণ করি, এটি নতুন মান দ্বারা বিভক্ত করি এবং যুক্ত করি 1, তারপরে আমরা নতুন মান দিয়ে গুণ করি।


2

সি, 79 বাইট

p;main(x,v)char**v;{for(;*++v;printf("%d ",p=((x+p-1)/x+!(p%x))*x))x=atoi(*v);}

Ungolfed

p; /* previous value */

main(x,v) char**v;
{
    /* While arguments, print out x such that x[i] > x[i-1] */
    for(;*++v; printf("%d ", p = ((x+p-1)/x + !(p%x)) * x))
        x = atoi(*v);
}

p=p/x*x+xকাজ করবে না ?
নীল

@ নীল হ্যাঁ, এটি কার্যকর হবে। অবশ্যই এটিকে উত্সাহিত করেছেন :)
কোল ক্যামেরন

2

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

$args[0]|%{($l+=$_-$l%$_)}

সুস্পষ্ট অ্যারে হিসাবে ইনপুট নেয়, যেমন > .\sort-by-multiplying.ps1 @(6,5,4,3,2,1)মাধ্যমে $args[0]

তারপরে আমরা তার সাথে লুপ করি |%{...}এবং প্রতিটি পুনরাবৃত্তি যাদু করে । নাহ, শুধু মজা, আমরা একই মডিউল কৌতুক অন্যান্য উত্তর (কারণ আমি এটা বিক্ষোভ সাজসরঞ্জাম @aross হিসেবে ব্যবহার সেখানে প্রথম)।

এনক্যাপসুলেটিং প্যারেনগুলি (...)নিশ্চিত করে যে গণিত ক্রিয়াকলাপের ফলাফল পাইপলাইনে স্থাপন করা হয়েছে এবং এভাবে আউটপুট। যদি আমরা এগুলি ছেড়ে দিয়ে যাই, তবে $lভেরিয়েবলটি কার্যকর না হওয়ার পরে আবর্জনা-সংগ্রহ করে আউটপুট হবে না ।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\sort-by-multiplying.ps1 @(8,9,1,5,4)
8
9
10
15
16


1

05 এ বি 1 , 11 বাইট

কোড:

R`[=sŽDŠ/ò*

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

ব্যাখ্যা:

R            # Reverse input
 `           # Flatten the list
  [          # While loop
   =         # Print the last item
    s        # Swap the last two items
     Ž       # If the stack is empty, break
      D      # Duplicate top of the stack
       Š     # Pop a,b,c and push c,a,b
        /    # Divide a / b
         ò   # Inclusive round up
          *  # Multiply the last two items

সিপি-1252 এনকোডিং ব্যবহার করে।


1

মিনকোলাং 0.15 , 17 বাইট

nd1+?.z0c:1+*d$zN

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

ব্যাখ্যা

nd                   Take number from input and duplicate it
  1+                 Add 1
    ?.               Stop if top of stack is 0 (i.e., when n => -1 because input is empty).
      z              Push value from register
       0c            Copy first item on stack
         :           Pop b,a and push a//b
          1+         Add 1
            *        Multiply
             d$z     Duplicate and store in register
                N    Output as number

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


1

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

l~lCℕ₁ᵐ≤ᵛ~+?&;Cz≜×ᵐ<₁

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

কোফিলিয়েন্টস সি এর জন্য আউটপেন বাউন্ড হিসাবে ইনপুট মানগুলির যোগফলকে ব্যবহার করে সিটি প্রাইটি ধীর, ইনপুট তালিকার দৈর্ঘ্যের জন্য 5 বা 6 এর বাইরে টাইম আউট (মানগুলির সংখ্যার উপরেও নির্ভর করে)। তবে আমার আসল সংস্করণটির মতো ধীর নয়, যার জন্য ক্ষুদ্র মান সহ 3 টি উপাদানের ক্ষুদ্রতর তালিকা দরকার, সময় শেষ না করার জন্য:

21 বাইট

l~l.&+^₂⟦₁⊇.;?z/ᵐℕ₁ᵐ∧

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



1

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

lambda a:reduce(lambda b,v:b+[b[-1]/v*v+v],a,[0])[1:]

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

k*x>yবোঝায় k>y/x; সবচেয়ে ছোট kহতে পারে k=floor(y/x)+1। পাইথন ২.7 থেকে যেহেতু পূর্ণসংখ্যা বিভাগটি ইতিমধ্যে গ্রহণ করা হয়েছে floor, আমরা চাই k=y/x+1এবং k*x = (y/x+1)*x = y/x*x+x


0

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

WITH v AS(SELECT TO_NUMBER(COLUMN_VALUE)a,rownum i FROM XMLTABLE(('"'||REPLACE(:1,' ','","')||'"'))),c(p,n)AS(SELECT a,2 FROM v WHERE i=1UNION ALL SELECT a*CEIL((p+.1)/a),n+1 FROM c,v WHERE i=n)SELECT p FROM c;

আন golfed

WITH v AS                                           
(
  SELECT TO_NUMBER(COLUMN_VALUE)a, rownum i            -- Convert the input string into rows 
  FROM   XMLTABLE(('"'||REPLACE(:1,' ','","')||'"'))   -- using space as the separator between elements
)
, c(p,n) AS                        
(
  SELECT a, 2 FROM v WHERE i=1                         -- Initialize the recursive view
  UNION ALL 
  SELECT a*CEIL((p+.1)/a),n+1 FROM c,v WHERE i=n       -- Compute the value for the nth element
)
SELECT p FROM c;

0

চেজ স্কিম (140 বাইট)

গল্ফ সংস্করণ:

(define(f l)(define(g l p m)(cond((null? l)l)((<(*(car l)m)(+ p 1))(g l p(+ m 1)))(else(cons(*(car l)m)(g(cdr l)(* m(car l))1)))))(g l 0 1))

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

(define(f l)
  (define(g l p m)
    (cond
      ((null? l) l)
      ((< (* (car l) m) (+ p 1)) (g l p (+ m 1)))
      (else (cons (* (car l) m) (g (cdr l) (* m (car l)) 1)))
    )
  )
  (g l 0 1)
)

অনলাইনে চেষ্টা করে দেখুন!


* m(car l)হতে পারে *(car l)m
জনাথন ফ্রেচ

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