একটি ফ্যাক্টরীকরণ গেম


13

ইনপুট

একটি একক পূর্ণসংখ্যা ।1এক্স1015

আউটপুট

প্রোডাক্ট থাকা স্বতন্ত্র ধনাত্মক পূর্ণসংখ্যার সর্বাধিক সংখ্যা ।এক্স

উদাহরণ

ইনপুট: 1099511627776. আউটপুট: 9. কারণগুলির একটি সম্ভাব্য অনুকূল তালিকা: (1, 2, 4, 8, 16, 32, 64, 128, 4096)।

ইনপুট: 127381. আউটপুট 4. কারণগুলির একটি সম্ভাব্য অনুকূল তালিকা: (1, 17, 59, 127)।

এই পুরানো প্রশ্নের সাথে সম্পর্কিত


9
আপনি আরও কয়েকটি পরীক্ষার মামলা যুক্ত করতে পারেন? (যথাযথভাবে যুক্তিসঙ্গত আকারের
Ar

8
বেশিরভাগ উত্তরে আপনার মন্তব্য দেওয়া: আপনি যদি এর পরিবর্তে দক্ষ কোডটি সন্ধান করেন তবে অবশ্যই এটি হিসাবে ট্যাগ হওয়া উচিত নয় code-golf। আপনি হয় fastest-codeবা fastest-algorithmআসন্ন চ্যালেঞ্জ জন্য বিবেচনা করতে পারেন । আপনি যদি সত্যই নির্দিষ্ট সীমার মধ্যে সীমিত সময়ে সমস্ত উত্তর কাজ করতে চান, তবে এটি স্পষ্টভাবে উল্লেখ করা উচিত ছিল। (এবং আমি আরও ছোট পরিসরের প্রস্তাব দিয়েছি যাতে এটির সাথে code-golfসম্পূর্ণ দ্বন্দ্ব না ঘটে ))
আরনাউল্ড

@ আর্নল্ড না আমি এটিকে কোড-গল্ফ তৈরি করতে যত্নশীল এবং এর জন্য কারও বিচার হয় না। কোডটি নির্দিষ্ট ইনপুট রেঞ্জের জন্য চালানো যেতে পারে তবে এটি দুর্দান্ত cool
আনুশ


1
জন্য x=1, 2, ...আমি পেতে f(x)=1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 3, 4, 2, 3যা আমি OEIS খুঁজে না। এটি যথেষ্ট স্পষ্ট যে বিবরণী সংখ্যার জন্য রেকর্ড উপস্থিত হবে x। উদাহরণস্বরূপ সবচেয়ে ছোট xযেমন f(x)=13হবে 13!। আমার ধারণা অনুমান করা হয় fকেবলমাত্র মৌলিক ফ্যাক্টেরাইজেশনের ক্ষয়কারীদের উপর। সুতরাং f(13^4*19^7*29^2)আমরা সহজ করতে পারে তা খুঁজে পেতে f(2^7*3^4*5^2)
জেপ্প স্টিগ

উত্তর:


5

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

Max[Length/@Cases[Subsets@Divisors@#,{a__}/;1a==#]]&

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

4-বাইট সংরক্ষিত হয়েছে @ বাতিটাকে ধন্যবাদ

এখানে একটি 153 বাইট সংস্করণও রয়েছে যা গণনা করে 1099511627776এবং10^15

Max[Length/@Table[s=RandomSample@Flatten[Table@@@FactorInteger[#]];Last@Select[Times@@@TakeList[s,#]&/@IntegerPartitions@Length@s,DuplicateFreeQ],5!]]+1&      

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

এর ফলাফল 10^15হল 12

{1, 2, 4, 5, 10, 16, 25, 40, 50, 100, 125, 250}


1099511627776 দিয়ে ক্র্যাশ হয়েছে
আনুশ

7
@ আনুশ এটি ক্রাশ হয় না। শুধু স্মৃতি দরকার। স্মৃতি সীমাবদ্ধতা সম্পর্কে আপনি কিছু বলেননি। এটি কোড গল্ফ
J42161217

হ্যাঁ আমি বুঝতে পারি আপনি যদি ঠিকভাবে কোডটিতে প্রশ্নে উল্লিখিত ইনপুট রেঞ্জগুলি চালাতে পারতেন তবে এটি ঠিক হবে।
আনুশ

6
@ আনুশ এটি কোড-গল্ফ। সুন্দর উত্তর নেই। আপনার মানদণ্ড নির্দিষ্ট করুন। একটি উত্তর হয় বৈধ বা না। আমি মনে করি যে এখানে সমস্যাটিই প্রশ্ন ... সম্ভবত আপনার এটি "সর্বাধিক পর্যাপ্ত অ্যালগরিদম"
J42161217

3
@ আনুশ আমি আমার উত্তরে একটি সম্পাদনা করেছি এবং আরও একটি সংস্করণ যুক্ত করেছি যা আপনি এটি পরীক্ষা করতে চান এমন ক্ষেত্রে সত্যই দ্রুত এবং দক্ষ
J42161217


3

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

খুব অদক্ষ। টিআইওর সাথে প্রচুর পরিমাণে বিভাজক সংখ্যার জন্য সময় শেষ হবে।

ÑæʒPQ}€gZ

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

ব্যাখ্যা

Ñ          # push a list of divisors of the input
 æ         # push the powerset of that list
  ʒPQ}     # filter, keep only the lists whose product is the input
      €g   # get the length of each
        Z  # take the maximum

আপনার টিআইও কোডটি 9 এর পরিবর্তে 3 আউটপুট বলে মনে হচ্ছে
আনুশ

@ আনুশ: এটি আপনার উদাহরণের চেয়ে আলাদা একটি সংখ্যা (যেহেতু অনেকগুলি কারণের কারণে এটি এক বার হয়ে গেছে)। আমার সম্ভবত আরও একটি স্বতন্ত্র উদাহরণ ব্যবহার করা উচিত।
এমিগিনা

€gZéθgএকই বাইটকাউন্টের চেয়ে কিছুটা দক্ষ ।
গ্রিমি

@ গ্রিমি: সত্য। এটির চেয়ে বেশি পার্থক্য হবে না কারণ এটি ফিল্টার যা এখানে বড় খারাপ লোক, তবে এটি আরও বেশি দক্ষ হয়ে
উঠলে

2

পার্ল 6 , 38 বাইট

{$!=$_;+grep {$!%%$_&&($!/=$_)},1..$_}

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

বিভাজক নির্বাচন করার জন্য লোভী দৃষ্টিভঙ্গি গ্রহণ করে।


1099511627776 দিয়ে শেষ হচ্ছে না
আনুশ

6
@ আনুশ ওয়েল, এটি শেষ পর্যন্ত শেষ হয় । সাধারণত, প্রোগ্রামটির অ্যালগরিদম কোনও ইনপুট নিয়ে কাজ করতে পারে, যদি এটি যতটা মেমরি এবং সময় চায় তার চেয়ে বেশি দেওয়া হলে উত্তরটি বৈধ। যেহেতু এটি কোড-গল্ফ , তাই আমি এটিকে কোড দৈর্ঘ্যের জন্য অনুকূলিত করেছি, অ্যালগরিদমিক জটিলতার জন্য নয়
জো কিং

2

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

f=(n,i=0)=>n%++i?n>i&&f(n,i):1+f(n/i,i)

এখানে সম্ভবত কয়েকটি বাইট রয়েছে যা এখানে এবং সেভ করা যায়। কারণগুলির জন্য কেবল লোভী অ্যালগরিদম ব্যবহার করে।


2

জেলি , 9 বাইট

ŒPP=³ƊƇẈṀ

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

-1 বাইট কাউকে ধন্যবাদ

-2 বাইটস এরিকটআউটগলফারকে ধন্যবাদ


ওআইএস সুপারসাইকারের জন্য একটি ইনপুট প্রস্তুত করার সময়, আমি একটি 11-বাইট সম্ভবত গল্ফযোগ্য জেলি প্রোগ্রাম তৈরি করেছি (এটি একটি ভিন্ন পদ্ধতির ব্যবহার করে), এবং জেলি উত্তর পোস্ট করার সম্ভাবনা নেই তাই আমি ভান করি যে আপনার সমাধান থেকে আমি একটি বাইট গল্ফ করেছি: ÆE×8‘½’:2S‘(এটি) A003056 এর জন্য OEIS "সূত্র" বিভাগের শক্তি নিয়ে কাজ করে)। দাবি অস্বীকার: এটি ভুল হতে পারে তবে এটি পরীক্ষার ক্ষেত্রে কাজ করে।
আমার সর্বনামটি

1099511627776
আনুশ

@ সোমোন 36 এর জন্য কাজ করে না তবে ধন্যবাদ
হাইপার নিউট্রিনো

@ আনুশ হ্যাঁ, এটি সত্যিই ধীর কারণ কারণ আমি এটিকে কোড-গল্ফ করেছি, দক্ষতার জন্য অনুকূল নয়
হাইপার নিউট্রিনো

1
ÆDএক্স21


2

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

f;?⟨⊇×⟩l

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

(নির্বোধ পদ্ধতির মাধ্যমে, {~×≠l}ᶠ⌉অতিরিক্ত 1s এর সাথে মুছে ফেলার আগে তার অসংখ্য সমস্যা সমাধান করা যায় এবং এটি আসলে শেষ করতে ব্যর্থ হয় though যদিও এটি কোনও সমস্যা নয়, কারণ এটি একই বাইট গণনার জন্য!)

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

            The output
       l    is the length of
    ⊇       a sublist (the largest satisfying these constraints)
f           of the factors of
            the input
 ; ⟨  ⟩     which
     ×      with its elements multiplied together
  ?         is the input.


1

গাইয়া , 10 9 বাইট

Π=
dz↑⁇(l

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

অন্য কোথাও যেমন দেখা যায় একই "অ্যালগরিদম" অনুসরণ করে - সংখ্যার সমান পণ্যের সাথে দীর্ঘতম ডিভাইডার পাওয়ারসেটটি ফিল্টার করুন এবং তার দৈর্ঘ্য ফিরিয়ে দিন।

	| helper function
Π=	| is prod(list)==n (implicit)?
	|
	| main function; implicitly takes n
dz	| divisor powerset (in decreasing order of size)
  ↑⁇	| filter by helper function
    (l	| take the first element and take the length (implicitly output)

0

ক্ল্যাম , 15 বাইট

p}_`nq#:;qQ@s~Q

টিআইও লিঙ্কটি শীঘ্রই আসবে (যখন ডেনিস টানবে)

মূলত @ Emigna এর 05AB1E সমাধানের একটি বন্দর।

ব্যাখ্যা

                - Implicit Q = first input
p               - Print...
 }              - The last element of...
  _             - Sorted...
   `nq          - Lengths of... (map q => q.len)
           @s   - Items in powerset of
             ~Q - Proper divisors of Q
      #         - Where... (filter)
        ;q      - Product of subset
       :        - Equals...
          Q     - Q

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 54 বাইট

int f(int n,int i=0)=>n%++i<1?1+f(n/i,i):n>i?f(n,i):0;

@ ভ্রোগেহেগেল এবং @ জোকিংয়ের উত্তরগুলির মতো একই পদ্ধতির ব্যবহার করে।

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


ধরে নিলাম আমি আপনার যুক্তি সঠিকভাবে প্রয়োগ করেছি, একটি 53-বাইট সমাধান (যে আমি "রিটার্ন" কীওয়ার্ডটি থেকে মুক্তি দিতে পারি না): এটি অনলাইনে চেষ্টা করুন!
আমার সর্বনাম

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

0

রুবি , 34 বাইট

স্পষ্টতই সেই বিশাল সংখ্যায় সময় বের হয়েছে তবে শেষ পর্যন্ত সময় বের হয়ে যাবে যদি অন্য কোনও মেশিনে পর্যাপ্ত সময় দেওয়া হয়।

->n{(1..n).count{|e|n%e<1?n/=e:p}}

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

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