প্রাইমগুলির ফ্যাকটোরিয়াল অনুপাত হিসাবে যুক্তিযুক্ত সংখ্যা রচনা করা


19

দ্রষ্টব্য: এই চ্যালেঞ্জটি স্যান্ডবক্সে পোস্ট করা হয়েছে ।

ভূমিকা

এই চ্যালেঞ্জটি ২০০৯ পুতনম বি 1 দ্বারা অনুপ্রাণিত , একটি স্নাতক গণিত প্রতিযোগিতার একটি সমস্যা। নিম্নরূপ সমস্যা হয়:

দেখান যে প্রতিটি ধনাত্মক যুক্তিযুক্ত সংখ্যাগুলি প্রাইমগুলির ফ্যাকটোরিয়ালগুলির পণ্যগুলির ভাগফল হিসাবে লেখা যেতে পারে। উদাহরণ স্বরূপ,

$ rac frac {10} 9 = rac frac {2! d সিডট 5!} {3! \ সিডট 3! \ সিডট 3!}। $

চ্যালেঞ্জ

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

মন্তব্য

  • প্রথম তালিকায় এবং দ্বিতীয় তালিকায় উভয়ই এমন কোনও প্রাইম থাকতে পারে না; তবে যে কোনও তালিকায় একজনের ইচ্ছা অনুসারে একাধিকবার উপস্থিত হতে পারে।
  • ইনপুটগুলি 1 থেকে 65535 এর মধ্যে প্রতিটি (অযৌক্তিকভাবে) ধরে নেওয়া যেতে পারে; যাইহোক, এটি ধরে নেওয়া যায় না যে আপনার যে সংখ্যাগুলির আউটপুট প্রয়োজন হবে তার ফ্যাক্টরিয়ালগুলি এই সীমার মধ্যে থাকবে।

উদাহরণ ইনপুট এবং আউটপুট

এখানে আইনি ইনপুট এবং আউটপুটগুলির উদাহরণ রয়েছে।

input=>output
10,9 => [2,5],[3,3,3]
2,1 => [2],[]
3,1 => [3],[2]
1,5 => [2,3,2],[5]     (elements of a list may be in any order)
3,2 => [3],[2,2]
6,1 => [3],[]

ইনপুটগুলি (২,২), (০,৩), (৩,০), (৩,6) এবং (১,65৫৫36) অবৈধ ইনপুট (যেমন আপনার প্রোগ্রামটি কোনও নির্দিষ্টভাবে তাদের আচরণ করার দরকার নেই) )। এখানে অবৈধ আউটপুটগুলির কয়েকটি উদাহরণ রয়েছে:

1,2 => [2],[2,2] (2 is in both returned lists)
5,2 => [5],[2,4] (4 is not prime)
2,1 => [2],[1] (1 is not prime either)
3,2 => [3],[2] (3!/2! = 3, not 3/2)

স্কোরিং

এটি , তাই বাইটের মধ্যে সর্বনিম্ন স্কোর!


উত্তরটি প্রকাশের একাধিক উপায় থাকলে ইভেন্টে কোনও প্রকার ন্যূনতম হ্রাস যুক্তি দেওয়া প্রয়োজন? উদাহরণস্বরূপ 10/9= [2*5]/[3*3]= [(2!/1!) * (5!/4!)] / [(3!/2!) * (3!/2!)]= [2! * 5! * 2! * 2!] / [3! * 3! * 1! * 4!]= (2! * 2! * 2! *5!) / (3! * 3! * 4!)
ডিজিটাল ট্রমা

পুনঃটুইট তবে ৪ টি প্রধান নয়, সুতরাং দ্বিতীয়টি বৈধ হবে না। আমি বিশ্বাস করি (এবং যদি আপনি চান তবে প্রশ্নটিতে একটি প্রমাণ লিখতে পারেন) যে কোনও প্রতিনিধিত্ব অনন্য।
কার্ল শিল্ডক্র্যাট

এটা ভগ্নাংশ হিসাবে ইনপুট নিতে ঠিক আছে 10/9বদলে সংখ্যার একটি যুগল 10এবং 9?
মিশা লাভরভ

নিবন্ধন করুন আমি প্রতিফলিত করতে প্রশ্ন সম্পাদনা করব।
কার্ল শিল্ডক্র্যাট

@ কার্লশিল্ডক্রাট ধন্যবাদ - হ্যাঁ এটি সাহায্য করে - আমি ভেবেছিলাম আমি কিছু মিস করছি
ডিজিটাল ট্রমা

উত্তর:


5

05AB1E , 54 53 48 46 40 35 33 32 28 বাইট tes

[D¿÷Z#DÓ€gZD<ØŠQ*DˆR!*]¯øεʒĀ

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: কেবলমাত্র ASCII- এর জন্য 2 বাইট সংরক্ষণ করা হয়েছে সংরক্ষিত 1 2 3 4 @Emigna ধন্যবাদ বাইট। (আমাকে কেবল আরও একটি সঞ্চয় করতে হবে এবং আমি আমার মূল বাইট গণনা অর্ধেকে নেমে যাচ্ছি!) ব্যাখ্যা:

[       Begin an infinite loop
D¿÷     Reduce to lowest terms
Z#      Exit the loop if the (largest) value is 1
DÓ€g    Find the index of the largest prime factor of each value
Z       Take the maximum
D<ØŠ    Convert index back to prime and save for later
Q       Convert to an pair of which value had the largest prime factor
*       Convert to an pair with that prime factor and zero
Dˆ      Save the pair in the global array for later
R!*     Multiply the other input value by the factorial of the prime
]       End of infinite loop
¯ø      Collect all the saved primes
εʒĀ     Forget all the saved 0s

আমি "সংবেদনশীল" স্ক্রিপ্টগুলি পছন্দ করি -¦D
রেডক্লুভার



5

গণিত, 175 177 169 154 108 বাইট

Join@@@Table[x[[1]],{s,{1,-1}},{x,r@#},x[[2]]s]&@*(If[#==1,1,{p,e}=Last@(r=FactorInteger)@#;p^e#0[p!^-e#]]&)

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

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

এটি দুটি ফাংশনের সংমিশ্রণ। প্রথম, যা ungolfs

If[# == 1,
  1,
  {p,e} = Last[FactorInteger[#]];
  p^e * #0[p!^-e * #]
]&

প্রকৃতপক্ষে কাঙ্ক্ষিত ফ্যাক্টেরাইজেশন গণনা করার জন্য একটি পুনরাবৃত্ত ফাংশন। বিশেষত, একটি যৌক্তিক ইনপুট দেওয়া x, আমরা প্রাইমগুলি গণনা করি যার ফ্যাক্টরিয়ালগুলি অঙ্ক এবং ডিনোমিনেটরে থাকা উচিত এবং সেই সমস্ত প্রাইমের সাথে একসাথে গুণিতগুলি ভগ্নাংশটি ফিরিয়ে দেয়। (উদাহরণস্বরূপ, ইনপুটটিতে 10/9 = 2!*5!/(3!*3!*3!), আমরা ফিরে আসি 10/27 = 2*5/(3*3*3)))

আমরা প্রতিটি পদক্ষেপে বৃহত্তম প্রধান ফ্যাক্টরটির সাথে ডিল করে এটি করি: যদি পি x এর ফ্যাক্টরাইজেশন ঘটতে থাকলে আমরা নিশ্চিত পি! গৌণিক-গুণকনির্ণয় ঘটে, এবং P দ্বারা বিভক্ত X এ recurse! e

(এর আগে, আমার আরও চালাক কৌশল ছিল যা পি এর আগে পূর্বের প্রাথমিক সংখ্যাটি দেখে বিপুল সংখ্যক এড়ানো যায়, তবে ম্যাথামেটিকাগুলি 65521 এর মতো বড় সংখ্যাগুলি সহজেই পরিচালনা করতে পারে! সুতরাং ইতিহাসের কোনও পুরানো সংস্করণ আপনি খুঁজে পেতে পারবেন না is অনেক দ্রুত: আমার কম্পিউটারে, এই সংস্করণটি 1.6 সেকেন্ডের মধ্যে পরিচালিত ইনপুটগুলিতে 0.05 সেকেন্ড সময় নিয়েছে))

দ্বিতীয় ফাংশন প্রথম ফাংশনের আউটপুটটিকে প্রাইমগুলির তালিকায় পরিণত করে।

Join @@@ 
  Table[x[[1]],
    {s,{1,-1}},
    {x,FactorInteger[#]},
    x[[2]]*s
  ]&

জন্য s=1(ধনাত্মক ক্ষমতা) এবং s=-1(ঋণাত্মক ক্ষমতা), এবং প্রতিটি শব্দ জন্য {prime,exponent}গুণকনির্ণয় মধ্যেr@# , আমরা মৌলিক সংখ্যা পুনরাবৃত্তি prime exponent*sঅনেকবার।

109 62 বাইট সহ ননকম্পিটিং সংস্করণ

If[#==1,∇1=1,{p,e}=Last@FactorInteger@#;(∇p)^e#0[p!^-e#]]&

উপরের মতো একই, তবে তালিকার হিসাবে আউটপুট দেওয়ার পরিবর্তে fact অপারেটর (কারণ এটির কোনও অন্তর্নিহিত অর্থ নেই) ব্যবহার করে ফ্যাক্টরিওরিয়ালগুলির জন্য স্ট্যান্ড-ইন ব্যবহার করে আউটপুটকে এক্সপ্রেশন হিসাবে আউটপুট দেয়। সুতরাং, একটি ইনপুট 10/9একটি আউটপুট দেয়(∇2*∇5)/(∇3)^3 প্রতিনিধিত্ব করতে(2!*5!)/(3!)^3

এটি সংক্ষিপ্ত কারণ আমরা ফাংশনের দ্বিতীয় অংশটি এড়িয়ে চলেছি।


+2 বাইট: অ্যাসাইনমেন্ট f=First ম্যাথমেটিকাকে মন খারাপ থেকে বাঁচাতে সঠিক জায়গায় করতে হবে।

-8 বাইট: পূর্ণসংখ্যা আউটপুটগুলির জন্য একটি বাগ স্থির করে, যা আসলে কোডটি ছোট করে তোলে।

-15 বাইট: FactorIntegerসাজানো আউটপুট ফেরত দেয়, যা আমরা সুবিধা নিতে পারি।

-46 by বাইট: আমাদের আসলে চালাক হওয়ার দরকার নেই।


2

পাইথন 2, 220 202 195 183 বাইট

g=lambda a,b:a and g(b%a,a)or b;n,d=input();m=c=()
while n+d>2:
 t=n*d;f=p=2
 while t>p:
	if t%p:p+=1;f*=p
	else:t/=p
 if n%p:c+=p,;n*=f
 else:m+=p,;d*=f
 t=g(n,d);n/=t;d/=t
print m,c

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: @ মিঃ এক্সকোডারকে ধন্যবাদ 18 25 বাইট সংরক্ষণ করা হয়েছে। @ জোনাথনফ্রেচকে 12 বাইট সংরক্ষণ করা হয়েছে।



পাইথন 2 এ আপনি এটি আরও সংক্ষিপ্ত করতে পারেন, যেহেতু আপনি ইনডেন্টে ট্যাবগুলির সাথে একাধিক স্পেস প্রতিস্থাপন করতে পারেন
মিস্টার এক্সকোডার


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