ধারাবাহিকভাবে বিভাজ্য


24

কখনও কখনও ঘুমিয়ে পড়ার জন্য, আমি যতটা পারি স্কোয়ার-মুক্ত নয় এমন স্কিপিং সংখ্যাগুলিতে আমি যতটা পারি তার চেয়ে বেশি গণনা করব । আমি যখন একটি সারিতে বেশ কয়েকটি সংখ্যায় এড়াতে যাই তখন আমি একটু শিহরিত পাই - উদাহরণস্বরূপ, 48,49,50সমস্ত বর্গমুক্ত নয় (48 2 2 ^ 2 দ্বারা বিভাজ্য, 49 7 2 ^ 2 দ্বারা, এবং 50 দ্বারা 5 ^ 2)।

এটি আমাকে বিভাজনগুলির কিছু স্বেচ্ছাসেবী ক্রম দ্বারা বিভাজ্য সংলগ্ন সংখ্যার প্রাথমিকতম উদাহরণ সম্পর্কে ভাবতে পরিচালিত করেছিল।

ইনপুট

ইনপুট হ'ল a = [a_0, a_1, ...]কমপক্ষে 1 টি উপাদান যুক্ত কঠোর ইতিবাচক পূর্ণসংখ্যার একটি আদেশযুক্ত তালিকা ।

আউটপুট

আউটপুট হ'ল nসম্পত্তির সাথে ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্যা যা a_0ভাগ করে n, a_1ভাগ করে n+1এবং আরও সাধারণভাবে a_kভাগ করে n+k। এ জাতীয় কোনও nউপস্থিত না থাকলে, ফাংশন / প্রোগ্রামের আচরণ সংজ্ঞায়িত করা হয় না।

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

[15] -> 15
[3,4,5] -> 3
[5,4,3] -> 55
[2,3,5,7] -> 158
[4,9,25,49] -> 29348
[11,7,5,3,2] -> 1518

স্কোরিং

এটি ; সংক্ষিপ্ত ফলাফল (প্রতি ভাষা) দাম্ভিক অধিকারগুলি জয় করে। সাধারণ লুফোলগুলি বাদ দেওয়া হয়।


উত্তর:




5

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

`Gf@q+G\a}@

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

`           % Do ....
 Gf         %   Convert input to [1,2,...,]
   @q+      %   Add current iteration index minus one, to get [n, n+1, ....]
      G\    %   Elementwise mod([n,n+1,...],[a_0,a_1,...])
        a   % ...while any of the modular remainders is nonzero.
         }  % Finally:
          @ %   Output the iteration index.

গতির জন্য হুবহু অপ্টিমাইজড নয় ... বৃহত্তম টেস্টকেস এমএটিএল ব্যবহার করে পুরো মিনিট সময় নেয় এবং এমএটিএলবিএজে প্রায় 0.03 সেকেন্ডে। একটি ছোট সম্ভাবনা আছে এমএটিএল এর কিছুটা ওভারহেড।


আহ, আমার কাছে n:q`QtG\a]1)12 বাইট ছিল তবে n:স্পষ্টতই fএখানে এখানে একই রকম । আমি এটি সম্পর্কে সর্বদা ভুলে যাই, তাই আপনি এটি বিকল্প 11 বাইটার হিসাবে যুক্ত করতে পারেন।
জিউসেপ

1
@ জিউসেপ্প খুব খারাপ ইনপুটটির fq`QtG\a}@বহিরাগত অনুলিপি প্রদান করে।
Sanchises

5

জাভাস্ক্রিপ্ট, 42 40 বাইট

কোনও সমাধান না হলে পুনরাবৃত্তি ত্রুটি ফেলবে (বা সমাধানটি খুব বড়)।

a=>(g=y=>a.some(x=>y++%x)?g(++n):n)(n=1)

রিক হিচকক থেকে পয়েন্টার সহ 2 বাইট সংরক্ষণ করা হয়েছে


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

কমা দ্বারা পৃথক করা সংখ্যার তালিকা প্রবেশ করান।

o.innerText=(f=
a=>(g=y=>a.some(x=>y++%x)?g(++n):n)(n=1)
)(i.value=[5,4,3]);oninput=_=>o.innerText=f(i.value.split`,`.map(eval))
<input id=i><pre id=o>


চমৎকার পন্থা, তবে পুনরাবৃত্তি সীমা অতিক্রম করে যেমন ব্যর্থ হয়, উদাহরণস্বরূপ [4,9,25,49],।
চ্যাস ব্রাউন

1
@ চ্যাসব্রাউন, কোড গল্ফের উদ্দেশ্যে, আমরা অসীম স্মৃতি অনুভব করতে পারি।
শেগি

আমি মনে করি এটি 38 বাইটের জন্য কাজ করবে: (a,y=n=0)=>a.some(x=>y++%x)?f(a,++n):n
রিক হিচকক

ওও, দুর্দান্ত, @ রিকহিটকক - ধন্যবাদ f=তবে ভুলে যাবেন না ।
শেগি

আহ, অবশ্যই এটি 40 বাইট
রিক হিচকক


3

05 এ বি 1 ই , 9 বাইট

Xµā<N+sÖP

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

ব্যাখ্যা

Xµ          # loop until counter equals 1
  ā         # push range [1 ... len(input)]
   <        # decrement
    N+      # add current iteration index N (starts at 1)
      sÖ    # elementwise evenly divisible by
        P   # product
            # if true, increase counter
            # output N

আমার 17 বাইট উত্তর হ্রাস করে, আউট।
ম্যাজিক অক্টোপাস উরান


3

পরিষ্কার , 61 বাইট

import StdEnv
$l=hd[n\\n<-[1..]|and[i/e*e==i\\i<-[n..]&e<-l]]

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


2
আমি মনে করি আপনার যা দরকার [1..]পরিবর্তে [0..]এড়ানোর আউটপুট করতে 0, একটি অ-ধনাত্মক পূর্ণসংখ্যা, Singleton তালিকার জন্য।
লাইকোনি

@ লাইকনি ধন্যবাদ, স্থির।
22urous

3

পাইথ , 11 বাইট

f!s.e%+kTbQ 

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


f!s.e%+kTbQ         Full program - inputs list from stdin and outputs to stdout
f                   First number T such that
   .e     Q         The enumerated mapping over the Input Q
      +kT           by the function (elem_value+T)
     %   b          mod (elem_index)
 !s                 has a false sum, i.e. has all elements 0

2আপনার শেষে কি দরকার ? আমি নিশ্চিত এখানে আরও অনেক কিছু রক্ষা করতে হবে তবে আমি পাইথকে জানি না।
শেগি

@ শেগি এবং @ জিউস্পেপ, আপনি দুজনই ঠিক বলেছেন, এবং শেষের 2বিষয়টি ফেলে দেওয়া সমস্যার সমাধান করে
ডেভ

2

জে , 23 বাইট

[:I.0=]+/@:|"1#]\[:i.*/

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


খুশী হলাম। গাণিতিক সত্য কী যা আপনাকে কেবল ইনপুটগুলির পণ্য পরীক্ষা করতে দেয়? আমরা কীভাবে জানি যে এর বাইরে কোনও সমাধান হতে পারে না? এছাড়াও, কীভাবে আমরা জানি I.যে কেবলমাত্র 1 টি ফলাফল ফিরে আসবে? একাধিক আছে কি এটা সম্ভব নয়?
জোনা

1
@ জোনাহ - আমি জানি না এটি সর্বদা কার্যকর হয় কিনা; আমি যে সমস্ত পরীক্ষা করেছি তা এই সীমাবদ্ধ ছিল।
গ্যালেন ইভানভ

2

আর , 51 বাইট

function(l){while(any((F+1:sum(l|1))%%l))F=F+1
F+1}

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

নিক্ষিপ্ত রূপান্তর সম্পর্কে anyথ্রো kসতর্কতাগুলির ব্যবহার, ফেরতের মানটি logicalকোথায় k



@ প্ল্যানাপাস আমি বিবেচনা করেছি তবে দুর্ভাগ্যক্রমে এটি ব্যর্থ হয়েছে l=c(15), যেহেতু seq(l)==1:lসেই ক্ষেত্রে। seqএমন বিরক্তিকর!
জিউসেপ

সত্যই আরফ এবং তারপর জোর seq_alongকরা খুব দীর্ঘ।
প্ল্যানাপাস

সুতরাং, তবে এই সতর্কতাগুলি থেকে মুক্তি পাওয়ার sumপরিবর্তে anyএফওয়াইআই ব্যবহার করুন।
প্লানাপাস


2

এপিএল (ডায়ালগ ইউনিকোড) , 24 23 22 বাইট

{∨/×⍺|⍵+⍳⍴⍺:⍺∇⍵+1⋄⍵}∘1

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

প্রযুক্তিগতভাবে, এটি একটি স্বতন্ত্র ফাংশন। আমাকে এটি তৈরি করতে হয়েছিল যেহেতু কেবলমাত্র ইনপুটটির অনুমতিপ্রাপ্ত পূর্ণসংখ্যার তালিকা। ব্যবহার ⎕IO←0(0-সূচক)

এটি লক্ষণীয় যে ফাংশনটি nঅস্তিত্বহীন থাকলে শেষ হয়ে যায়।

@ জেএনএন এবং @ এইচপিউইজকে ধন্যবাদ প্রতি 1 বাইটের জন্য

কিভাবে?

{∨/×⍺|⍵+⍳≢⍺:⍺∇⍵+1⋄⍵}∘1  Main function. ⍺=input; ⍵=1.
{                   }∘1  Using 1 as right argument and input as left argument:
           :             If
        ⍳≢⍺              The range [0..length(⍺)]
      ⍵+                 +⍵ (this generates the vector ⍵+0, ⍵+1,..., ⍵+length(⍺))
    ⍺|                   Modulo 
   ×                     Signum; returns 1 for positive integers, ¯1 for negative and 0 for 0.
 ∨/                      Logical OR reduction. Yields falsy iff the elements of the previous vector are all falsy.
            ⍺∇⍵+1        Call the function recursively with ⍵+1.
                 ⋄⍵      Else return ⍵.


1

জাপট, 10 বাইট

undefinedকোনও সমাধান না থাকলে অবশেষে আউটপুট দেবে , যদি এটি প্রথমে আপনার ব্রাউজারটি ক্রাশ না করে।

@e_X°vZÃ}a

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


ব্যাখ্যা

               :Implicit input of array U
@       }a     :Loop and output the first integer X that returns true.
 e_    Ã       :For every element Z in U
   X°          :X, postfix increcemnted
     vZ        :Is it divisible by Z?



1

স্ট্যান্ডার্ড এমএল (এমএলটন) , 96 বাইট

open List;fun$n% =if all hd(tabulate(length%,fn i=>[1>(n+i)mod nth(%,i)]))then n else$(n+1)%;$1;

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

Ungolfed:

open List
fun f n l = 
    if all (fn x=>x)
           (tabulate ( length l
                     , fn i => (n+i) mod nth(l,i) = 0))
    then n 
    else f (n+1) l
val g = f 1

এটি অনলাইন চেষ্টা করুন! শুরুর সাথে n=1, fশর্তটি শেষ nনা হওয়া অবধি ফাংশনটি বৃদ্ধি পায় all, যার ক্ষেত্রে nফিরে আসে।

tabulate(m,g)কিছু পূর্ণসংখ্যার mএবং ফাংশন gদিয়ে তালিকা তৈরি করে [g 0, g 1, ..., g m]। আমাদের অবস্থায় tabulateইনপুট তালিকার দৈর্ঘ্য lএবং একটি ফাংশন বলা হয় যা পরীক্ষা করে যে iতম উপাদানটি lবিভক্ত হয় কিনা n+i। এটি বুলিয়ানগুলির একটি তালিকা দেয়, তাই allপরিচয় ফাংশনটির সাহায্যে fn x=>xসমস্ত উপাদান সত্য কিনা তা পরীক্ষা করে।

আমি এই ক্ষেত্রে পরিচয় ফাংশন চার বাইট কমান একটা চমৎকার golfing কৌতুক পাওয়া যায়নি: ল্যামডা পরিবর্তে (fn x=>x), বিল্ড-ইন ফাংশন hdব্যবহার করা হয়, যা একটি তালিকার প্রথম উপাদান ফেরৎ, এবং ফলে bools tabulateআবৃত করা হয় [এবং ]করতে সিঙ্গলটন তালিকা তৈরি করুন।


1

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

for(){$o=1;$i=++$j;$args[0]|%{$o*=!($i++%$_)};if($o){$j;exit}}

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

PowerShell একটি সমতুল্য নেই anyবা someতাই আমরা একটি কিছুটা ভিন্ন পদ্ধতির প্রয়োজন, অথবা মত।

এটি ইনপুটটিকে $args[0]অ্যারে হিসাবে নেয় , তারপরে একটি অসীম forলুপে প্রবেশ করে । প্রতিটি পুনরাবৃত্তির আমরা সেট $oহতে 1(পরে ব্যাখ্যা), এবং সেট $iহতে ++$j। বর্ধিতকরণ $jপ্রস্তাবিত সমাধানের প্রথম সংখ্যাটি কীসের উপর ট্যাব রাখে, এবং $iবাকিটি প্রস্তাবিত সমাধানের তুলনায় বৃদ্ধি পাবে।

তারপরে আমরা ইনপুটটির প্রতিটি উপাদান $args[0]একটি ForEach-Objectলুপে প্রেরণ করি । অভ্যন্তরীণ লুপের ভিতরে, আমরা $oএকটি গণনার ফলাফলের মধ্যে বুলিয়ান-গুণ করি । এটি এটিকে এমন করে তুলবে যাতে যদি গণনা কোনও মানের জন্য ব্যর্থ হয়, তবে $oপরিবর্তনটি হবে 0। গণনাটি হয় !($i++%$_), বা বুলিয়ান না-মডিউল অপারেশনের। যেহেতু কোনও ননজারো মান পাওয়ারশেলে সত্যবাদী তাই এটি কোনও অবশিষ্টাংশকে ভুয়া মান হিসাবে রূপান্তরিত $oকরে , ফলে রূপান্তরিত হয় 0

অভ্যন্তরীণ লুপের বাইরে if $oননজারো, আমরা একটি বর্ধনশীল সমাধান পেয়েছি যা কাজ করে, তাই আমরা আউটপুট $jএবং exit


1

টিনাইলিস্প , 108 বাইট

(load library
(d ?(q((L N)(i L(i(mod N(h L))0(?(t L)(inc N)))1
(d S(q((L N)(i(? L N)N(S L(inc N
(q((L)(S L 1

শেষ লাইনটি একটি নামবিহীন ল্যাম্বদা ফাংশন যা একটি তালিকা নেয় এবং একটি পূর্ণসংখ্যা ফেরত দেয়। এটি অনলাইন চেষ্টা করুন!

Ungolfed

(load library)

(comment Function to check a candidate n)
(def sequentially-divisible?
 (lambda (divisors start-num)
  (if divisors
   (if (divides? (head divisors) start-num)
    (sequentially-divisible? (tail divisors) (inc start-num))
    0)
   1)))

(comment Function to check successive candidates for n until one works)
(def search
 (lambda (divisors start-num)
  (if (sequentially-divisible? divisors start-num)
   start-num
   (search divisors (inc start-num)))))

(comment Solution function: search for candidates for n starting from 1)
(def f
 (lambda (divisors)
  (search divisors 1)))


1

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

def f(a,c=0):
 while [j for i,j in enumerate(a) if(c+i)%j<1]!=a:c+=1
 return c

সম্পাদনা: -26 @ চাস ব্রাউনকে ধন্যবাদ


নিস! আমি আপনার লুপের প্রস্থান শর্তটিকে ঘুরিয়ে দিয়েছি, এবং আপনার ধারণাটি 78 বাইট পেতে উন্নত করা যেতে পারে ।
চ্যাস ব্রাউন

@ চাসব্রাউন ধন্যবাদ, আমি সেভাবে এটি করার কথা ভাবিনি। পরিবর্তন!
sonrad10


0

এপিএল NARS, 140 বাইট, 70 অক্ষর

r←f w;i;k
i←r←1⊃,w⋄k←¯1+⍴w⋄→0×⍳k=0
A:→0×⍳0=+/(1↓w)∣(k⍴r)+⍳k⋄r+←i⋄→A

পরীক্ষা

  f 15
15
  f 3 4 5
3
  f 5 4 3
55
  f 2 3 5 7
158
  f 4 9 25 49
29348
  f 11 7 5 3 2 
1518

0

জাভা 8, 82 75 বাইট

a->{for(int r=1,i,f;;r++){i=f=0;for(int b:a)f+=(r+i++)%b;if(f<1)return r;}}

ব্যাখ্যা:

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

a->{                 // Method with integer-array parameter and integer return-type
  for(int r=1,       //  Return-integer, starting at 1
          i,         //  Index-integer
          f;         //  Flag-integer
      ;r++){         //  Loop indefinitely, increasing `r` by 1 after every iteration
    i=f=0;           //   Reset both `i` and `f` to 0
    for(int b:a)     //   Inner loop over the input-array
      f+=(r+i++)%b;  //    Increase the flag-integer by `r+i` modulo the current item
    if(f<1)          //   If the flag-integer is still 0 at the end of the inner loop
      return r;}}    //    Return `r` as result

0

রুবি , 47 46 43 42 বাইট

->a{(1..).find{|i|a.all?{|v|i%v<1&&i+=1}}}

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

এনবি: (1..)বাক্য গঠনটি কেবল রুবি ২. 2. এ সমর্থিত, এই মুহুর্তের জন্য টিআইও কেবল 2.5 সমর্থন করে তাই লিঙ্কটি পুরানো সংস্করণে (43 বাইট))

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