প্রধানমন্ত্রী বিভাজক সারণী


28

ইন্ট্রো

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

উদাহরণস্বরূপ, ইনপুট 6, 9, 14, 22দেওয়ার জন্য নিম্নলিখিতগুলির মতো সারণী তৈরি করা হবে:

    6  9 14 22
 2  *     *  *
 3  *  *
 7        *
11           *

এ কারণে যে 6প্রধান ভাজক আছে 2এবং 3, 9প্রধান ভাজক আছে 3, ইত্যাদি।

নির্মাণ

  • টেবিলটি এমনভাবে তৈরি করা হয়েছে যে ইনপুট সংখ্যাগুলি কলাম লেবেলগুলি ফাঁকা এবং আরোহী ক্রমে পৃথক করা হয় (আপনি ধরে নিতে পারেন যে তারা প্রাক সাজানো রয়েছে), এবং প্রধান বিভাজকগুলি বামদিকে সারি গঠনের প্রতি বর্ধিত ক্রমে তালিকাভুক্ত করা হয়েছে লেবেল.
  • নোট করুন যে প্রধান বিভাজক এবং ইনপুট সংখ্যাগুলির শীর্ষস্থানীয় স্পেসগুলি প্রয়োজন হতে পারে যদি সংখ্যাগুলি বিভিন্ন দৈর্ঘ্য হয়, যাতে সমস্ত কলাম একই প্রস্থ এবং যথাযথভাবে লাইন আপ হয়।
  • প্রতিটি বিভাজক একটি একক দ্বারা প্রতিনিধিত্ব করা হয় *(বা আপনার পছন্দের অন্যান্য উপযুক্ত ASCII অক্ষর, যতক্ষণ না সমস্ত চরিত্রের জন্য একই অক্ষর ব্যবহৃত হয়)।
  • একাধিক বিভাজন উপেক্ষা করা হয় (যেমন, 3 x 3 = 9তবে *সেই ছেদটির জন্য কেবল একটিই রয়েছে)।
  • *কলাম যে কোন জায়গায় অনুভূমিকভাবে স্থাপন করা যেতে পারে, তাই সময় লাগবে দ্ব্যর্থহীন হিসাবে (আমি সঙ্গে আমার উদাহরণ আছে *ডান-প্রান্তিক)।

ইনপুট

  • একটি ধনাত্মক পূর্ণসংখ্যা তালিকা কোনো সুবিধাজনক বিন্যাসে , প্রতিটি >1
  • আপনি ধরে নিতে পারেন যে ইনপুটটি পূর্ব-বাছাই করা হয়েছে।
  • ইনপুটটি কেবলমাত্র অনন্য মানগুলির গ্যারান্টিযুক্ত।

আউটপুট

প্রধান বিভাজক টেবিলের ফলাফলের ASCII শিল্পের উপস্থাপনা।

বিধি

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

উদাহরণ

6,9,14,22

    6  9 14 22
 2  *     *  *
 3  *  *
 7        *
11           *


2,3,5,7

  2 3 5 7
2 *
3   *
5     *
7       *

2,4,8,16,32

   2  4  8 16 32
2  *  *  *  *  *

75,99,151,153

     75  99 151 153
  3   *   *       *
  5   *
 11       *
 17               *
151           *

1
শীর্ষ সারি এবং বাম কলামের পরে আমরা কি বিভাজক রেখা রাখতে পারি?
নেজেনিসিস

@ এনজেনিসিস শিওর, আমি এটির অনুমতি দেব। টেবিলের সঠিক সূত্রটি বেশ উন্মুক্ত, যেহেতু এটি এই চ্যালেঞ্জের সঠিক জোর নয়।
অ্যাডমবর্কবার্ক

উত্তর:


5

গণিত, 101 90 বাইট

11 বাইট সংরক্ষণের জন্য নেজেনিসিসকে ধন্যবাদ!

TableForm[Outer[If[#∣#2,Y,""]&,f=#&@@@FactorInteger[1##],g={##}],TableHeadings->‌{f,g}]&

উপায় মাধ্যমে এক তৃতীয়াংশ সম্পর্কে চরিত্র U + এ 2223 (3 বাইটস) হয়। পরিবর্তিত সংখ্যক আর্গুমেন্টের নামকরণের ফাংশন, যার প্রত্যেকটিই একটি ননজারো পূর্ণসংখ্যা, যা কোনও TableFormবস্তুর (ফর্ম্যাট আউটপুট) এর মতো ফেরত দেয়:

টেবিলফর্ম আউটপুট

f=#&@@@FactorInteger[1##]fইনপুটগুলির মধ্যে যে কোনও ইনপুট (সমানভাবে, তাদের পণ্য বিভাজন 1##) বিভাজনকারী সমস্ত প্রাইমের সেট হতে সংজ্ঞায়িত করা হয়েছে , যখন gইনপুটগুলির সমন্বয়ে তালিকা রয়েছে। বিভাজ্যতার সাথে সম্পর্কিত এস এবং খালি স্ট্রিংগুলির Outer[If[#∣#2,Y,""]&,f,g]একটি টেবিল তৈরি করে Y(আমরা Yস্ট্রিংয়ের পরিবর্তে "Y"বা "*"দুটি বাইট সংরক্ষণ করার জন্য অপরিজ্ঞাত টোকেন ব্যবহার করি )। তারপরে আমরা TableForm[...,TableHeadings->‌{f,g}]উপযুক্ত সারি এবং কলাম শিরোনাম সহ ফলাফল অ্যারে ফর্ম্যাট করতে ব্যবহার করি use

পূর্ববর্তী জমা:

Grid[p=Prepend;Thread[q[Outer[If[#∣#2,Y,""]&,f=#&@@@FactorInteger[1##],g={##}]~p~g,f~p~""]]/.q->p]&

আপনি প্রথম ছেড়ে যেতে পারেন ""
মার্টিন ইন্ডার

2
TableForm[Outer[If[#∣#2,Y,""]&,f=#&@@@FactorInteger[1##],g={##}],TableHeadings->{f,g}]&যদি
ডিভাইডারদের

এবং দ্বিতীয়টিও যদি আপনি এটিতে পরিবর্তন করেন p[f,]
মার্টিন এন্ডার

শিরোনামগুলি পৃথক করতে গ্রিড লাইন অনুমোদিত।
অ্যাডমবর্কবার্ক

1
TableFormদুর্দান্ত, আশা করি এটি আমার টুলবক্সে থাকবে!
গ্রেগ মার্টিন

3

জেলি , 18 বাইট

PÆfQ0;ðḍ€+W}⁸;"o⁶G

1পরিবর্তে ব্যবহার করুন *, বিধি দ্বারা অনুমোদিত।

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

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

PÆfQ0;ðḍ€+W}⁸;"o⁶G  Main link. Argument: A (array of integers greater than 1)

P                   Take the product of the integers in A.
 Æf                 Compute all prime factors (with multiplicity) of the product.
   Q                Unique; deduplicate the prime factors.
    0;              Prepend a 0. Let's call the result P.
      ð             Begin a new, dyadic chain. Left argument: P. Right argument: A
       ḍ€           Divisible each; for each p in P, test all integers in A for
                    divisibility by P. Yields one row of the shape of A for each p.
                    Note that the first element of P is 0, so the first row of the
                    resulting matrix contains only zeroes.
          W}        Wrap right; yield [A].
         +          Add the results to both sides. Because of how Jelly's auto-
                    vectorization works, this adds the first row of [A] (just A) to
                    the first row of the divisibility matrix (all zeroes) and
                    leaves the other rows untouched.
            ⁸;"     Prepend the elements of P to the corresponding rows of the
                    previous result.
               o⁶   OR space; replace all zeroes with spaces.
                 G  Grid; format the matrix as requested in the challenge spec.

2

জেলি , 25 23 বাইট

PÆfQ©ḍþµị⁾* ³;"Z⁶;®¤;"G

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

কিভাবে?

ÆEখালি সারি ব্যবহার এবং ফিল্টার আউট করা ভাল হতে পারে ।

PÆfQ©ḍþµị⁾* ³;"Z⁶;®¤;"G - Main link: list of numbers, L
       µ                - monadic chain separation
P                       - product of L - multiply them all together
 Æf                     - prime factors (with repetitions, in ascending order)
   Q                    - unique items, maintaining order
                              - note that the product was performed to keep order
    ©                   - place in the register for later use, and yield
      þ                   - form the outer product of that and L using the dyad:
     ḍ                  -     isDivisor - 1 if divides, 0 if not
        ị⁾* <space      - index into "* " (1s to "*", 0s to " ")
            ³           - program's first input, L
             ;"         - zip with concatenation (column headers to the left)
               Z        - transpose (get it around the right way)
                   ¤    - nilad followed by link(s) as a nilad
                ⁶;®     - space (⁶) concatenated with (;) the register value (®)
                    ;"  - zip with concatenation (row labels to the left)
                      G - format the result as a grid (join items with spaces and
                                               rows with line feeds so they align)
                        - implicit print

2

জাভাস্ক্রিপ্ট (ES6), 264 260 ... 179 173 বাইট

a=>[for(c of s=' '.repeat(w=a.slice(-1),i=0))if(!+(r=[i++?i:s,...i<2?a:a.map(x=>x%i&&c)].map(y=>(s+y).slice(-(w+1).length),a=a.map(d=x=>i<2|x%i?x:d(x/i))).join``))r].join`
`

আমি মনে করি এই পদ্ধতিটি এখন স্থায়ীভাবে পুনরাবৃত্তির (বর্তমানে 178 বাইট) ছাড়িয়ে গেছে:

f=(a,i=0,w=a.slice(-1))=>i++-w?(+(r=[i<2?'':i,...i<2?a:a.map(x=>x%i&&' ')].map(y=>(' '.repeat(w)+y).slice(-(w+1).length)).join``)?'':r+`
`)+f(a.map(d=x=>i<2|x%i?x:d(x/i)),i,w):''

0এর জায়গায় ব্যবহার করে *, যা চ্যালেঞ্জের দ্বারা অনুমোদিত।

পরীক্ষার স্নিপেট


যদি আমার ভুল |না হয় তবে আপনি দুটি বুলিয়ান তুলনা করছেন বলে আপনি যদি বিবৃতিতে অপারেটরটি ব্যবহার করতে পারেন ...
লুক

@ লুকেন আরে, আপনি ঠিক বলেছেন। আমি কীভাবে এটি মিস করেছি তা নিশ্চিত নয়
ETH প্রোডাকশনগুলি

ফাংশনের i<2ভিতরে চেকটি সরানো কি খাটো নয় .map?
লুক

@Luke আপনি কি বোঝাতে চেয়েছেন পরিবর্তন যদি ...i<2?a:a.map(x=>x%i&&c)করতে ...a.map(x=>i<2?x:x%i&&c), কোন খাটো যে। তা সরালে আপনি কি এটি বলতে অন্যান্য .map , সম্ভবত ...
ETHproductions

2

পাইথন 2 - 197 বাইট

স্ট্রিং রূপান্তরকরণের জন্য সহজ ইনপুট হ্যান্ডলিং এবং `allowing এর অনুমতি দেওয়ার জন্য পাইথন 2 এ স্যুইচ করা হয়েছে। gmpy2পরবর্তী প্রাইম তৈরির জন্য ব্যবহার । পূর্ববর্তী পাইথন 3 জমা দেওয়ার উপর ভিত্তি করে আউটপুট ফর্ম্যাট (নীচে দেখুন), gপ্রতীক সহ একটি তালিকা পূরণ করা এবং এটি ফর্ম্যাট করে।

import gmpy2
i=input()
n=len(i)+1
p=1;g=[' ']+i
while p<i[-1]:
 p=gmpy2.next_prime(p)
 t=['*'[m%p:]for m in i]
 if'*' in t:g+=[p]+t
print((('{:>%d}'%(len(`i[-1]`)+1)*n+'\n')*(len(g)/n)).format(*g))

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

ব্যাখ্যা

যারা নিজেরাই এটি ডিকোড করতে চান না তাদের জন্য।

import gmpy2                    # arithmetic library
i=input()
n=len(i)+1                      # saves bytes by not needing ()
                                # afterwards
p=1                             # starting number
g=[' ']+i                       # initialsing header row
while p<i[-1]:                  # looping until last character
  p=gmpy2.next_prime(p)         # get the next prime
  t=['*'[m%p:] for m in i]      # verify whether p is a 
                                # divisor of each number
  if'*'in t:g+=[p]+t            # if any divisor found, append
                                # p + divisors to g.
print(
    (('{:>%d}'%(len(`i[-1]`)+1) # compute right formatting element
                                # for length of last character + 1
        *n+'\n'                 # repeat for each input + once
                                # for the prime and add newline
     )*(len(g)/n)               # repeat row format until g
                                # can be inserted
    ).format(*g)                # format using g
)


আগে

পাইথন 3 - 251 বাইট

খুব নিশ্চিত যে কেউ আরও ভাল করতে পারে। উপর ভিত্তি করে এই উত্তর মৌলিক <জেনারেট করার জন্য k

i=list(map(int,input().split(',')))
l=len(str(i[-1]))+1
n=len(i)+1
g=[0]+i+sum([l for l in [[k]+[j%k==0for j in i]for k in range(2,i[-1])if all(k%f for f in range(2,k))]if 1in l],[])
print((('{:>%d}'%l*n+'\n')*(len(g)//n)).format(*g).replace('0',' '))

অবহেলিত সংস্করণ এবং ব্যাখ্যা অনুসরণ করবে।


4
পিপিসিজিতে আপনাকে স্বাগতম!
অ্যাডমবর্কবার্ক

1
পরিবর্তে i=list(map(int,input().split(','))), আপনি কেবল করতে পারেন i=input(), এবং ফর্মটি ইনপুট নিতে পারেন [1, 2, 3, 4]
nedla2004

ধন্যবাদ, আমি এটি জানতাম না। তবে আমি পরে এটি পুনরায় কাজ করতে যাচ্ছি :)।
পিজেইউসেডগাস্ট

আপনি 2 বাইট সংরক্ষণ করতে পারবেন p=gmpy2.next_prime(p);t=['*'[m%p:]for m in i]এবং এর মধ্যে স্থানটি সরিয়ে ফেলতে পারেন if"*" in
ট্রেলজভীর

1

গণিত, 165 বাইট

বরং ক্রিয়াপদ - সম্ভবত এটির সাথে কেউ কিছু করতে পারে:

(j=Join;a=#[[All,1]]&/@FactorInteger@#;b=Sort@DeleteDuplicates@Flatten@a;Grid[j[{j[{""},#]},Transpose@j[{b},Table[If[MemberQ[a[[t]],#],"*",""]&/@b,{t,Length@a}]]]])&


1

পাইথন 2 , 181 179 বাইট

-2 বাইটগুলি ফ্লিপট্যাককে ধন্যবাদ

n=input()
p=[]
t="%%%ss "%len(`n[-1]`)*-~len(n)
print t%(('',)+n)
i=2
while n[-1]/i:
 if all(i%j for j in p):
	p+=[i];s=['*'[m%i:]for m in n]
	if'*'in s:print t%tuple([i]+s)
 i+=1

ইনপুটটি অবশ্যই একটি টিউপল হতে হবে।
এটি অনলাইন চেষ্টা করুন!


all(i%j for j in p)ব্যবহার না করে কাজ করে map?
ফ্লিপট্যাক

@ ফ্লিপট্যাক হ্যাঁ, এটি ভাল ছিল তবে আমি কিছু পরিবর্তন করেছি এবং আপডেটটি ভুলে গেছি
রড

1

ব্যাচ, 451 বাইট

@echo off
set/am=0,w=2,p=1
for %%n in (%*)do set/a"n=m-%%n,m+=(n>>31)*n
for /l %%i in (0,1,9)do set/am/=10,w+=!!m
set s=
for %%n in ("" %*)do set t=%%~n&call:t
set v=%*
:g
if not %s: =%==%p% echo%s%
if %m%==1 exit/b
set/at=p+=1,m=0
set s=
call:t
set v=&for %%n in (%v%)do set n=%%n&set t=&call:c
goto g
:c
set/ar=n%%p
if %r%==0 set/an/=p&set t=*&goto c
set/a"m|=n
set v=%v% %n%
:t
set t=           %t%
call set s=%%s%%%%t:~-%w%%%

ব্যাখ্যা: wসর্বাধিক ইনপুট মানগুলির মাধ্যমে ক্ষেত্রের প্রস্থ গণনা করে শুরু হয় m। একটি খালি স্ট্রিং এবং প্রস্থ ইনপুট সংখ্যা প্যাডিং প্রয়োগ করে আউটপুট প্রথম লাইন উত্পন্ন wসাবরুটিন ব্যবহার t। তারপরে 2 থেকে শুরু হওয়া পূর্ণসংখ্যার মধ্য দিয়ে লুপ হয়, পূর্ণসংখ্যা cপ্যাড করে আউটপুটটির লাইন তৈরি করে এবং তারপরে সাব্রোটিনকে খালি স্ট্রিং বা প্রতিটি মানের জন্য একটি নক্ষত্রকে প্যাড করতে কল করে , তবে উত্পন্ন লাইনটি এড়িয়ে যায় যদি এতে কোনও অজুহু থাকে না। আউটপুট উত্পন্ন হওয়ার সাথে সাথে প্রতিটি মান পূর্ণসংখ্যা দ্বারা ভাগ করা হয় যতক্ষণ না এটি বাকি থাকে leave

মনে রাখবেন যে, set v=মৃত্যুদন্ড কার্যকর করা পর%v% মধ্যে প্রতিস্থাপিত হয় forএকই লাইনে লুপ।


1

পাইথন 2 , 157 148 146 145 143 বাইট

def p(*t):print'%%%ds '%len(`x[-1]`)*len(t)%t
def f(x):k=m=1;p(' ',*x);exec"r=[n%k and' 'for n in x]\nif 0in m%k*r:p(k,*r)\nm*=k*k;k+=1;"*x[-1]

0পরিবর্তে ব্যবহার করুন *, বিধি দ্বারা অনুমোদিত।

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

পটভূমি

প্রাইমগুলি সনাক্ত করতে, আমরা উইলসনের উপপাদ্যের একটি বাস্তবায়ন ব্যবহার করি :

উইলসনের উপপাদ্যটির প্রতীক

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

প্রথম লাইন একটি সহায়ক ফাংশন সংজ্ঞায়িত করে।

def p(*t):print'%%%ds '%len(`x[-1]`)*len(t)%t

p টি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট নেয় যা এটি টিপল টিতে সংরক্ষণ করে

'%%%ds '%len(`x[-1]`)একটি ফরম্যাট স্ট্রিং গঠন করা একটি ফরম্যাট স্ট্রিং ব্যবহার করে; %%আক্ষরিক শতাংশের চিহ্ন, %dএটি পূর্ণসংখ্যার জন্য স্থানধারক যা len(`x[-1]`)প্রত্যাবর্তন করে, অর্থাৎ x- এ শেষ উপাদানটির অঙ্কের সংখ্যা (ইনপুট, এখনও সংজ্ঞায়িত হয়নি), এবং আক্ষরিক।

যদি, উদাহরণস্বরূপ, এক্স এর শেষ উপাদানটির তিনটি অঙ্ক থাকে তবে এই ফলন হয় %3s , যা এক্স এর*len(t) প্রতিটি উপাদানগুলির জন্য একবারে পুনরাবৃত্তি করে । অবশেষে, tuple জন্য প্রযোজ্য ফরম্যাট স্ট্রিং টি , একটি স্ট্রিং নির্মাণের টি s 'এর উপাদান, শূণ্যস্থান দ্বারা বিভাজিত, এবং সমস্ত ডান-সমর্থনযোগ্য একটি নির্দিষ্ট দৈর্ঘ্য হয়।%t

দ্বিতীয় লাইনটি প্রকৃত জমাটিকে সংজ্ঞায়িত করে: একটি ফাংশন এফ যে তালিকাটিকে এক্স হিসাবে ইনপুট হিসাবে গ্রহণ করে । execবিবৃতিটি প্রতিস্থাপনের পরে , যা x[-1]একটি forলুপের সাহায্যে স্ট্রিং এর আগে কয়েকবার কার্যকর করে , আমরা নিম্নলিখিত কোডটি পাই।

def f(x):
    k=m=1;p(' ',*x)
    for _ in range(x[-1]):
        r=[n%k and' 'for n in x]
        if 0in m%k*r:p(k,*r)
        m*=k*k;k+=1

প্রথম, কে এবং এম 1 থেকে আরম্ভ করে । নোট করুন (কে - 1)! = 0! = 1 = মি

তারপরে, পি ফাংশনটি ব্যবহার করে p(' ',*x)একটি স্পেস এবং পূর্ণসংখ্যাগুলিকে x এ মুদ্রণ করবে ।

এখন, আমরা বাকি আউটপুট মুদ্রণের জন্য লুপটি প্রবেশ করি।

প্রথমত, r=[n%k and' 'for n in x]প্রতিটি পূর্ণসংখ্যা এর remainders তালিকা নির্মান এন মধ্যে এক্স দ্বারা বিভক্ত । ইতিবাচক অবশিষ্টাংশ, অর্থাত্, অবশিষ্টাংশগুলি যা কে এর বহুগুণের সাথে মিলে না, তারা সত্যবাদী এবং একটি স্থান দ্বারা প্রতিস্থাপিত হয় and' '

পরবর্তী, আমরা নির্মাণ m%k*r। যেহেতু মি = (কে - 1)! , উইলসন উপপাদ্য সম্পুরক দ্বারা, এই কেবল হতে হবে যদি প্রধানমন্ত্রী, কিন্তু একটি খালি তালিকা যদি না। যদি ফলাফলটিতে কমপক্ষে একটি 0 থাকে তবে, যদি কে মৌলিক হয় এবং x এর মধ্যে কমপক্ষে একটি পূর্ণসংখ্যা কে দ্বারা বিভাজ্য হয় , সত্য0in m%k*r ফিরে আসে এবং ডেকে আনা হয়, প্রিন্টিং কে এবং বিভাজ্য সূচকগুলি: বিভাজ্য হলে, একটি স্থান না হলে ।p(k,*r)0

পরিশেষে, আমরা সংখ্যাবৃদ্ধি আছি দ্বারা এবং বৃদ্ধি , তাই মানের মি = (ট - 1)! ধরে রাখা অবিরত।


1

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

pYfu!Gy\~h0GhwvVZ{'(?<!\d)0'0YX

এটি এর 1পরিবর্তে *চ্যালেঞ্জের দ্বারা অনুমোদিত হিসাবে ব্যবহার করে।

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

ব্যাখ্যা ( পুরানো )

p           % Implictly input array of numbers. Push product of array
Yf          % Prime factors as a row vector
u           % Keep only unique values
!           % Transpose into column vector
G           % Push input again
y           % Duplicate column vector of unique prime factors onto top
\           % Modulo, element-wise with broadcast
~           % Negate
h           % Concatenate horizontally
0           % Push 0
G           % Push input again
h           % Concatenate horizontally
w           % Swap
v           % Concatenate vertically
V           % Char array representation
Z{          % Convert to cell array of strings. Each row gives a string
'(?<!\d)0'  % Push this string: match '0' not preceded by a digit
0           % Push this string: '0' will be replaced by char 0
YX          % Regexp replace
            % Implicit inoput. Char 0 is displayed as space

0

র‌্যাকেট 176 বাইট

(let((p printf))(display"   ")(for((x nl))(p" ~a " x))(displayln"")(for((i '(2 3 7 11)))
(p"~a  " i)(for((j nl))(if(member i(prime-divisors j))(p" * ")(p"   ")))(displayln"")))

Ungolfed:

(define (f nl)
  (let ((p printf))

    (display "   ")
    (for ((x nl))
      (p " ~a " x))
    (displayln "")

    (for ((i '(2 3 7 11)))
      (p "~a  " i)
      (for ((j nl))
        (if (member i (prime-divisors j))
            (p " * ")
            (p "   ")))
      (displayln ""))))

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

(f '(6 9 14 22))

আউটপুট:

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