সমস্ত স্বতন্ত্র গোজিঙ্কা চেইনগুলি সন্ধান করুন


36

গোজিন্টা চেইনস

( প্রকল্পের এলার # 606 দ্বারা অনুপ্রাণিত )

N এর জন্য একটি গজিন্টা চেইন এমন ক্রম {1,a,b,...,n}যেখানে প্রতিটি উপাদান যথাযথভাবে পরবর্তীটিকে ভাগ করে দেয়। উদাহরণস্বরূপ, এখানে 12 টির জন্য আটটি স্বতন্ত্র গোজিন্টা চেইন রয়েছে:

{1,12}, {1,2,12}, {1,2,4,12}, {1,2,6,12}, {1,3,12}, {1,3,6,12}, {1,4,12} and {1,6,12}.

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা একটি ধনাত্মক পূর্ণসংখ্যা গ্রহণ করে ( n > 1) এবং প্রদত্ত সংখ্যার জন্য সমস্ত স্বতন্ত্র গোজিন্টা চেইনগুলি আউটপুট দেয় বা প্রদান করে।

  1. শৃঙ্খলা সংক্রান্ত বিষয়গুলিতে অর্ডার (আরোহণ), শৃঙ্খলার ক্রম হয় না।
  2. অফ-সুযোগটিতে এটি বিদ্যমান, আপনি এমন কোনও বিল্টিন ব্যবহার করতে পারবেন না যা চ্যালেঞ্জ সমাধান করে।
  3. এটি

সম্পাদনা করুন: 1একটি সম্ভাব্য ইনপুট হিসাবে সরানো হচ্ছে ।


4
পিপিসিজিতে আপনাকে স্বাগতম। প্রথম প্রথম প্রশ্ন!
অ্যাডমবর্কবার্ক


3
হিসাবে AdmBorkBork বললেন, প্রান্ত মামলা সাধারণত যোগ করা হয় শুধুমাত্র যদি তারা চ্যালেঞ্জের কোর কাছে গুরুত্বপূর্ণ - আপনি একটি কারণ জন্য শুধুমাত্র চান [[1]]আমি বলতে চাই যে যদি [1,1]একটি gozinta হয় 1তারপর [1,1,12]একটি gozinta হয় 12হিসাবে [1,1,1,12]এবং এখন আমরা করতে পারেন আর "সমস্ত ফিরিয়ে দিন ..."
জোনাথন অ্যালান

4
যারা জানেন না তাদের ক্ষেত্রে আপনার প্রশ্নটি পরিষ্কার করা উচিত। 2|4"দুইটি চারে যায়" ওরফে "দুটি গোজিন্টা ফোর" পড়েছে।
mbomb007

1
স্যান্ডবক্সের কাজ করার জন্য আড়াই ঘন্টা পর্যাপ্ত সময় নেই। দেখুন স্যান্ডবক্স প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
পিটার টেলর

উত্তর:


10

পাইথন 3 , 68 65 বাইট

সম্পাদনা করুন: -৩ বাইট @ নোটজাগানকে ধন্যবাদ

f=lambda x:[y+[x]for k in range(1,x)if x%k<1for y in f(k)]or[[x]]

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

ব্যাখ্যা

প্রতিটি গজিন্টা চেইনটি চেইনেরx শেষে সংখ্যাটি নিয়ে থাকে এবং এর বামে কমপক্ষে একটি বিভাজক থাকে। চেইনের প্রতিটি বিভাজকের kজন্য পৃথক। সুতরাং আমরা প্রতিটি ভাজক জন্য করতে তার স্বতন্ত্র সব খুঁজে gozinta চেইন এবং পরিশেষে যোগ সব স্বতন্ত্র পেতে তাদের শেষ পর্যন্ত gozinta চেইন সঙ্গে সরাসরি বাঁদিকে । যেখানে ফিরে না আসা পর্যন্ত এটি পুনরাবৃত্তভাবে করা হয়, সমস্ত গিজিন্টা চেইনগুলি 1 দিয়ে শুরু হয়, যার অর্থ পুনরাবৃত্তিটি শেষ হয়ে গেছে।x[1,...,k,x]kxkxx = 1[[1]]

পাইথন তালিকা বোঝার কারণে কোডটি এত সংক্ষিপ্ত হয়ে যায় ডাবল পুনরাবৃত্তির অনুমতি দেয়। এর অর্থ হল যে প্রাপ্ত মানগুলি f(k)পৃথক বিভাজনকারীদের জন্য একই তালিকায় যুক্ত করা যেতে পারে k


এটি করার চেষ্টা করা হয়েছিল, এখন অনেক দেরিতে = /
রড

3
এই উত্তরটি এখন পর্যন্ত অন্যান্য উত্তরগুলির তুলনায় অবিশ্বাস্যভাবে দ্রুত।
ajc2000

অপ্রয়োজনীয় তালিকা আনপ্যাকিং অপসারণ করে -3 বাইট
notjagan

7

হুশ , 13 বাইট

ufo=ḣ⁰…ġ¦ΣṖḣ⁰

H.PWiz এর কিছুটা ভিন্ন পন্থা , যদিও এখনও নিষ্ঠুর শক্তি দ্বারা। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

মূল ধারণাটি হ'ল সমস্ত [1,...,n]অনুচ্ছেদটি সংযুক্ত করে ফলাফলকে সাবলিস্টে বিভক্ত করা যেখানে প্রতিটি উপাদান পরের অংশকে বিভক্ত করে। এর মধ্যে আমরা যা শুরু করি তা রাখি1 , শেষ হয় nএবং কোনও সদৃশ থাকে। এটি অন্তর্নির্মিত "রঙ্গিফাই" দিয়ে সম্পন্ন হয় । তারপরে এটি সদৃশগুলি বাতিল করতে থাকবে।

ufo=ḣ⁰…ġ¦ΣṖḣ⁰  Input is n=12.
           ḣ⁰  Range from 1: [1,2,..,12]
          Ṗ    Powerset: [[],[1],[2],[1,2],[3],..,[1,2,..,12]]
         Σ     Concatenate: [1,2,1,2,3,..,1,2,..,12]
       ġ¦      Split into slices where each number divides next: [[1,2],[1,2],[3],..,[12]]
 fo            Filter by
      …        rangified
   =ḣ⁰         equals [1,...,n].
u              Remove duplicates.

আমি অনুমান করছি যে পাওয়ারসেটে অ্যারেগুলিতে ফিল্টার করা কোনও সংক্ষিপ্ত নয়, যেখানে প্রতিটি সংখ্যা পরেরটি ভাগ করে দেয়?
ETH প্রোডাকশনগুলি

@ETH প্রোডাকশনস না, এটি আরও দীর্ঘ এক বাইট
জাগারব

5

জেলি , 9 8 বাইট

ÆḌ߀Ẏ;€ȯ

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

আমার জাপট উত্তরের অনুরূপ কৌশল ব্যবহার করে এবং তাই বৃহত্তর পরীক্ষার ক্ষেত্রে খুব দ্রুত চলে।

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

ÆḌ߀Ẏ;€ȯ    Main link. Argument: n (integer)
ÆḌ          Yield the proper divisors of n.
       ȯ    If there are no divisors, return n. Only happens when n is 1.
  ߀        Otherwise, run each divisor through this link again. Yields
            a list of lists of Gozinta chains.
    Ẏ       Tighten; bring each chain into the main list.
     ;€     Append n to each chain.

4

গণিত, 77 বাইট

FindPath[Graph@Cases[Divisors@#~Subsets~{2},{m_,n_}/;m∣n:>m->n],1,#,#,All]&

একটি ফরম Graphযেখানে ছেদচিহ্ন হয় Divisorsইনপুটের #, এবং প্রান্ত সঠিক বিভাজ্যতা প্রতিনিধিত্ব, তারপর খুঁজে বের করে Allপ্রান্তবিন্দু থেকে পাথ 1প্রান্তবিন্দু করতে #


1
ওহ, এটা খুব চালাক!
জংহওয়ান মিন

3

জেলি , 12 বাইট

ŒPµḍ2\×ISµÐṀ

একটি পূর্ণসংক্রান্ত লিঙ্ক একটি পূর্ণসংখ্যা গ্রহণ করে এবং পূর্ণসংখ্যার তালিকার একটি তালিকা ফেরত দেয়।

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

কিভাবে?

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

ŒPµḍ2\×ISµÐṀ - Link: number N
ŒP           - power-set (implicit range of input) = [[1],[2],...,[N],[1,2],[1,3],...,[1,N],[1,2,3],...]
          ÐṀ - filter keep those for which the result of the link to the left is maximal:
  µ      µ   - (a monadic chain)
    2\       -   pairwise overlapping reduce with:
   ḍ         -     divides? (1 if so, 0 otherwise)
       I     -   increments  e.g. for [1,2,4,12] -> [2-1,4-2,12-4] = [1,2,8]
      ×      -   multiply (vectorises) (no effect if all divide,
             -                          otherwise at least one gets set to 0)
        S    -   sum         e.g. for [1,2,4,12] -> 1+2+8 = 11 (=12-1)

অপেক্ষায় কি এন-ওভারল্যাপিং কমবে? : ও আমি কখনই দেখতে পেলাম না: পিআই ব্যবহার করছিল <slice>2<divisible>\<each>: পি
হাইপার নিউট্রিনো

জেলির কুইকে নতুন পরিবর্তন ব্যবহার করে আপনি 11 বাইটেরƝ জন্য `2` এর পরিবর্তে ব্যবহার করতে পারেন ।
মিঃ এক্সকোডার

3

জাপট , 17 বাইট

⬣ßX m+S+UR÷ª'1

এটি অনলাইন পরীক্ষা!

অদ্ভুতভাবে, স্ট্রিং হিসাবে আউটপুট উত্পন্ন করা অ্যারের অ্যারে হিসাবে এটি উত্পাদন করার চেয়ে সহজ ছিল ...

ব্যাখ্যা

 ⬠£  ßX m+S+URà ·  ª '1
Uâq mX{ßX m+S+UR} qR ||'1   Ungolfed
                            Implicit: U = input number, R = newline, S = space
Uâ                          Find all divisors of U,
  q                           leaving out U itself.
    mX{         }           Map each divisor X to
       ßX                     The divisor chains of X (literally "run the program on X")
          m    R              with each chain mapped to
           +S+U                 the chain, plus a space, plus U.
                  qR        Join on newlines.
                     ||     If the result is empty (only happens when there are no factors, i.e. U == 1)
                       '1     return the string "1".
                            Otherwise, return the generated string.
                            Implicit: output result of last expression

তাহলে কি অন্যান্য পদ্ধতির মতো আপনার পন্থা অবৈধ চেইনগুলি তৈরি করে তা ফিল্টার করা এড়াতে পারে?
ছাতা

@ অম্ব্রেলা নাপ, এটি কেবলমাত্র বৈধ তৈরি করে, একসাথে একটি বিভাজক, সুতরাং কেন এটি 12000 :-) এর মতো ক্ষেত্রেও বজ্রপাত দ্রুত কাজ করে
ইটিএইচ প্রোডাকশনগুলি

পুনরাবৃত্তির খুব দুর্দান্ত ব্যবহার :) এবং আমি সেই ¬কৌশলটি উপভোগ করছি ! : পি
শেগি

@ শ্যাগি ¬হ'ল একটি কারণ যা আমি মূলত "এক্সকে কোন যুক্তি দেওয়া হয়নি, বা ওয়াই একটি সত্যবাদী যুক্তি দিয়েছে" এমন একাধিক কার্যকারিতা বাস্তবায়ন করেছে: পি
ইটিএইচ প্রোডাকশনস

3

গণিত, 60 বাইট

Cases[Subsets@Divisors@#,x:{1,___,#}/;Divisible@@Reverse@{x}]&

ব্যবহার সম্পর্কে অনথিভুক্ত বহু-ARG ফর্ম Divisible, যেখানে Divisible[n1,n2,...]আয় Trueযদি n2∣n1, n3∣n2, ইত্যাদি, এবং Falseঅন্যথায়। আমরা সব নিতে Subsetsতালিকায় Divisorsইনপুটের #, তারপর ফিরে Casesফর্মের {1,___,#}যেমন যে Divisibleদেয় Trueজন্য Reverseভাজক এর ঘ অনুক্রম।


সুতরাং, Divisibleমূলত কোনও গজিন্টা চেইন যাচাই করার জন্য অন্তর্নির্মিত?
ছাতা

@ ছত্রাক এটি সঠিক বিভাজন জন্য পরীক্ষা করে না।
নেজেনিসিস

3

হাস্কেল, 51 বাইট

f 1=[[1]]
f n=[g++[n]|k<-[1..n-1],n`mod`k<1,g<-f k]

পুনরাবৃত্তভাবে সঠিক বিভাজক এবং সংযোজন এর gozinta চেইন সন্ধান করুন n

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


আমি মনে করি সঠিকভাবে পরিচালনা করার জন্য অতিরিক্ত creditণ থাকা উচিত 1। যেহেতু আমরা সম্মিলিতভাবে ছাড়ের সিদ্ধান্ত নিয়েছি 1, আপনি কি সেই মামলাটি সরিয়ে 10 বাইট বাঁচাতে পারবেন?
ছাতা

@ অম্ব্রেলা 1এই অ্যালগরিদমের কোনও বিশেষ ক্ষেত্রে নয়, এটি পুনরাবৃত্তির জন্য বেস কেস হিসাবে প্রয়োজন। নিজস্বভাবে, দ্বিতীয় সংজ্ঞায়িত সমীকরণ কেবল খালি তালিকাটি ফিরিয়ে দিতে পারে।
খ্রিস্টান সিভর্স

আমি দেখি. আমার সমাধান (এখনও আনপোস্টেড) [[1]]বেস হিসাবেও ব্যবহার করে।
ছাতা

3

হাস্কেল (ল্যাম্বডাবোট), 92 85 বাইট

x#y|x==y=[[x]]|1>0=(guard(mod x y<1)>>(y:).map(y*)<$>div x y#2)++x#(y+1)
map(1:).(#2)

আমদানি করা guardপ্রয়োজন যেহেতু ল্যাম্বডাবোট হাসেলকে প্রয়োজন Control.Monad। মূল ফাংশনটি একটি বেনামি ফাংশন, যা আমাকে বলা হচ্ছে অনুমোদিত এবং এটি কয়েকটা বাইট বন্ধ করে দেয়।

লাইকনিকে সাতটি বাইট সংরক্ষণ করার জন্য ধন্যবাদ।

ব্যাখ্যা:

মনডা খুব কাজে লাগে।

x # y

এটি আমাদের পুনরাবৃত্ত ফাংশন যা সমস্ত আসল কাজ করে। xআমরা যে সংখ্যার উপরে জমেছি তা হ'ল (বিভাজকের পণ্য যা মান অবধি থাকে) এবং yএর পরের সংখ্যাটি আমাদের এটির মধ্যে ভাগ করার চেষ্টা করা উচিত।

 | x == y = [[x]]

যদি x সমান হয় yতবে আমরা পুনরাবৃত্তি সম্পন্ন করেছি। কেবলমাত্র xবর্তমান গোজিন্টা চেইনের সমাপ্তি হিসাবে ব্যবহার করুন এবং এটি ফিরিয়ে দিন।

 | 1 > 0 =

"সত্য" এর জন্য হাস্কেল গল্ফ-ইসম। এটি, এটি ডিফল্ট কেস।

(guard (mod x y < 1) >>

আমরা এখন তালিকা monad ভিতরে অপারেশন করছি। তালিকা মোনাডের মধ্যে, আমাদের একই সময়ে একাধিক পছন্দ করার ক্ষমতা রয়েছে। ক্লান্তি দিয়ে কোনও কিছুর "সমস্ত সম্ভাব্য" সন্ধান করার সময় এটি খুব সহায়ক। guardবিবৃতি "কেবলমাত্র নিচের পছন্দ বিবেচনা যদি একটি শর্ত সত্য" বলেছেন। এই ক্ষেত্রে, yবিভক্ত হলে কেবল নিম্নলিখিত পছন্দটি বিবেচনা করুন x

(y:) . map (y *) <$> div x y#2)

যদি yবিভাজন হয় x, তবে আমাদের কাছে yগজিন্টা চেইনে যুক্ত করার পছন্দ রয়েছে । এই ক্ষেত্রে, পুনরাবৃত্তভাবে কল করুন (#), সমান y = 2দিয়ে শুরু করুন , যেহেতু আমরা "ফ্যাক্টর আউট" করতে চাই যা আমরা কেবল শৃঙ্খলে যুক্ত করেছি। তারপরে, এই পুনরাবৃত্তির কল থেকে ফলাফল যাই হোক না কেন, এর মানগুলি দ্বারা একাধিক করুনxx / yyy আমরা তৈরি করেছি এবং yসরকারীভাবে গোজিন্টা চেইনে যুক্ত করব।

++

নীচের পছন্দটিও বিবেচনা করুন। এটি কেবলমাত্র দুটি তালিকাকে একসাথে যুক্ত করে, তবে একাকীভাবে আমরা এটিকে "এই জিনিসটি বা এই অন্য কাজটি করার মধ্যে চয়ন করুন" বলে মনে করতে পারি।

x # (y + 1)

অন্য বিকল্পটি কেবল পুনরাবৃত্তি চালিয়ে যাওয়া এবং মানটি ব্যবহার না করা y। যদি yভাগ না করে xতবে এটিই একমাত্র বিকল্প। যদি yবিভাজন হয় xতবে এই বিকল্পটি পাশাপাশি অন্য বিকল্প হিসাবে নেওয়া হবে এবং ফলাফলগুলি একত্রিত হবে।

map (1 :) . (# 2)

এটি প্রধান গোজিন্তা ফাংশন। এটি (#)তার যুক্তি দিয়ে কল করে পুনরাবৃত্তি শুরু করে । একজন 1, যে gozinta চেইন prepended কারণ (#)ফাংশন কখনো চেইন মধ্যে বেশী রাখে।


1
দুর্দান্ত ব্যাখ্যা! প্যাটার্ন গার্ডগুলি সমস্ত এক লাইনে রেখে আপনি কিছু বাইট সংরক্ষণ করতে পারেন। mod x y==0সংক্ষিপ্ত করা যেতে পারে mod x y<1। বেনামে ফাংশন অনুমোদিত হওয়ায় আপনার মূল ফাংশনটি পয়েন্টফ্রি হিসাবে লেখা যেতে পারে map(1:).(#2)
লাইকনি

3

হাস্কেল, 107 100 95 বাইট

f n=until(all(<2).map head)(>>=h)[[n]]
h l@(x:_)|x<2=[l]|1<2=map(:l)$filter((<1).mod x)[1..x-1]

হতে পারে আরও ভাল সমাপ্তির শর্ত আছে (এরকম কিছু করার চেষ্টা করা হয়েছে)

f n=i[[n]]
i x|g x==x=x|1<2=i$g x
g=(>>=h)

তবে এটি দীর্ঘ)। পুনরুদ্ধার 1পুনরাবৃত্তি 1এস বা ডুপ্লিকেটগুলি (ইন nubনা Prelude) বেশি বাইট হওয়ায় চেকটি বুদ্ধিমান বলে মনে হচ্ছে ।

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


3
(>>=h)জন্য(concatMap h)
মাইকেল ক্লেইন


পবিত্র বোকা আমি কি সম্পর্কে বোকা u...
লিফ উইলার্টস

3

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 73 বাইট

f=n=>n>1?[for(i of Array(n).keys())if(n%i<1)for(j of f(i))[...j,n]]:[[1]]

সুবিধাজনকভাবে n%0<1মিথ্যা।


2

জেলি , 17 বাইট

ḊṖŒP1ppWF€ḍ2\Ạ$Ðf

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


এটি ছিল চিত্তাকর্ষকভাবে দ্রুত। 1যদিও আপনার ফলাফলটি অপ্রত্যাশিত। আমি এর জন্য একটি সুনির্দিষ্ট ফলাফলটি পরিচালনা করতে সক্ষম হইনি 1, তবে আমি ধরে নিয়েছিলাম এটি ছিল [[1]]। আমি নিশ্চিতভাবে বলতে পারি না যে [1,1]এটি অন্যটি ফলাফলের ক্রমবর্ধমান ক্রমগুলি বাদ দিলে ভুল। থটস?
ছাতা

@ ছত্রাক আপনি উত্তরগুলি 1 এর জন্য কিছু করতে চাইতে পারেন
মিঃ এক্সকোডার

@Umbrella যদি একটা সমস্যা আমি +2 জন্য এটি ঠিক করতে পারেন (প্রতিস্থাপন ;€সঙ্গে ;Q¥€)।
এরিক দ্য আউটগল্ফার

2

গণিত, 104 বাইট

(S=Select)[Rest@S[Subsets@Divisors[t=#],FreeQ[#∣#2&@@@Partition[#,2,1],1>2]&],First@#==1&&Last@#==t&]&

FreeQ[...]হয়ে উঠতে পারেAnd@@BlockMap[#∣#2&@@#&,#,2,1]
JungHwan Min

খুব সুন্দর! তবে আমি একটি অতিরিক্ত বার্তা Developerপেয়েছি পার্টিশনম্যাপ :: nlen: - বার্তার পাঠ্য পাওয়া যায় নি - >> that কেন?
J42161217

BlockMapDeveloper`PartitionMapঅভ্যন্তরীণভাবে ফাংশনটি ব্যবহার করে তবে এটি যেহেতু এটি একটি বিকাশকারী ফাংশন, এতে কোনও ত্রুটি বার্তা নেই। 1 বা 0 টি উপাদান রয়েছে এমন তালিকার দ্বারা ত্রুটিটি ঘটেছিল, যা দিয়ে আপনি 2-পার্টিশন তৈরি করতে পারবেন না।
জংহওয়ান মিন

2

গণিত, 72 বাইট

Cases[Subsets@Divisors@#,{1,___,#}?(And@@BlockMap[#∣#2&@@#&,#,2,1]&)]&

ব্যাখ্যা

Divisors@#

ইনপুটটির সমস্ত বিভাজনগুলি সন্ধান করুন।

Subsets@ ...

সেই তালিকার সমস্ত উপসেট তৈরি করুন।

Cases[ ... ]

প্যাটার্নের সাথে মেলে এমন সমস্ত মামলা চয়ন করুন ...

{1,___,#}

1 দিয়ে শুরু এবং এর সাথে শেষ হচ্ছে <input>...

?( ... )

এবং শর্তটি সন্তুষ্ট করে ...

And@@BlockMap[#∣#2&@@#&,#,2,1]&

বাম উপাদান তালিকার সমস্ত 2-পার্টিশনের জন্য ডান উপাদানকে বিভক্ত করে, অফসেট 1।


2

টিআই-বেসিক, 76 বাইট

Input N
1→L1(1
Repeat Ans=2
While Ans<N
2Ans→L1(1+dim(L1
End
If Ans=N:Disp L1
dim(L1)-1→dim(L1
L1(Ans)+L1(Ans-(Ans>1→L1(Ans
End

ব্যাখ্যা

Input N                       Prompt user for N.
1→L1(1                        Initialize L1 to {1}, and also set Ans to 1.

Repeat Ans=2                  Loop until Ans is 2.
                              At this point in the loop, Ans holds the
                              last element of L1.

While Ans<N                   While the last element is less than N,
2Ans→L1(1+dim(L1              extend the list with twice that value.
End

If Ans=N:Disp L1              If the last element is N, display the list.

dim(L1)-1→dim(L1              Remove the last element, and place the new
                              list size in Ans.

L1(Ans)+L1(Ans-(Ans>1→L1(Ans  Add the second-to-last element to the last
                              element, thereby advancing to the next
                              multiple of the second-to-last element.
                              Avoid erroring when only one element remains
                              by adding the last element to itself.

End                           When the 1 is added to itself, stop looping.

উত্তর> 1 চেক এবং লুপের শর্তটি সরিয়ে, যদি দয়া করে এর পরিবর্তে কোনও ত্রুটি নিয়ে বেরিয়ে যাওয়ার অনুমতি দেওয়া হয় তবে আমি আরও 5 টি বাইট সংরক্ষণ করতে পারি। তবে আমি নিশ্চিত যে এটি অনুমোদিত।


আপনি কি এটি আপনার ক্যালকুলেটরে টাইপ করেছেন? কারণ এটি অপ্রত্যাশিত এবং কিছুটা চিত্তাকর্ষক।
ছাতা

হাঁ! টিআই-বেসিক সম্পর্কে জটিল অংশটি হ'ল কেবলমাত্র বৈশ্বিক চলক রয়েছে, সুতরাং তালিকাটি কার্যকরভাবে আমার পুনরাবৃত্তির স্ট্যাক হিসাবে ব্যবহার করতে হয়েছিল।
ক্যালক 84মানিয়াক

2

ম্যাথমেটিকা 86 77 বাইট

Select[Subsets@Divisors@#~Cases~{1,___,#},And@@BlockMap[#∣#2&@@#&,#,2,1]&]&

সংজ্ঞা দ্বারা নিষ্ঠুর বল।

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

9 বাইট সংরক্ষণের পরামর্শের জন্য @ জেনি_ম্যাথি এবং @ জংহওয়ানমিনকে ধন্যবাদ


1
আপনি FreeQ[#∣#2&@@@Partition[#,2,1],1>2]&]82 বাইটে যেতে (দ্বিতীয় যুক্তি হিসাবে) ব্যবহার করতে পারেন
J42161217

@ জেনি_ম্যাথি বা আরও ভাল,And@@BlockMap[#∣#2&@@#&,#,2,1]
জংহওয়ান মিন

1

তুষ , 17 16 বাইট

-1 বাইট, Zgarb ধন্যবাদ

foEẊ¦m`Je1⁰Ṗthḣ⁰

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


সংক্ষিপ্ত, কিন্তু ধীর। আমি 50ইনপুটটি রেখেছিলাম এবং এটির সময় শেষ হয়ে যায়। আপনার পদ্ধতির सार কি?
ছাতা

এটি মূলত সমস্ত সম্ভাব্য শৃঙ্খলা চেষ্টা করে এবং নির্দিষ্টগুলির সাথে মেলে
এমনগুলি

@ ছত্রি টিআইওর একটি 60-সেকেন্ড সময়সীমা শেষ হয়েছে, এটি প্রোগ্রামটির দোষ নয়।
এরিক দ্য আউটগল্ফার

o`:⁰:1হতে পারে`Je1⁰
জগারব

@Zgarb আবার ...
H.PWiz

0

পিএইচপি 147 141

অপ্রয়োজনীয় পরীক্ষা সরানোর জন্য সম্পাদিত

function g($i){$r=[[1]];for($j=2;$j<=$i;$j++)foreach($r as$c)if($j%end($c)<1&&$c[]=$j)$r[]=$c;foreach($r as$c)end($c)<$i?0:$R[]=$c;return$R;}

ব্যাখ্যা:

function g($i) {

বয়লারপ্লেট 15 অক্ষর :(

    $r = [[1]];

[[1]]প্রতিটি চেইন 1 হিসাবে শুরু ফলাফল ফলাফল সেট করুন। এটি 1 হিসাবে একটি ইনপুট হিসাবে সমর্থন বাড়ে।

    for ($j = 2; $j <= $i; $j++) {
        foreach ($r as $c) {
            if ($j % end($c) < 1) {
                $c[] = $j;
                $r[] = $c;
            }
        }
    }

2 থেকে প্রতিটি সংখ্যার জন্য $i, আমরা আমাদের সেটে প্রতিটি চেইন বর্তমান সংখ্যা দ্বারা এটি প্রসারিত করতে যাচ্ছি যদি তা Gozinta হয় , তবে, আমাদের ফলাফল সেটটিতে বর্ধিত চেইন যুক্ত করুন।

    foreach ($r as $c) {
        end($c) < $i ? 0 : $R[] = $c;
    }

আমাদের মধ্যবর্তী চেইনগুলি ফিল্টার করুন যা এটি তৈরি করে না $i

    return $R;
}

বয়লারপ্লেট 10 টি অক্ষর :(


-1

ম্যাথামেটিকাল

f[1] = {{1}};
f[n_] := f[n] = Append[n] /@ Apply[Join, Map[f, Most@Divisors@n]]

উত্তর অতিরিক্ত কল জন্য ক্যাশে করা হয়।


1
সাইটে স্বাগতম! এটি একটি কোড-গল্ফ তাই আপনার বাইট গণনা এবং সমস্ত অতিরিক্ত সাদা স্থান সরিয়ে দেওয়ার চেষ্টা করা উচিত, যা আমি সন্দেহ করি যে আপনার কিছু আছে।
গম উইজার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.