পুনরাবৃত্ত! Factorials!


34

ফ্যাক্টরিয়ালটি নিয়ে বিভ্রান্ত হওয়ার দরকার নেই !

ভূমিকা

একটি পূর্ণসংখ্যার ফ্যাক্টরিয়ালটিn দ্বারা গণনা করা

n!=n×(n1)×(n2)×(...)×2×1

এটি তুলনামূলকভাবে সহজ এবং নতুন কিছু নয়। যাইহোক, ফ্যাক্টরিয়ালগুলিতে প্রসারিত হতে পারে , যেমন এমনকি সংখ্যার জন্য, এবং বিজোড় সংখ্যার জন্য । তবে আমরা ডাবল ফ্যাক্টরিওর মধ্যে সীমাবদ্ধ নেই। উদাহরণস্বরূপ বা বা এন !!! = n \ বার (এন -3) \ বার (এন -6) \ বার (...) \ গুণ 4 \ বার 1 উপর নির্ভর করে শুরুর মান।

n!!=n×(n2)×(n4)×(...)×4×2
n!!=n×(n2)×(n4)×(...)×3×1
n!!!=n×(n3)×(n6)×(...)×6×3
n!!!=n×(n3)×(n6)×(...)×5×2
n!!!=n×(n3)×(n6)×(...)×4×1

সংক্ষেপে:

n!(k)={1if n=0nif 0<nkn((nk)!(k))if n>k
যেখানে
n!(k)=n!!k
বা সরল ইংরেজী ভাষায়: মৌলিক সংখ্যা থেকে বারবার কৌনিক সংখ্যাটি বিয়োগ করুন এবং ফলস্বরূপ সমস্ত ধনাত্মক পূর্ণসংখ্যাকে গুণ করুন।

চ্যালেঞ্জ

এমন একটি ফাংশন লিখুন যা কোনও অ-নেতিবাচক পূর্ণসংখ্যার জন্য পুনরায় ফ্যাক্টরিয়াল গণনা করবে।

ইনপুট

উভয় ক্ষেত্রেই

  • একটি স্ট্রিং যেখানে একটি অ-নেতিবাচক বেস-টেন পূর্ণসংখ্যা রয়েছে, তারপরে 1 বা আরও বিস্মৃত চিহ্ন রয়েছে। যেমন "6!"বা "9!!"বা "40!!!!!!!!!!!!!!!!!!!!"

অথবা

  • দুটি পূর্ণসংখ্যার দ্বারা প্রতিনিধিত্ব করা একই মান: একটি অ-নেতিবাচক ভিত্তি মান এবং একটি ধনাত্মক মান যা গুণক গণনা উপস্থাপন করে। এটি ডিফল্ট আই / ও বিধি থেকে যে কোনও বিন্যাস অনুসারে করা যায়।

আউটপুট

বলে গণনার ফলাফল।

চ্যালেঞ্জ মন্তব্য

  • 0!1সংজ্ঞা অনুসারে সমান । আপনার কোড অবশ্যই এই জন্য অ্যাকাউন্ট করা উচিত।
  • এই ব্যাপ্তির বাইরে দ্বারা সীমাবদ্ধ , আপনি যা আউটপুট দিতে পারেন তা নির্দ্বিধায়। সরাইয়া থেকে , যা এই নিয়মের একমাত্র ব্যতিক্রম নয়।
    0<factorial countbase value
    0!

উদাহরণ

Input                              Output

3!!!                               3
0!                                 1
6!                                 720
9!!                                945
10!!!!!!!!                         20
40!!!!!!!!!!!!!!!!!!!!             800
420!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  41697106428257280000000000000000

একটি অবারিত পাইথন প্রয়োগের সাথে এটি ব্যবহার করে দেখুন: অনলাইনে চেষ্টা করুন!

সাধারণ মন্তব্য


6
উদাহরণগুলির তালিকা 0!তবে চ্যালেঞ্জের মন্তব্যগুলি বলছে যে ঘটনামূলক গণনাটি বেস মানের থেকে কম বা সমান হবে।
জোনাথন অ্যালান

1
3 না !!! শূন্য হতে? n * (n-3) = 3 * (3-3) = 0.
আউটফুলক করুন

2
@ouflak যদি এটি 1 এর মতো কাজ করে তবে সত্যিই তা নয়। এটি আরও 1 এর মতো! = 1. 2 !! = 2. 3 !!! = 3. কোনও গণনা নেই, কারণ আপনি পুনরাবৃত্তির শেষে রয়েছেন। পণ্যগুলিতে 0 নেই বা অন্য একক ফ্যাক্টরিয়ালটি শেষে 0 এ নেমে আসবে।
ভি। কুর্তোইস

4
3!!!!!!!অপরিবর্তিত হওয়া উচিত নয় - এটির উত্তরটি পাওয়া উচিত 3। এটি একইরকম 1!!=1(অপরিজ্ঞাত নয়)। এছাড়াও আপনার ইনপুট স্পেসিফিকেশন বলে যে সর্বদা কমপক্ষে একটি থাকবে !, সুতরাং প্রথম উদাহরণটি 3নির্দিষ্টকরণের সাথে খাপ খায় না।
গ্রেগ মার্টিন

3
@ ফ্যাবিয়ানআরলিং: তবে এটি যা তা নয়। (3!)!পরিবর্তে এটি কোনও ফ্যাক্টরিয়াল থেকে পদগুলি সরিয়ে দেয় না । এটি একটি বিভ্রান্তিমূলক নাম; আমি ধরে নিলাম এটি বারবার একটি শৃঙ্খলে ফ্যাক্টরিয়াল ফাংশনটি প্রয়োগ করবে এবং এটি আসলে কী তা সাবধানতার সাথে পড়তে হয়েছিল। ভাগ্যক্রমে প্রশ্নটি এটিকে পরিষ্কারভাবে ব্যাখ্যা করে। এর চেয়ে আরও ভাল নাম স্ট্যাচুয়াল ফ্যাক্টরিয়াল বা স্টেপ ফ্যাক্টরিয়াল বা কিছু হতে পারে
পিটার কর্ডস

উত্তর:



13

আর্নল্ডসি , 702 698 634 বাইট

LISTEN TO ME VERY CAREFULLY f
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE n
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE p
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE r
YOU SET US UP 1
HEY CHRISTMAS TREE c
YOU SET US UP 0
STICK AROUND n
GET TO THE CHOPPER r
HERE IS MY INVITATION r
YOU'RE FIRED n
ENOUGH TALK
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET DOWN p
ENOUGH TALK
GET TO THE CHOPPER c
HERE IS MY INVITATION 0
LET OFF SOME STEAM BENNET n
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE c
GET TO THE CHOPPER n
HERE IS MY INVITATION 0
ENOUGH TALK
YOU HAVE NO RESPECT FOR LOGIC
CHILL
I'LL BE BACK r
HASTA LA VISTA, BABY

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

সিউডোকোডে অনুবাদিত:

f(n,p) {
  r=1;
  c=0;
  while (n) {
    r=r*n;
    n=n-p;
    c=n<0;
    if (c) n=0;
  }
  return r;
}

দ্রষ্টব্য: আর্নল্ডসির কেবলমাত্র এক ধরণের ডেটা রয়েছে: 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা। অতএব আমি 420!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!মামলাটি পরীক্ষা করতে পারি না ।


আপনার psuedocode সম্পর্কে মাত্র কৌতূহল। ভেরিয়েবল 'সি' কিসের জন্য?
আউটফ্লাক করুন

@ouflak আমি কয়েকবার আমার উত্তর সম্পাদনা করেছি এবং এটি ভুলে গিয়েছি। cপরিবর্তনশীল আসলে মধ্যে তুলনা মান সঞ্চয় করে nএবং 0
চার্লি

+1 এবং আমি আমার LUA উত্তরের জন্য এটি (মাইনাস 'সি') ধার নিয়েছি।
আউটফ্লাক করুন

12

জেলি , 4 বাইট

RṚmP

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

কিভাবে? প্রদত্ত এন এবং , এটা প্রথম পরিসীমা উত্পন্ন এন,,1 (সঙ্গে RṚ), তারপর সঙ্গে mতা প্রত্যেক রাখে এই পরিসীমা উপাদান (তাই এন,এন-,এন-2,,এন-এন/ ), এবং অবশেষে তাদের ব্যবহার করে গুণ করে P


ভাল কাজ করে, এবং শেষ পর্যন্ত তাই সহজ। আমি জেলিকে মোটেও জানি না তবে কমপক্ষে এটি দেখতে ভাল লাগছে :)
ভি। কুর্তোইস

1
@ ভি.কোর্তোইস প্রদত্ত এবং কে , এটি প্রথমে এন , , 1 (সহ ) পরিসীমা তৈরি করে , তারপরে এটি এই পরিসরের প্রতিটি কে- উপাদান রাখে (সুতরাং এন , এন - কে , এন - 2 কে , , এন - এন / ), এবং পরিশেষে তা বৃদ্ধি পায় তাদের ব্যবহার । শুধু সোজা পদ্ধতি। সম্পাদনা: উত্তরে আমি এই ব্যাখ্যাটি যুক্ত করেছি। এনএন,,1RṚmএন,এন-,এন-2,,এন-এন/P
মিঃ এক্সকোডার

হ্যাঁ আপনাকে অনেক ধন্যবাদ একদিন আমি এই ভাষায় গল্ফ করতে চাই তাই আমাকে সেগুলি মনড, ডায়াডস ইত্যাদি শিখতে হবে
ভি। কুর্তোইস

বিকল্প যে CJam মত দেখায়: r1mP
এরিক আউটগল্ফার

1
@KyeWShi জেলি নিজস্বতা আছে codepage , তাই 256 অক্ষরের এটা রয়েছে প্রতিটি 1 বাইট হিসাবে এনকোডেড হয়েছে।
মিঃ এক্সকোডার

8

এপিএল (ডায়ালগ প্রসারিত) , 7 বাইট এসবিসিএস

বেনামে ট্যাসিট প্রিফিক্স ফাংশন। লাগে [n,b]আর্গুমেন্ট হিসাবে।

×/-\…1¨

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

 যুক্তি প্রতিটি উপাদান জন্য একটি; [1,1]

-\ संचयी পার্থক্য; [n,n-b]

 পদক্ষেপের সূচক হিসাবে বাম আর্গুমেন্টের দ্বিতীয় উপাদান ব্যবহার করে পরিসীমা, যেমন [9,7]চালিয়ে যায়5

×/ পণ্য


7

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

n%a=product[n,n-a..1]

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

পদক্ষেপযুক্ত পরিসীমা গণনার সাথে অন্তর্নির্মিত পণ্য ফাংশনটির সংমিশ্রণটি আমি কী পুনরাবৃত্তভাবে কোড আপ করতে পারি তা বীট করে (এমনকি ফ্লাইটার একটি বাইট সংরক্ষণ করেও)।

22 বাইট

n%a|n<1=1|m<-n-a=n*m%a

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

এখানে স্ট্রিং ফর্ম্যাটে ইনপুট নেওয়ার মতো একটি সমাধান রয়েছে 9!!যা আমি মনে করি এটি আরও আকর্ষণীয়।

42 বাইট

(\[(n,a)]->product[n,n-length a..1]).reads

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


2
আমি মনে করি আপনি পুনরাবৃত্ত সমাধানটি সংক্ষিপ্ত করতে পারবেনn%a|n<1=1|m<-n-a=n*m%a
flawr


5

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

হিসাবে ইনপুট লাগে (k)(n)

k=>g=n=>n<1||n*g(n-k)

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

অথবা বিগআইণ্টস সমর্থন করতে 24 বাইট


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

চ্যালেঞ্জটিতে বর্ণিত ফর্ম্যাটটি ব্যবহার করে স্ট্রিং হিসাবে ইনপুট নেয়।

s=>(a=s.split`!`,k=a.length-1,g=n=>n<1||n*g(n-k))(a[0])

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


5

হোয়াইটস্পেস , 91 বাইট

[S S S T    N
Push_1][S N
S _Duplicate_1][S N
S _Duplicate_1][T   N
T   T   _Read_STDIN_as_integer_(base)][T    T   T   _Retrieve_base][S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer_(factorial)][N
S S N
_Create_Label_LOOP][S N
S _Duplicate_base][S S S T  N
_Push_1][T  S S T   _Subtract][N
T   T   S N
_If_negative_jump_to_Label_PRINT_RESULT][S N
S _Duplicate_base][S T  S S T   S N
_Copy_0-based_2nd_(result)][T   S S N
_Multiply][S N
T   _Swap_top_two][S S S N
_Push_0][T  T   T   _Retrieve_factorial][T  S S T   _Subtract][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT_RESULT][S N
N
_Discard_top][T N
S T _Print_result_as_integer]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন-লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইন সহ)।

সিউডো কোডে ব্যাখ্যা:

Integer result = 1
Integer base = STDIN as integer
Integer factorial = STDIN as integer
Start LOOP:
  If(base <= 0):
    Call function PRINT_RESULT
  result = result * base
  base = base - factorial
  Go to next iteration of LOOP

function PRINT_RESULT:
  Print result as integer to STDOUT


4

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

{[*] $^a,*-$^b...^1>*}

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

অজ্ঞাতনামা কোডব্লক যা প্রথম ইনপুট থেকে শুরু করে ব্যাপ্তির পণ্যটি 1দেয়, শেষ সংখ্যাটি বাদ দিয়ে দ্বিতীয়টি নীচে না হওয়া পর্যন্ত হ্রাস পাবে । এটি কাজ করে 0, যেহেতু পণ্য দ্বারা হ্রাসের বেস কেস 1, সুতরাং আউটপুট 1 হয়।


4

05 এ বি 1 ই , 10 8 7 বাইট

ݦRIιнP

দুটি পৃথক ইনপুট হিসাবে ইনপুট: প্রথম ইনপুট হচ্ছে base; দ্বিতীয় ইনপুট হচ্ছেfactorial

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

-২ বাইটস @ মিঃ এক্সএক্সকোডারকে ধন্যবাদ ।
-1 বাইট @ জোনাথন অ্যালানকে ধন্যবাদ ।

ব্যাখ্যা:

Ý        # Create a list in the range [0, (implicit) base-input]
 ¦       # And remove the first item to make it the range [1, base]
         # (NOTE: this is for the edge case 0. For the other test cases simply `L` instead
         #  of `ݦ` is enough.)
  R      # Reverse this list so the range is [base, 1]
   Iι    # Uninterleave with the second input as step-size
         #  i.e. base=3, factorial=7: [[3],[2],[1],[],[],[],[]]
         #  i.e. base=10, factorial=8: [[10,2],[9,1],[8],[7],[6],[5],[4],[3]]
         #  i.e. base=420, factorial=30: [[420,390,360,...,90,60,30],[419,389,359,...],...]
     н   # Only leave the first inner list
      P  # And take the product of its values
         # (which is output implicitly as result)

আসল 10 বাইট উত্তর:

L0KD¤-IÖÏP

দুটি পৃথক ইনপুট হিসাবে ইনপুট: প্রথম ইনপুট হচ্ছে base; দ্বিতীয় ইনপুট হচ্ছেfactorial

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

ব্যাখ্যা:

L           # Create a list in the range [1, (implicit) base-input]
 0K         # Remove all 0s (edge case for input 0, which will become the list [1,0])
   D        # Duplicate this list
    ¤       # Get the last value (without popping)
            # (could also be `Z` or `¹` for max_without_popping / first input respectively)
     -      # Subtract it from each item in the list
      IÖ    # Check for each if they're divisible by the second factorial-input
        Ï   # In the list we copied, only leave the values at the truthy indices
         P  # And take the product of those
            # (which is output implicitly as result)

1
এই 6-বাইটার: LR²ιнP( অনলাইনে এটি চেষ্টা করুন! ) 0 ছাড়া ব্যতীত প্রতিটি পরীক্ষার ক্ষেত্রে কাজ করে
মিঃ এক্সকোডার

তবে আমি অনুমান করি যে 0 টি ক্ষেত্রে সর্বাধিক 2 বাইটে স্থির করা যায়। আপনি যদি এটির সমাধানের কোনও উপায় বের করেন তবে আপনি এটি নিতে পারেন :) সম্পাদনা: সম্ভবত LR²ιн0KP8 বাইটের জন্য?
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার ভাল উত্তর! এমনকি কোনও প্রদত্ত পদক্ষেপ সহ নিরবচ্ছিন্ন ব্যবহার কখনও করবেন না। :)
কেভিন ক্রুইজসেন

0K0!স্পেসিফিকেশন দ্বারা একটি অবৈধ ইনপুট হিসাবে অপ্রয়োজনীয় হওয়া উচিত (যদিও এটি উদাহরণগুলির মধ্যে অন্তর্ভুক্ত করা হয়েছে) - আমি এই সম্পর্কে মন্তব্য করেছি ।
জোনাথন অ্যালান

1
... এবং যদি 0! ইনপুট ডোমেনে থাকে তবে ݦRXιнPএকটি বাইট সংরক্ষণ করে।
জনাথন অ্যালান

4

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

একই মেশিন কোড 32-বিট মোডে এবং 16-বিট মোডে 16-বিট পূর্ণ সংখ্যার জন্য একই কাজ করে।

এই ফাংশন, args সঙ্গে callable হয় n=RCX, k=ESI। মধ্যে 32-বিট রিটার্ন মান EAX

ডাবল আরোগুলি সহ সত্যিকারের আরোগুলিকে সঠিক রেজিস্টারগুলিতে পেতে x86-64 সিস্টেম ভি কলিং কনভেনশন সহ সি থেকে কলযোগ্য। uint32_t factk(int, uint32_t k, int, uint64_t n); আমি কেবল উইন্ডোজ এক্স 64 ব্যবহার করতে পারিনি কারণ 1- mulঅপরেন্ড ক্লোবার্স আরডিএক্স, এবং আমরা আরএক্স / উপাহারগুলি আর 8 / আর 9 অ্যাক্সেস করতে চাই না। nজেআরসিএক্সজেডের উচ্চ 32 বিটগুলিতে কোনও আবর্জনা থাকতে হবে না তবে এটি সমস্ত 32-বিট ব্যতীত।

এনএএসএম তালিকা (আপেক্ষিক ঠিকানা, মেশিন কোড, উত্স)

 1                         factk:
 2 00000000 6A01             push 1
 3 00000002 58               pop rax             ; retval = 1
 4 00000003 E306             jrcxz  .n_zero      ; if (n==0) return
 5                         .loop:                ; do {
 6 00000005 F7E1              mul   ecx            ; retval *= n  (clobbering RDX)
 7 00000007 29F1              sub   ecx, esi       ; n -= k
 8 00000009 77FA              ja   .loop         ; }while(sub didn't wrap or give zero)
 9                         .n_zero:
10 0000000B C3               ret

0xc = 12 বাইট


বা 10 বাইট যদি আমাদের n=0বিশেষ কেসটি হ্যান্ডেল করার দরকার না হয় তবে এটি ছেড়ে jrcxz

স্ট্যান্ডার্ড ফ্যাক্টরিয়ালটির জন্য আপনি loopসাব / জা এর পরিবর্তে 2 বাইট সংরক্ষণ করতে ব্যবহার করবেন তবে অন্যথায় সঠিক কোডটি।


টেস্ট আহ্বানকারী যে পাসের argcহিসাবে k, সঙ্গে nহার্ড কোডেড।

align 16
global _start
_start:
  mov  esi, [rsp]
;main:
  mov  ecx, 9
  call factk

  mov  esi, eax
  mov  edx, eax
  lea  rdi, [rel print_format]
  xor  eax, eax
extern printf
  call printf
extern exit
  call exit

section .rodata
print_format: db `%#x\t%u\n`

```

3

এপিএল (ডায়ালগ ইউনিকোড) , 11 বাইট এসবিসিএস

বেনামে টাসিট ইনফিক্স ফাংশন। লাগে nঅধিকার আর্গুমেন্ট হিসাবে এবং bবাম আর্গুমেন্ট হিসাবে।

×/1⌈⊢,⊢-×∘⍳

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

×∘⍳ সংখ্যাবৃদ্ধি bদ্বারা ɩ ntegers 1 মাধ্যমেn

⊢- যে থেকে বিয়োগ n

⊢, শুরুতে যোগ n

1⌈ এক এবং তাদের প্রত্যেকের সর্বাধিক

×/ পণ্য



3

ওল্ফ্রাম ভাষা (গণিত) , 22 21 বাইট

1##&@@Range[#,1,-#2]&

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

-1 অ্যাটিনিট ধন্যবাদ: Times --> 1##&

ব্যাখ্যা: Rangeমানগুলির একটি তালিকা তৈরি করতে ব্যবহার করুন {n, n-k, n-2k, n-3k, ...}, 1 এর নীচে যাওয়ার আগে থামানো (অর্থাত্ ডানদিকে থামানো)। তারপরে এই তালিকার সমস্ত সংখ্যার Times(বা 1##&) দিয়ে গুণ করুন।


-1 বাইট সঙ্গে 1##&পরিবর্তেTimes
attinat

3

জাভা 10, 44 বাইট

f->b->{int r=1;for(;b>0;b-=f)r*=b;return r;}

প্রথম ইনপুট হিসাবে দ্বিতীয় হিসাবে ভিত্তিক, হিসাবে নেয়।

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

সীমিত সংখ্যার পরিসীমা (32-বিট) এর ফলে এটি উপরের বৃহত্তম পরীক্ষার ক্ষেত্রে কাজ করে না। এই সমস্যার সমাধান করতে আমরা ব্যবহার করতে পারি BigIntegers, যা কাকতালীয়ভাবে হয় ঠিক আকার দ্বিগুণ - 88 79 বাইট :

f->b->{var r=f.ONE;for(;b.signum()>0;b=b.subtract(f))r=r.multiply(b);return r;}

-9 বাইটস @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

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

ব্যাখ্যা:

f->b->{       // Method with two integer parameters and integer return-type
  int r=1;    //  Result-integer, starting at 1
  for(;b>0;   //  Loop as long as the base is still larger than 0
      b-=f)   //    After every iteration: decrease the base by the factorial
    r*=b;     //   Multiply the result by the base
  return r;}  //  Return the result


@ অলিভিয়ারগ্রোগোয়ার এনপি, এবং ধন্যবাদ! :)
কেভিন ক্রুইজসেন

2

জাপট , 8 বাইট

TõUV f ×

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

-1 ইওআইকে ধন্যবাদ জানাই যে শেগি কীভাবে বোবা অনাবৃত হতে পারে!


kTf1 বাইটের সাথে প্রতিস্থাপন করা যেতে পারে
অজ্ঞতার

1
এম্বোডিমেন্টফ অজ্ঞতা অবশ্যই তা পারে! আমি জানতাম এটি গল্ফের জন্য খুব তাড়াতাড়ি! : \
শেগি


2

ম্যাথগল্ফ , 7 6 বাইট

╙╒x%ε*

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

0 পরিচালনা করার জন্য একটি চতুর উপায় খুঁজে পেয়েছি! অন্যান্য পরীক্ষার কেস পরিবর্তন না করেই। k n(বিপরীত ক্রম) হিসাবে ইনপুট নেয় , যা অন্তর্ভুক্ত পপিংয়ে সহায়তা করে।

ব্যাখ্যা

╙        maximum of two elements (pops largest of k and n,
         which is n for every valid case except 0!, where 1 is pushed)
 ╒       range(1,n+1)
  x      reverse int/array/string
   %     slice every k:th element
    ε*   reduce list with multiplication

2

সংযুক্তি , 21 19 বাইট

${x<y∨x*$[x-y,y]}

এটি অনলাইন চেষ্টা করুন! খুব সরাসরি পুনরাবৃত্তিমূলক বাস্তবায়ন। (দ্রষ্টব্য: trueএটি মূলত 1, যেমন এটি গাণিতিক ক্রিয়াকলাপগুলিতে ব্যবহৃত হতে পারে1 )) এই সাইটের জন্য আমি যে কয়েকটি প্রোগ্রাম লিখেছি তা এটি একটি যেখানে একটি ইউনিকোড অপারেটর ব্যবহার করে বাইট সংরক্ষণ করে (1, সুনির্দিষ্ট হতে হবে)।

বিকল্প

20 বাইট: ${x<y or x*$[x-y,y]}

21 বাইট: Prod@${{_%y=x%y}\1:x}

27 বাইট: ${x*[`1,$][x>y][x-y,y]∨1}

27 বাইট: ${If[x>y,x*$[x-y,y],_or 1]}

27 বাইট: ${x*[`1,$][x>y][x-y,y]or 1}

29 বাইট: ${If[x>y,x*$[x-y,y],_+not _]}


2

মরিচা , 92 73 61 বাইট

fn f(n:i128,k:i128)->i128{if n<=0{return 1}return n*f(n-k,k)}

আমি কেবল মরিচা শিখতে শুরু করছি, তাই আমি নিশ্চিত যে এটি আরও খাটো হতে পারে। আমি শিখছি হিসাবে আপডেট হবে। i128শেষ পরীক্ষার গণনা করার জন্য রিটার্ন মান হওয়া উচিত ।

সম্পাদনা: পুনরাবৃত্তি সংক্ষিপ্ত।

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

আপনি নিজের পরীক্ষা যোগ করতে পারেন বা ইতিমধ্যে বিদ্যমান একটিতে সম্পাদনা করতে পারেন।


2

q , 59 57 55 53 বাইট

{prd 2+(&)1_i=last i:("J"$x(&)not[n])#(!)sum n:"!"=x}

ব্যাখ্যা:

q)x:"12!!" / let our input be 12!!, assign to x
q)sum n:"!"=x / count "!"s
2i
q)(!)sum n:"!"=x / (!)m -> [0,m)
0 1
q)("J"$x(&)not[n]) / isolate the number in input
12
q)("J"$x(&)not[n])#(!)sum n:"!"=x / x#y means take x items from list y, if x>y, circle around
0 1 0 1 0 1 0 1 0 1 0 1
q)i:("J"$x(&)not[n])#(!)sum n:"!"=x / assign to i
q)i
0 1 0 1 0 1 0 1 0 1 0 1
q)(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / take last elem of i and see which are equal in i
010101010101b
q)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / drop first elem
10101010101b
q)(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / indices of 1b (boolean TRUE)
0 2 4 6 8 10
q)2+(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / add 2 across array
2 4 6 8 10 12
q)prd 2+(&)1_(last i)=i:("J"$x(&)not[n])#(!)sum n:"!"=x / product across array
46080

এখানেও কে (একই যুক্তি) এর একটি সংস্করণ, 42 41 বাইট রয়েছে

{*/2+&1_i=last i:("J"$x@&~:n)#!+/n:"!"=x}

সাইটে স্বাগতম! আমি আপনার পোস্টে কোড ফর্ম্যাটিং যুক্ত করেছি যা লাইনের আগে চারটি স্পেস দিয়ে বা ট্রিপল ব্যাকটিক্স দিয়ে এটি বন্ধ করে করা যায়।
গম উইজার্ড

@ শ্রুতচিলিজম ও'জাইক ধন্যবাদ :-)
স্ক্রল

1
আমি একটি ব্যাখ্যা এবং সম্ভবত টিআইওর মতো কোনও অনলাইন অনুবাদকের সাথে একটি লিঙ্ক যুক্ত করার পরামর্শ দিচ্ছি । কেবলমাত্র কোডের উত্তরগুলি স্বয়ংক্রিয়ভাবে নিম্ন মানের হিসাবে পতাকাঙ্কিত হয়।
mbomb007

@ mbomb007 আকর্ষণীয়। একটি বট পতাকা উত্তর আছে? নিম্ন-মানের সাবমিশনের সাথে কী ঘটে? আমি শীঘ্রই আপডেট করব!
স্ক্রল

হ্যাঁ, একটি বট আছে। স্ট্যাক এক্সচেঞ্জ সম্ভাব্য স্প্যাম এবং নিম্নমানের উত্তরগুলি সন্ধান করতে বট ব্যবহার করে। উচ্চ পর্যায়ে খ্যাতিযুক্ত ব্যক্তিরা পর্যালোচনা সারিটি দেখতে পারেন। meta.stackexchange.com/a/161391/285610
mbomb007

1

ফিজিকা , 22 বাইট

f=>n;k:n<1||n*f[n-k;k]

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


26 বাইট

কীভাবে আমার নিজের "ভাষা" ব্যবহার করতে হবে তা পুনরায় শেখার \ ও / ... আমি যদি 2 বছর আগে পার্সার লিখতে জানতাম তবে এটি 20 বাইট হত :(

->n;k:GenMul##[n…1]{%%k}

অথবা

->n;k:GenMul##Range[n;1;k]

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


1

রেটিনা , 66 বাইট

^0
1
\d+
*!,
+`(!+)(!+),\1$
$1$2,$2,$1
!+$
1
+`(!+),(\d+)
$.($2*$1

এটি অনলাইন চেষ্টা করুন! লিঙ্কে দ্রুত পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। বিস্মৃত চিহ্ন ছাড়াই মলসের সংখ্যা। ব্যাখ্যা:

^0
1

ঠিক কর 0!

\d+
*!,

nঅ্যানারিতে রূপান্তর করুন এবং একটি বিভাজক যুক্ত করুন।

+`(!+)(!+),\1$
$1$2,$2,$1

বারবার বিয়োগ kথেকে nযখন n>k, এবং ফলাফল সংগ্রহ।

!+$
1

(দশমিক) এর kসাথে প্রতিস্থাপন করুন 1

+`(!+),(\d+)
$.($2*$1

দশমিক রূপান্তরিত করে প্রতিটি মধ্যবর্তী মানের দ্বারা গুণান।




1

ফোর্থ (গফার্থ) , 50 বাইট

: f 1 1 2over / 1+ 0 do 2over i * - 1 max * loop ;

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

কোড ব্যাখ্যা

: f                \ start a new word definition
  1 1              \ add placeholder and accumulator to stack
  2over / 1+       \ get the number of times to run the loop (num/factorial + 1)
  0 do             \ start loop from 0 to num/factorial
    2over          \ copy num and factorial to the top of the stack
    i * -          \ get the current number to multiply by (num - factorial * i)
    1 max          \ make sure it can't be 0 or negative [set to 1 if it is]
    *              \ multiply accumulator by result
  loop             \ end loop
;                  \ end the word definition           



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