বিভাজকের পণ্য


21

চ্যালেঞ্জ

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে, নিজেই সহ তার বিভাজকের পণ্যটি ফিরিয়ে দিন।

এটি OEIS এর ক্রম A007955

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

1: 1
2: 2
3: 3
4: 8
5: 5
6: 36
7: 7
8: 64
9: 27
10: 100
12: 1728
14: 196
24: 331776
25: 125
28: 21952
30: 810000

স্কোরিং

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তরটি জিতে যায়!


2
আকর্ষণীয় নোট (যদিও এই চ্যালেঞ্জের জন্য সম্ভবত এটি কার্যকর নয়): এন এর সমস্ত বিভাজকের পণ্য সর্বদা n ^ ((এন বিভাজকের সংখ্যা) / 2)।
Wojowu

উত্তর:



7

জাপট , 3 বাইট

â ×

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

ব্যাখ্যা

â ×  // implicit integer input

â    // get integer divisors
  ×  // get product of array

ধোকা, তুমি আমাকে নিঞ্জা করলি ?! : p আমি কম্পিউটারে উঠলে আমার মুছবে (যখনই তা হতে পারে)।
শেগি

@ শেগি আমি অবাক হয়েছি, যেহেতু আমি দুজনের সম্পর্কেই সবেমাত্র জানতে পেরেছিলাম âএবং ×এই উত্তরটি লেখার সময়
জাস্টিন মেরিনার

আমি মিনিট দ্বারা ধীর হয়ে গেছে। চরিত্রের সীমা!
শেগি






3

এলিস , 12 বাইট

/o
\i@/Bdt&*

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

ব্যাখ্যা

দশমিক I / O এর জন্য এটি কেবল নিয়মিত কাঠামো:

/o
\i@/...

তারপরে প্রোগ্রামটি হ'ল:

B    Get all divisors of the input.
dt   Get the stack depth minus 1.
&*   Multiply the top two stack elements that many times, folding multiplication
     over the stack.

3

3
আমাকে উত্তরের মাধ্যমে স্ক্রোলিং করছি: প্লেইন মনসপাসিডেড কোড, প্লেইন মনসপাসেসড কোড, প্লেইন ... বোল্ড, সেরিফ কোড? :
পি

নিবন্ধন করুন
Okx

4
@Etproductions আমি আসলে এই উত্তরটি আইওএসে কোড করেছিলাম যার অর্থ আমি আসলে অক্ষরগুলি দেখতে পাচ্ছি না।
Okx

এটা ... বেশ চিত্তাকর্ষক।
ইটিএইচ প্রডাকশনগুলি

2
@ মামাফুনরোল এখন এটি এমন একটি নাম যা আমি দীর্ঘ, দীর্ঘ সময় শুনিনি ... ;-)
ইটিএইচ প্রোডাকশনস


2

x86-64 মেশিন কোড, 26 বাইট

31 C9 8D 71 01 89 F8 FF C1 99 F7 F9 85 D2 75 03 0F AF F1 39 F9 7C EE 89 F0 C3

উপরের কোডটি এমন একটি ফাংশন সংজ্ঞায়িত করে যা ( Gnu / ইউনিক্সে ব্যবহৃত সিস্টেম ভি AMD64 কলিং কনভেনশনEDI অনুসরণ করে ) একটি একক প্যারামিটার (ইনপুট মান, ধনাত্মক পূর্ণসংখ্যার) গ্রহণ করে এবং এতে একটি একক ফলাফল (বিভাজকের পণ্য) প্রদান করেEAX

অভ্যন্তরীণভাবে, এটি পিজ্জা প্যান্টস 184 এর সি সাবমিশনের অনুরূপ (অত্যন্ত অদক্ষ) পুনরাবৃত্ত অ্যালগরিদম ব্যবহার করে বিভাজকের পণ্যকে গণনা করে । মূলত, এটি সকলের লুপের জন্য একটি কাউন্টার ব্যবহার করে 1 এবং ইনপুট মানের মধ্যে মানগুলি করে, বর্তমান পাল্টা মানটি ইনপুটটির বিভাজক কিনা তা পরীক্ষা করে। যদি তা হয় তবে এটি চলমান মোট পণ্যগুলিতে গুন করে।

অসম্পূর্ণ সমাবেশ ভাষা মেমোনিক্স:

; Parameter is passed in EDI (a positive integer)
ComputeProductOfDivisors:
   xor   ecx, ecx        ; ECX <= 0  (our counter)
   lea   esi, [rcx + 1]  ; ESI <= 1  (our running total)
.CheckCounter:
   mov   eax, edi        ; put input value (parameter) in EAX
   inc   ecx             ; increment counter
   cdq                   ; sign-extend EAX to EDX:EAX
   idiv  ecx             ; divide EDX:EAX by ECX
   test  edx, edx        ; check the remainder to see if divided evenly
   jnz   .SkipThisOne    ; if remainder!=0, skip the next instruction
   imul  esi, ecx        ; if remainder==0, multiply running total by counter
.SkipThisOne:
   cmp   ecx, edi        ; are we done yet? compare counter to input value
   jl    .CheckCounter   ; if counter hasn't yet reached input value, keep looping

   mov   eax, esi        ; put our running total in EAX so it gets returned
   ret

এই IDIVনির্দেশটি ডিভিডেন্ডের জন্য হার্ড-কোডড অপারেন্ডগুলি ব্যবহার করে আমার স্টাইলকে কিছুটা বিড়ম্বনা করে, তবে আমি মনে করি যে এটি এমন ভাষার জন্য বেশ ভাল যার কোনও বিল্ট-ইন নেই তবে বেসিক গাণিতিক এবং শর্তসাপেক্ষ শাখা রয়েছে!


2

টিআই-বেসিক (টিআই -৪৮ প্লাস সিই), 24 বাইট

Prompt X
1
For(A,1,X
If not(remainder(X,A
AAns
End

সম্পূর্ণ প্রোগ্রাম: ইনপুট জন্য ব্যবহারকারীকে অনুরোধ; আউটপুট ফেরত দেয় Ans, একটি বিশেষ চলক যা (মূলত) গণনা করা সর্বশেষ মানটির মান সঞ্চয় করে।

ব্যাখ্যা:

Prompt X             # 3 bytes, Prompt user for input, store in X
1                    # 2 bytes, store 1 in Ans for use later
For(A,1,X            # 7 bytes, for each value of A from 1 to X
If not(remainder(X,A # 8 bytes, If X is divisible by A...
AAns                 # 3 bytes, ...store (A * Ans) in Ans
End                  # 1 byte, end For( loop

2
আপনি আসলে বাইটকাউন্টটি অন্তর্ভুক্ত করেননি।
এরিক আউটগল্ফার

নিবন্ধন করুন সংশোধন করা হয়েছে।
pizzapants 184

2

সি (জিসিসি), 52 48 বাইট

p,a;f(x){for(p=1,a=x;a;a--)p*=x%a?1:a;return p;}

-4 বাইট কডি গ্রে ধন্যবাদ

একটি ফাংশন যা একটি পূর্ণসংখ্যার মধ্যে নেয় এবং তার বিভাজকের পণ্যকে ফেরত দেয়।

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

Ungolfed:

int proddiv(int input) {
    int total = 1, loopvar;
    for(loopvar = input; loopvar > 0; --loopvar) {
    // for loopvar from input down to 1...
        total *= (input % loopvar) ? 1 : loopvar;
        // ...If the loopvar is a divisor of the input, multiply the total by loopvar;
    }
    return total;
}

(1) পিছনের দিকে গণনা করে আপনি 4 বাইট সংরক্ষণ করতে পারেন, (2) p*=অভিব্যক্তির চারপাশে প্রথম বন্ধনী সরানো এবং (3) এর শরীরে একটি বিবৃতি রেখেfor কমা ফেলে লুপের । আমি অতিরিক্ত পরামিতি যুক্ত করার পরিবর্তে বৈশ্বিক ভারগুলিও ব্যবহার করতে চাই। এটি কোনও বাইট ব্যয় না করে, অপরিজ্ঞাত আচরণ এড়িয়ে চলে। চূড়ান্ত সংস্করণ:p,a;f(x){for(p=1,a=x;a;--a)p*=x%a?1:a;return p;}
কোডি গ্রে

আপনি প্রতিস্থাপন করতে পারেন return p;সঙ্গে p=p;এবং পাঁচ বাইট সংরক্ষণ।
জনাথন ফ্রেচ

অন্য একটি বাইট সংরক্ষণ করতে, আপনি প্রতিস্থাপন করতে পারেন p,a;f(x) সঙ্গে f(x,p,a)
জনাথন ফ্রেচ

আপনি যদি গ্লোবাল ভেরিয়েবলের পরিবর্তে স্থানীয় ব্যবহার করেন তবে আপনি পুরোটি থেকে মুক্তি পেতে পারেন return p;এবং পাঁচটি নয়, নয়টি বাইট সংরক্ষণ করতে পারেন। ( টিআইও )
জোনাথন ফ্রেচ

2

জাভাস্ক্রিপ্ট (ES7), 32 বাইট

n=>g=(i=n)=>i?i**!(n%i)*g(i-1):1

সংগীতকারের পাইথন দ্রবণে লিকার টিপ ধার করে কয়েকটা বাইট সংরক্ষণ করেছেন ।


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

o.innerText=(f=
n=>g=(i=n)=>i?i**!(n%i)*g(i-1):1
)(i.value=1)();oninput=_=>o.innerText=f(+i.value)()
<input id=i type=number><pre id=o>


বিকল্প (ES6), 32 বাইট

n=>g=(i=n)=>i?(n%i?1:i)*g(i-1):1

1
কেন কেবল ES6- সামঞ্জস্যপূর্ণ নয় (n%i?1:i)? (যদিও এটি কোনও বাইট সংরক্ষণ করতে পারে না))
আর্নল্ড

@ আরনাউল্ড: কারণ ফোনের গল্ফের জন্য খুব সকালে খুব সকালেই অর্ধেক 6 : আমি যখন লিকির ডগাটি স্পষ্ট করেছিলাম তখন ডিআই-এর উল্টোটি ছিল!
শেগি


1

কিউবিআইসি , 22 বাইট

[:|~b/a=b'\`a|q=q*a}?q

ব্যাখ্যা

[:|           FOR a  = 1; a <= input (b); a++
 b/a=b'\`a    'a' is a proper divisor if integer division == float division
~         |   IF that's true
q=q*a         THEN multiply running total q (starts as 1) by that divsor
}             NEXT
?q            Print q



1

গণিত, 17 বাইট

যারা মুছে ফেলা উত্তর (ডেভিডসির উত্তর) দেখতে পাচ্ছেন না তাদের জন্য, @ মার্টিনএেন্ডারের সহায়তায় ম্যাথামেটিকায় এই কোড

1##&@@Divisors@#&

1

শেক্সপিয়ার প্রোগ্রামিং ভাষা , 353 বাইট

.
Ajax,.
Puck,.
Page,.
Act I:.
Scene I:.
[Enter Ajax and Puck]
Ajax:
You cat
Puck:
Listen to thy heart
[Exit Ajax]
[Enter Page]
Scene II:.
Puck:
You sum you cat
Page:
Is Ajax nicer I?If so, is remainder of the quotient Ajax I nicer zero?If not, you product you I.Is Ajax nicer I?If so, let us return to scene II
Scene III:.
Page:
Open thy heart
[Exeunt]

অবরুদ্ধ সংস্করণ:

The Tragedy of the Product of a Moor's Factors in Venice.

Othello, a numerical man.
Desdemona, a product of his imagination.
Brabantio, a senator, possibly in charge of one Othello's factories.

Act I: In which tragedy occurs.

Scene I: Wherein Othello and Desdemona have an enlightened discussion.

[Enter Othello and Desdemona]

Othello:
  Thou art an angel!

Desdemona:
  Listen to thy heart.

[Exit Othello]
[Enter Brabantio]

Scene II: Wherein Brabantio expresses his internal monologue to Desdemona.

Desdemona:
  Thou art the sum of thyself and the wind!

Brabantio:
  Is Othello jollier than me?
  If so, is the remainder of the quotient of Othello and I better than nothing?
  If not, thou art the product of thyself and me.
  IS Othello jollier than me?
  If so, let us return to scene II!

Scene III: An Epilogue.

Brabantio:
  Open thy heart!

[Exeunt]

আমি এই এসপিএল সংকলকটি প্রোগ্রামটি চালানোর জন্য ব্যবহার করছি ।

সাথে চালান:

$ python splc.py product-of-divisors.spl > product-of-divisors.c
$ gcc product-of-divisors.c -o pod.exe
$ echo 30 | ./pod
810000

1

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

lambda _:_**(sum(_%-~i<1for i in range(_))/2)

xএকটি নম্বর হতে দিন । উভয় yএবং zএর ভাজক হতে হবে xযদি y * z = x। অতএব y = x / z,। আসুন একটি সংখ্যা বলতে d6 divisiors আছে, এই পর্যবেক্ষণ ভাজক হতে হবে কারণে a, b, c, d / a, d / b, d / b। যদি আমরা এই সমস্ত সংখ্যাকে (ধাঁধার বিন্দু) গুণ করি তবে আমরা পাই d * d * d = d ^ 3। সাধারণভাবে, জন্যe বেশ কয়েকটি fবিভক্তকারীদের জন্য, কথিত বিভাজকের পণ্যটি হবে e ^ (f / 2), যা ল্যাম্বডা যা করে।

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


1

আমার , 4 বাইট

হেক্স:

1A 3A 54 27

ব্যাখ্যা:

1A - Input as an integer
3A - Factors
54 - Product
27 - Output (with newline)








0

অ্যাক্সিয়াম, 23 বাইট

h(x)==x^(#divisors x/2)

এটি আলেফালফ সলিউশনের অক্ষিতে একটি অনুবাদ

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