সন্নিবেশের মাধ্যমে প্রধান কারণগুলির গণনা হ্রাস করুন


12

প্রদত্ত দুটি ধনাত্মক পূর্ণসংখ্যা একটি এবং বি , অবস্থান ফিরে আসতে পি যে ছোট ফলে পূর্ণসংখ্যা এর মৌলিক উত্পাদক (কাউন্টিং multiplicities) সংখ্যা, যখন বি হয় ঢোকানো মধ্যে একজনপি

উদাহরণস্বরূপ, এ = 1234 এবং বি = 32 প্রদত্ত , এগুলি হ'ল সম্ভাব্য সন্নিবেশগুলি ( পি 0-সূচকযুক্ত) এবং তাদের প্রধান কারণগুলির সাথে সম্পর্কিত তথ্য:

পি | ফলাফল | প্রধান উপাদান | Ω (এন) / গণনা

0 | 321234 | [2, 3, 37, 1447] | 4
1 | 132234 | [2, 3, 22039] | 3
2 | 123234 | [2, 3, 19, 23, 47] | 5
3 | 123324 | [2, 2, 3, 43, 239] | 5
4 | 123432 | [2, 2, 2, 3, 37, 139] | 6

আপনি দেখতে পাচ্ছেন যে ফলাফলটি সর্বনিম্ন সংখ্যক মৌলিক উপাদান রয়েছে, 3, যখন পি হয় 1. সুতরাং এই বিশেষ ক্ষেত্রে, আপনার 1 আউটপুট করা উচিত ।

চশমা

  • যদি ফলাফলটি হ্রাস করে এমন একাধিক অবস্থানের p থাকে তবে আপনি তাদের সমস্ত বা তার যে কোনও একটিকে আউটপুট চয়ন করতে পারেন।

  • আপনি পি -এর জন্য 0-ইনডেক্সিং বা 1-ইনডেক্সিং চয়ন করতে পারেন তবে এই পছন্দটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে।

  • এবং বি সংখ্যার পূর্ণসংখ্যা, স্ট্রিং বা তালিকা হিসাবে নেওয়া যেতে পারে।

  • আপনি যে কোনও প্রোগ্রামিং ভাষায় প্রতিযোগিতা করতে পারেন এবং যে কোনও মানক পদ্ধতির মাধ্যমে ইনপুট নিতে এবং আউটপুট সরবরাহ করতে পারেন , যখন এই লুফোলগুলি ডিফল্টরূপে নিষিদ্ধ। এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম জমা (বাইটে স্কোর) জয়!

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

এ, বি -> পি (0-সূচকযুক্ত) / পি (1-সূচিত)

1234, 32 -> 1/2
3456, 3 -> 4/5
378, 1824 -> 0/1
1824, 378 -> 4/5
67, 267 -> যে কোনও বা সকলের মধ্যে: [১, ২] / [২, ৩]
435, 1 -> যে কোনও বা সকলের মধ্যে: [1, 2, 3] / [2, 3, 4]
378100, 1878980901 -> যেকোন বা সকলের মধ্যে: [5, 6] / [6, 7]

সুবিধার্থে, এখানে প্রতিটি জোড়া ইনপুট উপস্থাপন করে এমন টিপলগুলির একটি তালিকা:

[(1234, 32), (3456, 3), (378, 1824), (1824, 378), (67, 267), (435, 1), (378100, 1878980901)]

1
আমি 05AB1E এর প্রতি পক্ষপাতদুষ্ট অনুভূতিটি পেয়েছি ...
কায়ার্ড কোইনরিঙ্গিংহিং

1
আমরা কি ফলাফলের সংখ্যাকে আউটপুট করতে পারি যা সন্নিবেশের সূচকের পরিবর্তে প্রাথমিক কারণগুলি হ্রাস পেয়েছে? যেমন আপনার প্রথম পরীক্ষার ক্ষেত্রে 132234পরিবর্তে 1
ডাইলান

2
@ এললান আমি এবার আর বলব না।
মিঃ এক্সকোডার

উত্তর:


8

হুশ , 16 বাইট

§◄öLpr§·++⁰↑↓oΘŀ

স্ট্রিং হিসাবে ইনপুট আশা করে, এটি অনলাইনে চেষ্টা করুন!

ব্যাখ্যা

§◄(öLpr§·++⁰↑↓)(Θŀ)  -- input A implicit, B as ⁰ (example "1234" and "32")
§ (           )(  )  -- apply A to the two functions and ..
  (ö          )      --   | "suppose we have an argument N" (eg. 2)
  (    §      )      --   | fork A and ..
  (         ↑ )      --     | take N: "12"
  (          ↓)      --     | drop N: "34"
  (     ·++⁰  )      --   | .. join the result by B: "123234"
  (   r       )      --   | read: 123234
  (  p        )      --   | prime factors: [2,3,19,23,47]
  ( L         )      --   | length: 5
  (öLpr§·++⁰↑↓)      --   : function taking N and returning number of factors
                            in the constructed number
               ( ŀ)  --   | range [1..length A]
               (Θ )  --   | prepend 0
               (Θŀ)  --   : [0,1,2,3,4]
 ◄                   -- .. using the generated function find the min over range

7

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

sh"2GX@q:&)1GwhhUYfn]v&X<

ইনপুটগুলি বিপরীত ক্রমে স্ট্রিং হয়। আউটপুট 1-ভিত্তিক। টাই থাকলে সর্বনিম্ন অবস্থান আউটপুট।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

s         % Implicitly input B as a string. Sum (of code points). Gives a number
h         % Implicitly input A as a string. Concatenate. Gives a string of length
          % N+1, where N is the length of A
"         % For each (that is, do N+1 times)
  2G      %   Push second input
  X@      %   Push 1-based iteration index
  q       %   Subtract 1
  :       %   Range from 1 to that. Gives [] in the first iteration, [1] in
          %   the second, ..., [1 2 ... N] in the last
  &)      %   Two-output indexing. Gives a substring with the selected elements,
          %   and then a substring with the remaining elements
  1G      %   Push first input
  whh     %   Swap and concatenate twice. This builds the string with B inserted
          %   in A at position given by the iteration index minus 1
  U       %   Convert to string
  Yf      %   Prime factors
  n       %   Number of elements
]         % End
v         % Concatenate stack vertically
&X<       % 1-based index of minimum. Implicitly display

6

পাইথ, 20 13 11 বাইট

.mlPsXbQzhl

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

ব্যাখ্যা

.mlPsXbQzhl
.m    b         Find the minimum value...
         hl     ... over the indices [0, ..., len(first input)]...
  lP            ... of the number of prime factors...
    sX Qz       ... of the second input inserted into the first.


3

জাপট , 22 21 বাইট

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

প্রথম ইনপুটটিকে স্ট্রিং হিসাবে এবং দ্বিতীয়টি হয় পূর্ণসংখ্যা বা স্ট্রিং হিসাবে নেয়। ফলাফলটি 0-সূচকযুক্ত এবং যদি একাধিক সমাধান থাকে তবে প্রথম সূচকটি ফিরে আসবে।

ÊÆiYVÃcNq)®°k Ê
b@e¨X

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


ব্যাখ্যা

      :Implicit input of string U and integer V.
Ê     :Get the length of U.
Æ     :Generate an array of the range [0,length) and map over each element returning ...
iYV   :  U with V inserted at index Y.
à    :End mapping
c     :Append ...
Nq    :  The array of inputs joined to a string.
®     :Map over the array.
°     :Postfix increment - casts the current element to an integer.
k     :Get the prime divisors.
Ê     :Get the length.
\n    :The newline allows the array above to be assigned to variable U.
b     :Get the first index in U that returns true ...
@     :  when passed through a function that ...
e     :    checks that every element in U...
¨     :    is greater than or equal to...
X     :    the current element.
      : Implicit output of resulting integer.

2

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

param($a,$b)function f($a){for($i=2;$a-gt1){if(!($a%$i)){$i;$a/=$i}else{$i++}}}
$p=@{};,"$b$a"+(0..($x=$a.length-2)|%{-join($a[0..$_++]+$b+$a[$_..($x+1)])})+"$a$b"|%{$p[$i++]=(f $_).count};($p.GetEnumerator()|sort value)[0].Name

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

(দীর্ঘ / গল্ফিং পরামর্শগুলি স্বাগত বলে মনে হচ্ছে Also এছাড়াও শেষ পরীক্ষার মামলার জন্য টিআইওর বার বার বেরিয়ে এসেছে, তবে অ্যালগরিদমটি ইস্যু ছাড়াই সেই মামলার জন্য কাজ করা উচিত))

পাওয়ারশেলের কোনও প্রাইম ফ্যাক্টেরাইজেশন অন্তর্নির্মিত নেই, সুতরাং এটি প্রাইম ফ্যাক্টর বাডস সম্পর্কে আমার উত্তর থেকে কোড ধার করে । এটিই প্রথম লাইনের functionঘোষণা।

আমরা ইনপুট নিই $a,$bএবং তারপরে $pএকটি খালি হ্যাশটেবল হতে সেট করি । এরপরে আমরা স্ট্রিংটি $b$aনিয়ে আসি, এটিকে কমা-অপারেটরের সাহায্যে একক সিলেক্টন অ্যারেতে পরিণত করি এবং স্টাফ, দিয়ে অ্যারে-কনটেনেট করি । কাপড় একটি লুপ মাধ্যমে হয় , ঢোকাতে , পরিশেষে সঙ্গে অ্যারে-ঘনিভূত প্রতি সময়ে$a$b$a$b

এই সময়ে, আমাদের $bপ্রতিটি বিন্দুতে of োকানো একটি অ্যারে আছে $a। আমরা তখন লুপের মাধ্যমে সেই অ্যারেটি প্রেরণ করি |%{...}। প্রতিটি পুনরাবৃত্তির, আমরা অবস্থানে আমাদের hashtable মধ্যে সন্নিবেশ কত মৌলিক উত্পাদক এর বিশেষ উপাদান যে হয়েছে।$i++.countf$_

অবশেষে, আমরা এস এর sortউপর ভিত্তি করে হ্যাশটেবল করব , এর প্রথমটি valueগ্রহণ করি 0এবং এর Name(অর্থাত্ $iসূচকের) নির্বাচন করি। এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।



2

05 এ বি 1 ই , 27 21 বাইট

ηõ¸ì¹.sRõ¸«)øεIýÒg}Wk

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

এটি সর্বনিম্ন 0-সূচকযুক্ত পিটি প্রদান করে

-Egigma -6 বাইট জন্য ধন্যবাদ!

ব্যাখ্যা

ηõ¸ì                  # Push the prefixes of A with a leading empty string -- [, 1, 12, 123, 1234]
    ¹.sRõ¸«)          # Push the suffixes of A with a tailing empty space. -- [1234, 123, 12, 1, ]
            ø         # Zip the prefixes and suffixes
             ε    }   # Map each pair with...
              IýÒg    # Push B, join prefix - B - suffix, map with number of primes
                   Wk # Push the index of the minimum p

1
একই পদ্ধতিটি ব্যবহার করে আপনি এটি পুনরায় লিখে 6 বাইট সংরক্ষণ করতে পারেন ηõ¸ì¹.sRõ¸«)øεIýÒg}Wk
এমিগানা


1

পাইথন 2 , 165 146 বাইট

O=lambda n:n>1and-~O(n/min(d for d in range(2,n+1)if n%d<1))
def f(A,B):L=[int(A[:j]+B+A[j:])for j in range(len(A)+1)];print L.index(min(L,key=O))

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



@ এরিখিওটগল্ফার আপনাকে ধন্যবাদ
জোনাথন ফ্রেচ

0

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

2 টি স্ট্রিং হিসাবে ইনপুট নেয়। 0-ইনডেক্সড অবস্থান প্রদান করে।

f=(a,b,i=0,m=a)=>a[i>>1]?f(a,b,i+1,eval('for(n=a.slice(0,i)+b+a.slice(i),x=k=2;k<n;n%k?k++:n/=x++&&k);x')<m?(r=i,x):m):r

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


0

জে, 60 বাইট

4 :'(i.<./)#@q:>".@(,(":y)&,)&.>/"1({.;}.)&(":x)"0 i.>:#":x'

সুস্পষ্ট ডায়াড ডানদিকে বি লাগে, বাম দিকে A।

0-ইনডেক্সড আউটপুট।

বাক্স ব্যবহার না করে উন্নতি করা সম্ভব।

ব্যাখ্যা:

  4 :'(i.<./)#@q:>".@(,(":x)&,)&.>/"1({.;}.)&(":y)"0 i.>:#":y'  | Whole program
  4 :'                                                       '  | Define an explicit dyad
                                                     i.>:#":y   | Integers from 0 to length of y
                                                  "0            | To each element
                                     ({.;}.)&(":y)              | Split y at the given index (result is boxed)
                     (,(":x)&,)&.>/"1                           | Put x inbetween, as a string
                  ".@                                           | Evaluate
                 >                                              | Unbox, makes list
             #@q:                                               | Number of prime factors of each
      (i.>./)                                                   | Index of the minimum

0

পাইথন 3, 128 বাইট

0-ইন্ডেক্স; পরামিতি হিসাবে স্ট্রিং লাগে। -6 বাইট জনাথন ফ্রেচের জন্য ধন্যবাদ।

from sympy.ntheory import*
def f(n,m):a=[sum(factorint(int(n[:i]+m+n[i:])).values())for i in range(len(n)+1)];return a.index(min(a))


0

পাইথন, 122 বাইট

f=lambda n,i=2:n>1and(n%i and f(n,i+1)or 1+f(n/i,i))
g=lambda A,B:min(range(len(A)+1),key=lambda p:f(int(A[:p]+B+A[p:])))

অনুশীলনে, এটি ডিফল্ট সর্বোচ্চ পুনরাবৃত্তির গভীরতা ছাড়িয়ে যায় খুব দ্রুত quickly

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