যৌক্তিক সংখ্যাগুলির এলসিএম


18

সংখ্যার একটি সেটের লঘিষ্ট সাধারণ গুণিতক (LCM) Aপূর্ণসংখ্যা সবচেয়ে ছোট bযে এই ধরনের b/aসব পূর্ণসংখ্যার জন্য একটি পূর্ণসংখ্যা aমধ্যে A। এই সংজ্ঞাটি যুক্তিসঙ্গত সংখ্যায় বাড়ানো যেতে পারে!

কার্য

ক্ষুদ্রতম ইতিবাচক খুঁজুন মূলদ b যেমন যে b/aএকটি হল পূর্ণসংখ্যা সবার জন্য rationals a ইনপুট হবে।

বিধি

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

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

In:  3
Out: 3

In:  1/17
Out: 1/17

In:  1/2, 3/4
Out: 3/2

In:  1/3, 2/8
Out: 1

In:  1/4, 3
Out: 3

In:  2/5, 3
Out: 6

In:  1/2, 3/4, 5/6, 7/8
Out: 105/2

এটি , তাই সাবমিশনগুলি সর্বনিম্ন বাইট ব্যবহার করে জিতে!


4
দ্রষ্টব্য: LCM[numerators]/GCD[denominators]যখন ইনপুটটিতে অ-হ্রাস যুক্তিযুক্ত সংখ্যা থাকে তখন কম্পিউটিং কাজ করতে পারে না। যেমন 1/3, 2/8
জংহওয়ান মিন

তাই আমি যদি এটি হ্রাস করি তবে এটি কাজ করবে?
ফাঁস নুন

@ লিক্যনুন হ্যাঁ, এটি হবে।
জংহওয়ান মিন

লোকেদের অন্তর্নির্মিত উত্তর জমা দিতে উত্সাহিত করার জন্য, আমি প্রশ্নটি সম্পাদনা করেছি, বিল্টিন উত্তরগুলি অ-প্রতিযোগিতামূলক করে (এখনও অনুমোদিত) making যদি এটি সমস্যা হয় তবে আমি আমার সম্পাদনাটি রোলব্যাক করব।
জংহওয়ান মিন

কোনও এলসিএম অন্তর্নির্মিত ব্যবহারের ক্ষেত্রে কী হবে তবে কেবল পূর্ণসংখ্যার সাথে - প্রতিযোগিতা করে বা না?
জোনাথন অ্যালান

উত্তর:


5

জেলি , 19 বাইট

g/:@$€Z©Ḣæl/;®Ḣg/$¤

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


1
tfw জেলি ভগ্নাংশের সাথে চুষে বেড়ায়
এরিক দি আউটগলফার


2
এর সাথে আরও দুটি বাইট সংরক্ষণ করুন::g/$€ZµḢæl/,Ḣg/$
জোনাথন অ্যালান


6

জে, 3 বাইট, প্রতিযোগী।

*./

যুক্তিযুক্ত ইনপুটগুলির একটি তালিকা দেওয়া, এটি এর মাধ্যমে এলসিএমকে ভাঁজ করে।


4

সেড, 374 (373 + 1) বাইট

সেডের -Eপতাকাগুলি একটি বাইট হিসাবে গণনা করা হয়। দ্রষ্টব্য: আমি এটি এখনও গল্ফ করার চেষ্টা করিনি, এবং সম্ভবত বেশ কিছু সময়ের জন্য এটি করব না।
ইনপুট আনারিতে নেওয়া হয়, এবং আউটপুট আনারিতে থাকে। স্পেস অবশ্যই প্রতিটি ভগ্নাংশকে ঘিরে থাকবে। উদাহরণ: echo " 1/111 111/11111 111111/111 "

:d;s, (1*)/\1(1*), \1/\22,;s,(1*)(1*)/\2 ,2\1/\2 ,;td;s,1*(1/22*),\1,g;s,(22*/1)1*,\1,g;:r;s,((1*)/1*)2,\1\2,;s,2(1*/(1*)),\2\1,;tr;h;s,1*/,,g;:g;s/^(1*) 1(1*) 1(1*)/1\1 \2 \3/;tg;s/  */ /g;s/^/ /;/1 1/bg;x;s,/1*,,g;s/^( 1*)( 1*)/\1\2\2/;:l;s/^(1*) (1*) \2(1*)/\1\2 \2 \3/;tl;/  $/be;/  /{s/^(1*) 1*  1*( 1*)/ \1\2\2/;bl};s/^(1* 1* )(1*) (1*)/\1\2\3 \3/;bl;:e;G;s, *\n *,/,

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



3

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

a=>a.reduce(([b,c],[d,e,g=(b,c)=>c?g(c,b%c):b,h=g(b*e,c*d),i=g(b*d,h)])=>[b*d/i,h/i])

কোন বিল্টিন তাকান! সন্দেহ নেই যে কেউ পুনরাবৃত্তির পদ্ধতির বা কোনও কিছু ব্যবহার করে এটি বীট করবে।


3

পরী / জিপি , 3 বাইট, প্রতিযোগিতামূলক

lcm

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


@ জংহওয়ানমিন এটির অর্থ কি কোনও জিসিডি অন্তর্নির্মিত অনুমোদিত?
আলেফাল্ফ

ভাল যুক্তি. হ্যাঁ, যতক্ষণ না এর ইনপুটগুলি কেবলমাত্র পূর্ণসংখ্যা হয়।
জংহওয়ান মিন

2

পার্ল 6 ,  46  42 বাইট

{[lcm](@_».numerator)/[gcd] @_».denominator}

এটা পরীক্ষা করো

{[lcm](($/=@_».nude)[*;0])/[gcd] $/[*;1]}

এটা পরীক্ষা করো

ইনপুট হ'ল যুক্তিযুক্ত সংখ্যার একটি তালিকা ।

সম্প্রসারিত:

{ # bare block lambda with implicit parameter list 「@_」

  [lcm](            # reduce using &infix:<lcm>
    (
      $/ = @_».nude # store in 「$/」 a list of the NUmerators and DEnominiators
                    # ((1,2), (3,4))

    )[
      *;            # from all of the first level 「*」,
      0             # but only the 0th of the second level (numerators)
    ]
  )
  /
  [gcd] $/[ *; 1 ]  # gcd of the denominators
}

2

রেটিনা , 117 বাইট

\d+
$*
\b(1+)(\1)*/(\1)+\b
$#2$*11/$#3$*
{`^((1+)\2*)/(1+)+ (\2)+/\3+\b
$1 $#4$*1/$3
}`\G1(?=1* (1+))|\G 1+
$1
1+
$.&

এটি অনলাইন চেষ্টা করুন! অনুপযুক্ত ভগ্নাংশের কোনও স্থান-বিভাজিত সিরিজ হিসাবে ইনপুট নেয় (কোনও পূর্ণসংখ্যা বা মিশ্র সংখ্যা নেই)। ব্যাখ্যা:

\d+
$*

দশমিক দশকে অ্যানারিতে রূপান্তর করে।

\b(1+)(\1)*/(\1)+\b
$#2$*11/$#3$*

এটি প্রতিটি ভগ্নাংশকে তার সর্বনিম্ন শর্তে হ্রাস করে। ক্যাপচার গ্রুপ 1 সংখ্যক এবং ডিনোমিনেটরের জিসিডি উপস্থাপন করে, তাই আমরা এর আগে এবং পরে ক্যাপচারগুলির সংখ্যা গণনা করি /\b(1+)+/(\1)+\bকোনও কারণে ক্যাপচারের সংখ্যা সঠিকভাবে গণনা করা হয় বলে মনে হয় না, তাই আমি অতিরিক্ত ক্যাপচারিং গ্রুপ ব্যবহার করি এবং ফলাফলটিতে 1 যুক্ত করি।

{`^((1+)\2*)/(1+)+ (\2)+/\3+\b
$1 $#4$*1/$3

এটি বেশ কয়েকটি কাজ করে। ক্যাপচার গ্রুপ 2 প্রথম দুটি ভগ্নাংশের সংখ্যার জিসিডির প্রতিনিধিত্ব করে, যখন ক্যাপচার গ্রুপ 3 বিভাজনের জিসিডি উপস্থাপন করে। $#4সুতরাং তাদের জিসিডি দ্বারা বিভক্ত দ্বিতীয় সংখ্যা। (আবারও, আমি প্রথম সংখ্যার ক্যাপচারের সংখ্যাটি পারলাম না, তবে তাদের জিসিডি দিয়ে আমার কেবল একটি সংখ্যা ভাগ করা দরকার, সুতরাং এটির জন্য আমার এত বেশি খরচ হয় না))

}`\G1(?=1* (1+))|\G 1+
$1

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

1+
$.&

অ্যানারিটিকে দশমিক দশকে রূপান্তর করে।


2

কমন লিস্প, 154 বাইট

(defun f(l &aux(s(pairlis l l)))(loop(and(eval`(=,@(mapcar'car s)))(return(caar s)))(let((x(assoc(reduce'min s :key'car)s)))(rplaca x(+(car x)(cdr x))))))

অ্যালগরিদম ব্যবহৃত হয়েছে (পূর্ণসংখ্যার জন্য নির্দিষ্ট, তবে যুক্তিগুলির জন্যও কাজ করে)।

উপাদানগুলির প্রাথমিক মানগুলি জানতে প্রথমে নিজের সাথে ইনপুট ডেটার একটি সহযোগী তালিকা তৈরি করুন, সুতরাং অপারেটিং ক্রম তালিকার "গাড়ি" এর দ্বারা দেওয়া হয়েছে।

(defun f(l &aux (s (pairlis l l)))        ; make the associative list
  (loop
     (when (eval `(= ,@(mapcar 'car s))) ; when the car are all equal
       (return (caar s)))                 ; exit with the first one
     (let ((x (assoc (reduce 'min s :key 'car) s))) ; find the (first) least element
       (rplaca x (+ (car x) (cdr x))))))  ; replace its car adding the original value (cdr)

পরীক্ষার কেস:

CL-USER> (f '(3))
3
CL-USER> (f '(1/17))
1/17
CL-USER> (f '(1/2 3/4))
3/2
CL-USER> (f '(1/3 2/8))
1
CL-USER> (f '(1/4 3))
3
CL-USER> (f '(2/5 3))
6
CL-USER> (f '(1/2 3/4 5/6 7/8))
105/2

নোট: সমাধান builting ব্যবহার না করে হয় lcmএবং gcdযে পূর্ণসংখ্যার গ্রহণ।


W00t? আপনার REPL এ চেষ্টা করুন (/ (lcm 1 3 5 7) (gcd 2 4 6 8))
কাজ

@ কাজ, যেহেতু সমস্যা হিসাবে বলেছে যে, "এলসিএম / জিসিডি বিল্টিনগুলিতে যুক্তিযুক্ত সংখ্যাগুলি সরবরাহ করতে পারে এমন জমা দেওয়ার অনুমতি দেওয়া হয়েছে তবে প্রতিদ্বন্দ্বী নয়" ”
রেঞ্জো

লিস্পের কথায়, কঠোরভাবে বলতে গেলে, আমরা যখন ডাকি তখন আমরা আসলে যুক্তিযুক্ত (lcm 1 3 5 7)খাবারগুলি খাওয়াই, যেহেতু পূর্ণসংখ্যাগুলি মূলত যুক্তিগুলির একটি উপ-প্রকার, তবে আমি মনে করি নিয়মটি এমন কোনও lcmবা এর ব্যবহারকে বাদ দেবে বলে মনে করা হয় gcdযা যুক্তিযুক্ত ইনপুটগুলিকে অনুমতি দেয়।
কাজ

@ কাজ, অপস ... আমি নিয়মের ভুল ব্যাখ্যা করেছি! আমার কি পোস্টটি সরিয়ে দেওয়া উচিত? (সম্ভবত এটি কমন লিস্পের জন্য ভাল বিপণন নয় :)
রেঞ্জো

আমি কেবল একটি নোট রেখেছি যেটি বিল্ট-ইন পূর্ণসংখ্যা lcmএবং ব্যবহার না করেই এটি একটি সমাধান gcd
কাজ

1

গণিত, 3 বাইট, অ-প্রতিযোগিতামূলক

LCM

গণিতের অন্তর্নির্মিত LCMফাংশনটি মূলদ সংখ্যার ইনপুট পরিচালনা করতে সক্ষম।


3
আপনার নিজের প্রশ্নের উত্তর দেওয়া ঠিক আছে, আমি মনে করি না যে এটির জবাব দেওয়ার সত্যিকারের সম্ভাবনা রয়েছে এমন একটি সমাধান দিয়ে উত্তর দেওয়া খুব খেলাধুলা হয়: পি
বিটা ডেসে

@ বেটাডেহে হ্যাঁ ... সুতরাং এটি এখন প্রতিদ্বন্দ্বিতামূলক।
জংহওয়ান মিন


1

কমন লিস্প, 87 78 বাইট

ব্যবহার lcmএবং gcd, যার পূর্ণসংখ্যা ইনপুট রয়েছে:

(defun l(a)(/(apply #'lcm(mapcar #'numerator a))(apply #'gcd(mapcar #'denominator a))))

আরও গল্ফড:

(defun l(a)(eval`(/(lcm,@(mapcar'numerator a))(gcd,@(mapcar'denominator a))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.