सम्मिलन के माध्यम से प्रमुख कारकों की गिनती कम से कम करें


12

यह देखते हुए दो धनात्मक पूर्णांक एक और बी , स्थिति लौट पी कि कम करता है जिसके परिणामस्वरूप पूर्णांक के प्रधानमंत्री कारकों (गिनती multiplicities) की संख्या, जब बी है डाला में एक में पी

उदाहरण के लिए, A = 1234 और B = 32 दिए गए , ये संभावित सम्मिलन हैं ( p -indexed के साथ) और उनके प्रमुख कारकों के बारे में संबंधित जानकारी:

पी | परिणाम | प्रमुख कारक | / (एन) / गणना

0 | 321234 | [२, ३, ३ 37, १४४ 37] | 4
1 | 132234 | [२, ३, २२०३ ९] | 3
2 | 123234 | [२, ३, १ ९, २३, ४,] | 5
3 | 123324 | [२, २, ३, ४३, २३ ९] | 5
4 | 123432 | [२, २, २, ३, ३ 2, १३ ९] | 6

आप देख सकते हैं कि परिणाम में न्यूनतम कारक 3 हैं, 3, जब पी 1 है। तो इस विशेष मामले में, आपको 1 का उत्पादन करना चाहिए ।

चश्मा

  • अनेक स्थितियों को देखते हैं, तो पी है कि परिणाम को कम से कम, आप उन सभी उत्पादन या उनमें से किसी एक को चुन सकते हैं।

  • आप पी के लिए 0-इंडेक्सिंग या 1-इंडेक्सिंग चुन सकते हैं , लेकिन यह विकल्प लगातार होना चाहिए।

  • A और B को पूर्णांक, स्ट्रिंग या अंकों की सूची के रूप में लिया जा सकता है।

  • आप किसी भी प्रोग्रामिंग भाषा में प्रतिस्पर्धा कर सकते हैं और इनपुट ले सकते हैं और किसी भी मानक विधि के माध्यम से आउटपुट प्रदान कर सकते हैं , जबकि ध्यान दें कि इन खामियों को डिफ़ॉल्ट रूप से मना किया गया है। यह कोड-गोल्फ है, इसलिए सबसे छोटा सबमिशन (बाइट्स में स्कोर) जीत जाता है!

परीक्षण के मामलों

ए, बी -> पी (0-अनुक्रमित) / पी (1-अनुक्रमित)

1234, 32 -> 1/2
3456, 3 -> 4/5
378, 1824 -> 0/1
1824, 378 -> 4/5
67, 267 -> कोई भी या सभी के बीच: [1, 2] / [2, 3]
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 के लिए पक्षपाती है ...
caird coinheringaahing

1
क्या हम परिणामी संख्या को सम्मिलित कर सकते हैं जिसने सम्मिलन के सूचकांक के बजाय प्रमुख कारकों को कम कर दिया है? 132234इसके बजाय अपने पहले परीक्षण मामले में 1
डायलन १०'१

2
@dylnan मैं इस बार नहीं कहने जा रहा हूं।
श्री एक्सकोडर

जवाबों:


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

MATL , 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

इसे ऑनलाइन आज़माएं!

(लंबे / गोल्फ सुझाव का स्वागत करते हैं। अंतिम परीक्षा के मामले के लिए टीआईओ पर भी बार-बार, लेकिन एल्गोरिदम को इस मुद्दे के बिना काम करना चाहिए।)

PowerShell का कोई भी मुख्य कारक नहीं है, इसलिए यह प्राइम फैक्टर्स फ्रेंड्स पर मेरे उत्तर से उधार लेता है । यह पहली पंक्ति की functionघोषणा है।

हम इनपुट लेते हैं $a,$bऔर फिर $pएक खाली हैशटेबल बन जाते हैं। अगला हम स्ट्रिंग लेते हैं $b$a, इसे कॉमा-ऑपरेटर के साथ एक सिंगलटन सरणी में बदल देते हैं ,, और सामान के साथ सरणी-कॉनकनेट करते हैं । सामान एक पाश के माध्यम से है $a, डालने $b, अंत के साथ सरणी-concatenated हर बिंदु पर$a$b

इस बिंदु पर, हमारे पास $bप्रत्येक बिंदु पर सम्मिलित की गई एक सरणी है $a। हम उस सरणी को लूप के माध्यम से भेजते हैं |%{...}। प्रत्येक यात्रा, हम स्थिति पर हमारी hashtable में डालने से कितने अभाज्य गुणकों कि विशेष तत्व$i++.countf$_ है।

अंत में, हम sortहैशटेबल valueएस पर आधारित हैं, 0वें को उसके बाद लेते हैं, और उसके Name(यानी, $iसूचकांक का) चयन करते हैं। यह पाइपलाइन पर छोड़ दिया गया है और आउटपुट निहित है।



2

05AB1E , 27 21 बाइट्स

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

इसे ऑनलाइन आज़माएं!

यह सबसे कम 0-अनुक्रमित पी लौटाता है ।

@Enigma for -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))

इसे ऑनलाइन आज़माएं!



@EriktheOutgolfer धन्यवाद।
जोनाथन फ्रीच

0

जावास्क्रिप्ट (ईएस 6), 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'

स्पष्ट रंग। B को दाईं ओर, 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:])))

व्यवहार में, यह डिफ़ॉल्ट अधिकतम पुनरावृत्ति की गहराई को बहुत तेज़ी से पार करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.