এক্সটেনসিটিশন বিল্ট-ইনগুলি ছাড়াই, পূর্ণসংখ্যা x থেকে পাওয়ার এক্স পর্যন্ত বাড়ান


16

টাস্ক - শিরোনামটি এটির পক্ষে যথেষ্ট পরিমাণে যোগ দেয়: যেখানে একটি পূর্ণসংখ্যা x পাওয়ার পাওয়ার এক্স তে বাড়ান 0<x

সীমাবদ্ধতা:

  • Exponentiation ব্যবহার, exp(), ln()এবং অন্য কোন ক্ষমতা-সম্পর্কিত ভাষা বিল্ট-ইন, মত pow(), x^x, x**xনিষিদ্ধ করা হয়।
  • আপনি ধরে নিতে পারেন যে প্রদত্ত পূর্ণসংখ্যাটি আপনার পছন্দসই প্রোগ্রামিং ভাষার সীমাতে ফিট করে।

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

Input | Output
---------------
2     | 4
3     | 27
5     | 3125
6     | 46656
10    | 10000000000

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতে।


আমরা কি স্ট্রিং হিসাবে ইনপুট গ্রহণ করতে পারি?
শেগি

আমি এটি সম্পাদনা করেছি, আশা করছি এটি আবার খোলা হবে। আমি বিধি 3 টি মুছে ফেলেছি এবং পরিবর্তে বলেছি যে এটি একটি সম্পূর্ণ প্রোগ্রাম হওয়া উচিত, যেমন ওপি সম্ভবত উদ্দেশ্য করেছিল
মিঃ এক্সকোডার

আরও ভাল, @ মিঃ এক্সকোডার তবে আমি দ্বিতীয় সীমাবদ্ধতা (বা পুনর্নির্মাণ) সরিয়ে দেওয়ার পরামর্শ দিচ্ছি। "কোনও ফাংশন নয়" জেএসকে অংশগ্রহণ থেকে বাদ দেয়? আমিও চ্যালেঞ্জ উদ্দেশ্যে করার সুপারিশ করছি, যে আমরা হ্যান্ডেল করতে হবে 0ও প্রত্যাশিত আউটপুট নির্দিষ্ট করা (যে 0বা 1বা পারেন)। অবশেষে, negativeণাত্মক পূর্ণসংখ্যাগুলি পরিচালনা করা চ্যালেঞ্জের জন্য একটি দুর্দান্ত সংযোজন।
শেগি

@Shaggy JS করুন ... উপর আপেল ক্যালকুলেটর ^ 0 0 গণনা জুড়েছে এবং এটি ফেরত কারণ পাইথন এছাড়াও আয় 1. হয়তো 1 মনোনীত মান হওয়া উচিত 1জন্য 0^0। যাইহোক, Foundation+ সুইফট 0
জনাব এক্সকোডার

1
@ মিঃ এক্সকোডার, আমি "বিধিনিষেধ" মুছে ফেলেছি যা আমাদের পরিচালনা করতে হবে না 0এবং তার পরিবর্তে 0<xলিড- ইনটি নির্দিষ্ট করে দিয়েছি । কোডটি ত্রুটি ছুঁড়ে ফেলা উচিত নয় এমন নিষেধাজ্ঞাও আমি সরিয়ে দিয়েছি; এটা না বলেই যাওয়া উচিত। প্রয়োজন বোধে নির্দ্বিধায় ফিরে যান।
শেগি

উত্তর:


15

এপিএল (ডায়ালগ) , 4 বাইট

জন্য এক্স এক্স , লাগে এক্স এবং বাম আর্গুমেন্ট হিসাবে x এর ডান আর্গুমেন্ট হিসাবে।

×/⍴⍨

অনলাইনে সমস্ত মামলা ব্যবহার করে দেখুন!

×/ উৎপাদনের

⍴⍨ arg কপিগুলি arg

এবং এখানে এখানে একটি যা নেতিবাচক পূর্ণসংখ্যার পরিচালনা করে:

×/|⍴|*×

সব ক্ষেত্রে চেষ্টা করুন!

×/ এর পণ্য

| পরম মান

এর পর্ব

| পরম মান

* এর শক্তি

× সিগন্যাম

বিল্ট-ইন পাওয়ার আদিম হ'ল:

x*y


9

গণিত, 16 বাইট

আমি এই বাইট গণনায় দুটি সমাধান পেয়েছি:

1##&@@#~Table~#&

এখানে, #~Table~#এর nঅনুলিপিগুলির একটি তালিকা তৈরি করে n। তারপরে Listমাথাটি প্রতিস্থাপন করা হয় 1##&যা এর সমস্ত যুক্তি একসাথে গুণ করে।

Nest[n#&,1,n=#]&

এই কেবল ইনপুট সঞ্চয় করে nএবং তারপর তা বৃদ্ধি পায় 1দ্বারা n, nবার।


1
#~Product~{#}&
আলেফাল্ফ

1
@ এলফাল্ফ আহ, ভালো কথা। আপনি পৃথক উত্তর হিসাবে পোস্ট করতে পারেন।
মার্টিন এন্ডার

5

জাভাস্ক্রিপ্ট (ES6), 33 28 25 24 বাইট

n=>g=(x=n)=>--x?n*g(x):n

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

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


ইতিহাস

25 বাইট

f=(n,x=n)=>--x?n*f(n,x):n

28 বাইট

n=>eval(1+("*"+n).repeat(n))

33 বাইট

n=>eval(Array(n).fill(n).join`*`)

4

খাঁটি বাশ, 43

echo $[$1<2?1:$[$1<2?2:$1]#`printf 1%0$1d`]

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

এটি নিয়মগুলি খুব বেশি বাঁক দিচ্ছে কিনা তা নিশ্চিত নয় - আমি তালিকাভুক্ত নিষিদ্ধ বিল্টিনগুলির কোনও ব্যবহার করছি না, তবে আমি বেস রূপান্তর ব্যবহার করছি।

  • printf 1%0$1dআউটপুট একটি পি এর 1পরে এন 0এস
  • $[b#a]aএকটি বেস bসংখ্যা হিসাবে বিবেচনা করার জন্য একটি গাণিতিক সম্প্রসারণ যা প্রয়োজনীয় ফলাফল দেয়। দুর্ভাগ্যক্রমে বেস <2 কাজ করে না, তাই অতিরিক্ত ?:বিট হ্যান্ডেল ইনপুট n = 1।

সর্বাধিক ইনপুট 15, কারণ বাশ স্বাক্ষরিত 64-বিট পূর্ণসংখ্যার (2 31 -1 অবধি ) ব্যবহার করে।


আমার মতো একই সমস্যা, এটি x = 1 এর জন্য কাজ করে না। তবুও, খুব আকর্ষণীয় পদ্ধতির।
ম্যাক্সিম মিখাইলভ

@ ম্যাক্সলাউনবয় এটি নির্দেশ করার জন্য ধন্যবাদ - যে দুঃখের সাথে আমার উত্তরটি ফুলে উঠেছে। সম্ভবত আমি আরও একটি সংক্ষিপ্ত সংস্করণ বের করতে পারি ...
ডিজিটাল ট্রমা

দুর্দান্ত জিনিস। সর্বদা বাশ শিখতে চেয়েছিলেন, তবে এর জন্য সর্বদা খুব অলস হয়ে থাকুন =)

4

এলিস , 13 বাইট

/o
\i@/.&.t&*

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

ব্যাখ্যা

/o
\i@/...

এটি এমন প্রোগ্রামগুলির জন্য একটি কাঠামো যা দশমিক পূর্ণসংখ্যা পড়তে এবং লিখতে এবং কার্ডিনাল মোডে সম্পূর্ণ পরিচালনা করে (সুতরাং বেশিরভাগ গাণিতিক সমস্যার জন্য প্রোগ্রাম)।

.    Duplicate n.
&.   Make n copies of n.
t    Decrement the top copy to n-1.
&*   Multiply the top two values on the stack n-1 times, computing n^n.

4

স্ট্যান্ডার্ড এমএল , 42 বাইট

fn x=>foldl op*1(List.tabulate(x,fn y=>x))

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

ব্যাখ্যা:

fn y => x                 (* An anonymous function that always returns the inputted value *)
List.tabulate(x, fn y=>x) (* Create a list of size x where each item is x *)
foldl op* 1               (* Compute the product of the entire list *)    

1
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

1
টিআইওর এখন এমএলটন আছে। tio.run/nexus/…
ডেনিস

ওহ! সেটা অসাধারণ! ধন্যবাদ!
musicman523

3

জেলি , 3 বাইট

ẋ⁸P

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

কিভাবে?

ẋ⁸P - Main link: x             e.g. 4
 ⁸  - link's left argument, x       4
ẋ   - repeat left right times       [4,4,4,4]
  P - product                       256

ডার্ন, আমি এটি করতে চেয়েছিলাম। : পি
হাইপারনিউট্রিনো

@ জোনাথন অ্যালান এটি 3 বাইট, বা 3 প্রশস্ত অক্ষর? আসল কোড বাইটসাইজে সঠিক সিদ্ধান্ত নিতে দয়া করে সোর্স কোড হেক্স ডাম্প দেখতে দিন। ;-) এবং সংশোধন করুন

1
@ xakepp35 জেলি একটি এসবিসিএস ব্যবহার করে এবং শিরোলেখটিতে বাইটস লিঙ্কটি এতে নির্দেশ করে। হেক্সডাম্প সহ প্রোগ্রামটি ইচ্ছাকৃতভাবে F7 88 50কাজ করে।
ডেনিস

@ ডেনিস উত্তর দেওয়ার জন্য ধন্যবাদ! =) এর আগে আমি এর আগে কোনও ভাষা কখনই ভাবতে পারি না

3

কিউবিক্স , 19 বাইট

..@OI:1*s;pu!vqW|($

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

ধাপে ধাপে

পাশের দৈর্ঘ্য 2 সহ কিউবে প্রসারিত হয়

    . .
    @ O
I : 1 * s ; p u
! v q W | ( $ .
    . .
    . .
  • I:1 ইনপুট নেয়, এটি সদৃশ এবং 1 টি ধাক্কা দেয়। এটি একটি কাউন্টার, গুণক এবং ফলাফলের সাথে স্ট্যাক সেট আপ করে।
  • *s; টিওএসকে গুণিত করে, ফলাফলটি পূর্বের সাথে অদলবদল করে এবং পূর্ববর্তীটি সরান।
  • puকাউন্টার আইটেমটি টিওএস এ আনুন। উল্টো বাঁক. এটি লেনের পরিবর্তন হতে পারে তবে বাইট শেভ করা দরকার।
  • |($এটি একটি বাইট সংরক্ষণ করার জন্য করা হয়েছিল। আঘাত করলে তা হ্রাস পায়। প্রতিফলিত করে, কাউন্টারটিকে হ্রাস করে এবং কিউবের চারপাশে কোনও বিকল্পকে আবৃত করে না।
  • !vqWকাউন্টার পরীক্ষা করুন। সত্যবাদী যদি পুনঃনির্দেশটি এড়িয়ে যান, তবে কাউসকে বিওএসে লাগান, গুনটির পিছনে গলি পরিবর্তন করুন। অন্যথায় পুনঃনির্দেশ করুন।
  • |sO@এটি পাল্টা পরীক্ষা থেকে পুনঃনির্দেশিত শেষ ক্রম। অনুভূমিক প্রতিবিম্ব পেরিয়ে যায়, টিওএসের ফলাফলের টিওএস, আউটপুট এবং থামানোর জন্য অদলবদল হয়।

3

আর, 22 বাইট

স্টাডিন xথেকে পড়া ।

prod(rep(x<-scan(),x))

এর xঅনুলিপিগুলির একটি তালিকা তৈরি করে x, তারপরে সেই তালিকার উপাদানগুলির গুণমান গণনা করে। যখন x=0, repরিটার্ন numeric(0), যা দৈর্ঘ্যের একটি সংখ্যক ভেক্টর 0, তবে এর prodমধ্যে 1 হয়, তাই 0^0=1এই পদ্ধতির দ্বারা, যা আর এর বিল্টিন এক্সপেনশনেটির সাথে সামঞ্জস্যপূর্ণ, তাই এটি বেশ ঝরঝরে।

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


3

লিনাক্সের জন্য x86_64 মেশিনের ভাষা, 14 11 10 বাইট

0:   6a 01                   pushq  $0x1
2:   58                      pop    %rax
3:   89 f9                   mov    %edi,%ecx
5:   f7 ef                   imul   %edi
7:   e2 fc                   loop   5
9:   c3                      retq

অনলাইনে চেষ্টা করার জন্য ! , নিম্নলিখিত সি প্রোগ্রামটি সংকলন এবং পরিচালনা করুন।

const char h[]="\x6a\1\x58\x89\xf9\xf7\xef\xe2\xfc\xc3";

int main(){
  for( int i = 1; i < 4; i++ ) {
    printf( "%d %d\n", i, ((int(*)())h)(i) );
  }
}




2

05 এ বি 1 , 3 বাইট

.DP

এটি অনলাইন চেষ্টা করুন! বা সমস্ত উদাহরণ চেষ্টা করুন

.D  # pop a,b    push b copies of a 
    # 05AB1E implicitly takes from input if there aren't enough values on the stack
    # For input 5, this gives us the array: [5,5,5,5,5]
  P # Take the product of that array
    # Implicit print

দেখে মনে হচ্ছে আপনি উপভোগ করেছেন .D। প্রথমবার আমি এটি ব্যবহার করতে দেখেছি।
ম্যাজিক অক্টোপাস উরন

আহ, আমি এখানে যা ঘটছে তা পাই না .. এটি খুব বিদেশী বলে মনে হচ্ছে এবং কীভাবে এটি কাজ করে সে সম্পর্কে কোনও ব্যাখ্যা নেই। = (

@ xakepp35 এটি সাহায্য করে?
রাইলি

2

হাস্কেল , 24 23 21 বাইট

f y=product$y<$[1..y]

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


1
f y=foldr1(*)$y<$[1..y]একটি বাইট সংক্ষিপ্ত।
লাইকনি

1
product$y<$[1..y]
নিমি

নিশ্চিত না যে আমি কীভাবে পণ্যটি ভুলে যেতে পেরেছি, ধন্যবাদ! : ডি
sudee


2

x86 মেশিন কোড (লিনাক্স), 18 বাইট

31 c0 ff c0 31 db 39 df 74 07 0f af c7 ff c3 eb f5 c3

এটি নিম্নলিখিত হিসাবে একটি সি ঘোষণা ঘোষণা করে extern int XpowX(int)

অনেকত্রিত

XpowX:
  # edi : input register
  # ebx : counter
  # eax : result register
  xor  %eax, %eax    # result  = 0
  inc  %eax          # result += 1
  xor  %ebx, %ebx    # counter = 0
  loop:
    cmp  %ebx, %edi  # if (counter == input)
    je   done        #   return result
    imul %edi, %eax  # result  *= input
    inc        %ebx  # counter += 1
    jmp   loop
  done:
    ret



1

পার্ল 6 , 13 বাইট

{[*] $_ xx$_}

$_ xx $_এর $_অনুলিপিগুলির একটি তালিকা মূল্যায়ন করে $_( $_বেনামে ফাংশনটির পক্ষে যুক্তি হওয়া) এবং তারপরে [*]সেই তালিকাটিকে সংখ্যাবৃদ্ধির সাথে হ্রাস করে।




1

রাদা , 17 বাইট

{product([_]*_1)}

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

এটি একটি বেনাম কর্ম যা প্রবাহ থেকে এটি ইনপুট নেয়।

ব্যাখ্যা:

{product([_]*_1)}
{               } /* An anonymous function */
         [_]      /* An array containing the input value */
            *_1   /* repeated times the input value */
 product(      )  /* Product of all values in the array */

1

ডিসি , 24 23 26 22 বাইট

ডিসিতে পুনরাবৃত্ত ম্যাক্রো লেখার এটি আমার প্রথম প্রচেষ্টা। আমি নিশ্চিত এটি একটি উপ-অনুকূল সমাধান যা অনেক উন্নতি করা যেতে পারে।

dsr1+[lrr1-d1<F*]dsFxp

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

সম্পাদনা করুন: ধন্যবাদ Eush77 ! -4 বাইট.


1
জন্য কাজ করে না x=1
eush77

আপনি lrপ্রথমে দুটি দিয়ে শেষ সিকোয়েন্সগুলি প্রতিস্থাপন করে দুটি বাইট বন্ধ করতে পারেন d
eush77

আসলে, আপনার দরকার নেই। প্রথমবার ডাকার আগে কেবল স্ট্যাকের শীর্ষটিকে বাড়িয়ে দিন। এইভাবে আপনি স্ট্যাকের xঅনুলিপিগুলি x(এবং 1অবশ্যই) এবং xতার পরে গুণগুলি শেষ করবেন। সুতরাং শেষ কেবল সহজ হতে পারে dsFxp
eush77

@ eush77 আমি বলছিলাম যে দ্বিতীয়টি সরিয়ে ফেলতে lrএখানে কাজ হবে না। স্ট্যাক-ভিত্তিক ভাষায় এটি আমার প্রথমবারের মতো গল্ফ করছে, সুতরাং এটি খুব অস্বাভাবিক বোধ করে। আপনার সাহায্যের জন্য ধন্যবাদ!
ম্যাক্সিম মিখায়লভ

1

ব্যাচ, 58 বাইট

@set n=1
@for /l %%i in (1,1,%1)do @set/an*=%1
@echo %n%

32-বিট পাটিগণিতের কারণে কেবল একক-অঙ্কের ইনপুটগুলির জন্য কাজ করে।


1

brainf * সিকে , 148 বাইট

,[->+>+<<]>>[-<<+>>]++++++++[<------<------>>-]<[->>+>>+<<<<]>>[-<<+>>]>>-[-<<<<<[>[>+>+<<-]>>[<<+>>-]<<<-]>>[-<<+>>]>>>]<<<++++++++[-<<++++++>>]<<.

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

কোনও বিল্ট-ইন নেই;)

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

,                                       - get ascii input
[->+>+<<]                               - duplicate input
>>[-<<+>>]                              - shift inputs left to start
++++++++[<------<------>>-]             - convert ascii into input numbers
<[->>+>>+<<<<]                          - get loop intervals (same as input #)
>>[-<<+>>]                              - shift input back again
>>-[-<<<<<[>[>+>+<<-]>>[<<+>>-]<<<-]>>  - iterated addition (multiplication)
[-<<+>>]>>>                             - Shift output back into input
]<<<++++++++[-<<++++++>>]<<.            - convert final output to ascii

সংক্ষেপে, এটি নিজের দ্বারা বহুগুণ x(ইনপুট) দ্বারা কাজ করে x। (ওরফে পুনরাবৃত্তি পুনরাবৃত্ত সংযোজন)। নেট ফলাফলটি x ^ x।

ইনপুট / আউটপুট

প্রোগ্রামটি একটি একক ASCII ইনপুট নেয় এবং এএসসিআইআই সূচক বিয়োগ 48 হিসাবে এটি প্রক্রিয়া করে । বিয়োগ 48 প্রকৃত সংখ্যার ইনপুট স্বাভাবিক হয় ( 4হয়ে 52-> 52-48-> 4)। 9 এর চেয়ে বেশি সংখ্যাকে ইনপুট করতে, পরবর্তী সংশ্লেষক ASCII অক্ষর ( :-> 58-48-> 10) ব্যবহার করুন। প্রোগ্রামটি একই ধরণের আউটপুট দেয়।

পরীক্ষা I / O

INPUT > PROCESSED INPUT >> OUTPUT > TRANSLATED OUTPUT
1 > 1 >> 1 > 1
2 > 2 >> 4 > 4
3 > 3 >> K > 27

যেহেতু 3 এর ইনপুট পরে কোনও মুদ্রণযোগ্য এএসসিআইআই অক্ষর নেই, এটি কেবলমাত্র তত্ত্ব অনুসারে সংখ্যা মুদ্রণ করতে পারে । যদিও, আপনি পরীক্ষা করতে পারবেন সমস্ত ইনপুট যেমন visualizers উপর সত্য কাজ না এই



1

পাইথন, 32 বাইট

f=lambda g,z=1:z>g or g*f(g,z+1)

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


পিপিসিজিতে আপনাকে স্বাগতম! আপনার f=অংশটি গণনা করার দরকার নেই , যাতে আপনি আপনার জমাটি 30 বাইটে সংক্ষিপ্ত করতে পারেন ।
স্টেডিবক্স

@ স্টেডিবক্স f=অংশটি গণনা করা দরকার, কারণ এটি পুনরাবৃত্তিযোগ্য, সুতরাং এটি fসঠিকভাবে কাজ করার জন্য ফাংশনটির নামকরণের উপর নির্ভর করে
musicman523

@ musicman523 হ্যাঁ, আপনি ঠিক বলেছেন।
স্টিডিবক্স

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