অতিরিক্ত তথ্য!


17

গণিতে, তাত্ত্বিক, অ-নেতিবাচক পূর্ণসংখ্যা n এর সংক্ষিপ্ত "ফ্যাক্ট", এন দ্বারা চিহ্নিত ! , সমস্ত ধনাত্মক পূর্ণসংখ্যার গুণফল n এর চেয়ে কম বা সমান হয় । উদাহরণস্বরূপ, 5! হয় 1 * 2 * 3 * 4 * 5 = 120

গৌণিক 0 হয় 1 একটি খালি পণ্যের জন্য কনভেনশন অনুযায়ী।


এগুলি আমাদের নিয়মিত সত্য facts আসুন কিছু বিকল্প যুক্ত করুন:

  1. বর্ণনামূলক (উপরের সংজ্ঞায়িত)
  2. ডাবল ফ্যাক্টরিয়াল: এন !! = 1 + 2 + ... + এন
  3. ট্রিপল ফ্যাক্টরিয়াল: এন !!! = 1 - (2 - (3 - (... - এন))) ...)
  4. চতুর্মুখী ঘটনাচক: এন !!!! = 1 / (2 / (3 ... / n)) ...) । দ্রষ্টব্য: এটি ভাসমান পয়েন্ট বিভাগ, পূর্ণসংখ্যা বিভাগ নয়।

চ্যালেঞ্জ

একটি অ-নেতিবাচক পূর্ণসংখ্যার ইনপুট এন নিন , সরাসরি 1 এবং 4 এর মধ্যে বিস্ময়কর চিহ্নগুলি অনুসরণ করুন। ইনপুটটি দেখতে (ঠিক) দেখতে পাবেন: 0! , 5 !! , 132 !!! বা 4 !!!! । এই চ্যালেঞ্জে, আপনি একটি নমনীয় ইনপুট ফর্ম্যাট ধরে নাও নিতে পারেন, দুঃখিত sorry

আউটপুট

আউটপুটটি কোনও সুবিধাজনক বিন্যাসে ফলাফল হওয়া উচিত। চতুর্মুখী ফ্যাক্টরিয়ালটির ফলাফলের দশমিক বিন্দুর পরে কমপক্ষে 2 টি সংখ্যা থাকতে হবে, 0 বাদে !!!! = 0

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

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
---
0!! = 0
1!! = 1
2!! = 3
3!! = 6
4!! = 10
5!! = 15
6!! = 21
7!! = 28
8!! = 36
9!! = 45
10!! = 55
---
0!!! = 0
1!!! = 1
2!!! = -1
3!!! = 2
4!!! = -2
5!!! = 3
6!!! = -3
7!!! = 4
8!!! = -4
9!!! = 5
10!!! = -5
---
0!!!! = 0
1!!!! = 1
2!!!! = 0.5
3!!!! = 1.5
4!!!! = 0.375
5!!!! = 1.875
6!!!! = 0.3125
7!!!! = 2.1875
8!!!! = 0.27344
9!!!! = 2.4609
10!!!! = 0.24609

প্রতিটি ভাষার সংক্ষিপ্ততম সমাধানটি জিততে পারে।


2
চতুর্ভুজ ফ্যাক্টরিয়ালটিও কি যৌক্তিক বিভাগ হতে পারে?
মার্টিন ইন্ডার

6
"ডাবল ফ্যাক্টরিয়াল" সংজ্ঞাটি
একদমই

4
@ এরিক, এটি বিকল্প ডাবল ফ্যাক্ট ;-)
স্টিভি গ্রিফিন

1
@ স্টেভি গ্রিফিন বিটিডাব্লু এটি কিছুটা চটজলদি 0!-> 1
এরিক দি আউটগল্ফার

5
শিরোনাম বিকল্প ফ্যাক্টস
ডিজিটাল ট্রমা

উত্তর:


7

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

s=>eval(([a,b]=s.split(/\b/),g=k=>+a?k-a?k+'_*+-/'[b.length]+`(${g(k+1)})`:k:+!b[1])(1))

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

বিন্যাসিত এবং মন্তব্য

s =>                                // given the input string s,
  eval(                             // evaluate as JS code:
    ( [a, b] = s.split(/\b/),       //   a = integer (as string) / b = '!' string
      g = k =>                      //   g = recursive function taking k as input
        +a ?                        //     if a is not zero:
          k - a ?                   //       if k is not equal to a:
            k + '_*+-/'[b.length] + //         append k and the operation symbol
            `(${g(k + 1)})`         //         append the result of a recursive call
          :                         //       else:
            k                       //         just append k and stop recursion
        :                           //     else:
          +!b[1]                    //       return 1 for multiplication / 0 otherwise
    )(1)                            //   initial call to g() with k = 1
  )                                 // end of eval()

7

হুশ , 15 বাইট

§!ëΠΣF-F/#'!oṫi

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

ব্যাখ্যা

ফাংশনগুলির তালিকায় সূচীকরণ: একটি কার্যকরী ভাষা ব্যবহারের আনন্দ।

§!ëΠΣF-F/#'!oṫi  Implicit input, say x = "6!!!"
              i  Convert to integer (parses the leading sequence of digits): 6
            oṫ   Descending range to 1: y = [6,5,4,3,2,1]
  ë              Four-element list containing the functions
   Π             product,
    Σ            sum,
     F-          left fold with subtraction (gives 0 for empty list), and
       F/        left fold with division (gives 0 for empty list).
 !               1-based index into this list with
         #'!     count of !-characters in input: gives F-
§                Apply to y and print implicitly: -3

আমি একটি উতরাই পরিসীমা এবং বাম ভাঁজগুলি ব্যবহার করি, যেহেতু -এবং /তাদের যুক্তিগুলি হুসের বিপরীত ক্রমে নিয়ে যায়।


Indexing into a list of functions
ওহো

আমি হাস্কেলের কথা ভাবছিলাম, এবং তারপরে আমি এটি দেখতে পাচ্ছি ... সত্যিই মনে হয় কাজের জন্য সঠিক সরঞ্জাম। +1
অলিক্স 4'17

এটি হুস্কের জন্য তৈরি হয়েছিল: ডি
লিও

6

সি # (.নেট কোর) , 134 130 128 বাইট

s=>{double e=s.Split('!').Length,n=int.Parse(s.Trim('!')),i=n,r=n;for(;--i>0;)r=e>4?i/r:e>3?i-r:e>2?i+r:i*r;return n<1&e<3?1:r;}

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

কোড গল্ফিংয়ের সেরা অংশটি হ'ল চ্যালেঞ্জগুলি সমাধান করার চেষ্টা করার সময় আপনি যা শিখেন। এটির মধ্যে আমি শিখেছি যে সি # তে আপনি স্ট্রিংয়ের সাদা অংশের পাশাপাশি অন্যান্য অক্ষরগুলিও ছাঁটাতে পারেন।

  • 4 টি বাইট LiefdeWen ধন্যবাদ সংরক্ষণ!
  • 2 বাইট সংরক্ষিত কারণ আমি 1 substract করার প্রয়োজন হবে না s.Split('!').Length, শুধুমাত্র সীমা ঠিক e>4?i/r:e>3?i-r:e>2?i+r:i*rএবং n<1&e<3?1:r

1
আপনি করতে পারেন e nএবং iএছাড়াও double4 বাইট সংরক্ষণ করতে R জন্য এটি প্রকাশক এড়ানো।
LiefdeWen

1
@ লিফড ওয়েইন বা floatঅন্য একটি বাইট সংরক্ষণ করতে।
কেভিন ক্রুজসেন

4

পার্ল 5 , 62 বাইট

61 বাইট কোড +1 এর জন্য -p

$_=/^0!$/+eval join(qw{| *( +( -( /(}[s/!//g],1..$_).")"x--$_

আমার পক্ষ থেকে মিস মিস করার জন্য @ জিবিকে ধন্যবাদ !

এটি অনলাইন চেষ্টা করুন! (এটি -lপঠনযোগ্যতার জন্য ব্যবহার করে )


4
0! 1 নয় 0
জিবি

@ জিবি ওয়েল এটির কোনও মানে নেই ... +5 এর জন্য স্থির!
ডম হেস্টিংস

4

আর , 113 111 বাইট

function(s){z=strtoi((n=strsplit(s,'!')[[1]])[1])
n=length(n)
`if`(z,Reduce(c('*','+','-','/')[n],1:z,,T),n<2)}

কিছু পরীক্ষার কেস চেষ্টা করে দেখুন!

ungolfed:

function(s){
  n <- strsplit(s,"!")[[1]]          # split on "!"
  z <- strtoi(n[1])                  # turn to integer
  n <- length(n)                     # count number of "!"
  FUN <- c(`*`,`+`,`-`,`/`)[[n]]     # select a function
  right <- TRUE                      # Reduce (fold) from the right
  if( z > 0)                         # if z > 0
    Reduce(FUN, 1:z,,right)          # return the value
  else    
    (n < 2)                          # 1 if n = 1, 0 if n > 1
}

el(strsplit(s,"!")) 1 বাইট সংরক্ষণ করে
বাউন্সিবল

4

পাইথন 3, 124 130 121 119 বাইট

এই মুহুর্তে, আমি বিশ্বাস করি যে পুনরাবৃত্তিই আরও বাইট সাশ্রয়ের মূল চাবিকাঠি।

s=input()
l=s.count('!')
v=int(s[:-l])+1
print(eval((" *+-/"[l]+"(").join(map(str,range(1,v)))+")"*(v-2)or"0")+(l<2>v))

অনলাইনে চেষ্টা করে দেখুন টেস্টকেসগুলি ব্যবহার করে দেখুন!

@ মিস্টার এক্সকোডারকে -9 বাইটস ধন্যবাদ !

-২ বাইটস @ ফিলিপ নার্দি বাতিস্তাকে ধন্যবাদ !



আমি টিও টেস্ট স্যুট আপডেট করেছি।
মিঃ এক্সকোডার


ওহ হ্যাঁ, অবশ্যই, এটি
স্পষ্ট


3

পাইথ , 34 30 বাইট

+uv++H@"/*+-"/Q\!G_tUK.vQKq"0!

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

ব্যাখ্যা

+uv++H@"/*+-"/Q\!G_tUK.vQKq"0!"Q    Implicit: append "Q
                                    Implicit: read input to Q
                      .vQ           Evaluate Q as Pyth code. This evaluates the integer,
                                    any !'s are parsed as unary NOT for the next expression
                                    and discarded.
                     K              Save the result to K.
                    U               Get a list [0, 1, ..., K-1].
                   t                Drop the first item to get [1, 2, ..., K-1].
                  _                 Reverse to get [K-1, K-2, ..., 1].
 u                       K          Starting from G = K, for H in [K-1, K-2, ..., 1] do:
             /Q\!                     Count the !'s in Q.
      @"/*+-"                         Get the correct operator.
    +H                                Prepend the current H.
   +             G                    Append the previous value G.
  v                                   Evaluate as Python code.
                          q"0!"Q    See if Q == "0!".
+                                   If so, add 1.

Using .U saves a byte.
Erik the Outgolfer

2

05AB1E, 27 bytes

þL"/*+-"¹'!¢©è".»"ì.VD_нi®Θ

Try it online!


DO you know why „.» doesn't work?
Riley

@Riley » is part of an unfinished compressed string, so it errors out and, as usually in 05AB1E, the error is ignored.
এরিক দি আউটগলফার

আমি ফলোআপ "*+-/"èUব্যবহার করার পরে তা করার চেষ্টা করছিলাম তবে এটি একটি স্ট্রিং হিসাবে আচরণ করে , কমান্ড নয় এবং এমনকি উইঙ্কিয়ার ierL.»XX.»X.V
ম্যাজিক অক্টোপাস উরন

@MagicOctopusUrn X doesn't eval. X.V are two commands.
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগল্ফার হ্যাঁ, তবে আমি আশা করছিলাম যে ভাঁজটি প্রক্রিয়াজাত করার আগে এটি কার্যকর হবে। আশা করছি না, আশা করছেন :(। শপথ নিতে পারতেন "ডায়াডিক চেইনে কমান্ড হিসাবে একক চরিত্রের স্ট্রিং ব্যবহার করুন" বা অন্য কিছু।
ম্যাজিক অক্টোপাস উরান


2

জাভা 8, 141 136 134 বাইট

s->{float q=s.split("!",-1).length,n=new Float(s.split("!")[0]),i=n,r=n;for(;--i>0;r=q<3?i*r:q<4?i+r:q<5?i-r:i/r);return n<1&q<3?1:r;}

-5 বাইট (141 → 136) @ কার্লোস আলেজো'র সি # উত্তরকে ধন্যবাদ ।

ব্যাখ্যা:

এখানে চেষ্টা করুন।

s->{                                // Method with String parameter and float return-type
  float q=s.split("!",-1).length,   //  Amount of exclamation marks + 1
        n=new Float(s.split("!")[0]),
                                    //  The number before the exclamation marks
        i=n,                        //  Index (starting at `n`)
        r=n;                        //  Return sum (starting at `n`)
  for(;--i>0;                       //  Loop from `i-1` down to 1
    r=                              //   Change the result (`r`) to:
      q<3?                          //    If `q` is 2:
       i*r                          //     Multiply
      :q<4?                         //    Else if `q` is 3:
       i+r                          //     Addition
      :q<5?                         //    Else if `q` is 4:
       i-r                          //     Subtraction
      :                             //    Else (if `q` is 5):
       i/r                          //     Division
  );                                //  End of loop
  return n<1&q<3?                   //  Edge case if the input is `0!`:
          1                         //   Then return 1
         :                          //  Else:
          r;                        //   Return the result
}                                   // End of method

1
I have seen a similar answer somewhere else... :-D I keep forgetting that float is shorter than double.
Charlie

@CarlosAlejo Yeah, I noticed your answer after my initial 141 byte answer. Changing float q=s.length()-(s=s.replace("!","")).length(),n=new Float(s) to the current answer saved me 5 bytes. :) Forgot to add a "bytes saved thanks to" part I noticed now.. Sorry about that.
Kevin Cruijssen

ওহ, এটি মনে রাখবেন না, আপনি আমার উত্তর পছন্দ করেছেন বলে আমি আনন্দিত। :-)
চার্লি

2

জেলি ,  24 23 26  25 বাইট

ভুল ব্যাখ্যার পরে ঠিক করার জন্য +  3  2 বাইট প্যাচ করছে :(

×
+
_
÷
ṣ”!µḢVRṚȯL©Ị$®ŀ@/

একটি সম্পূর্ণ প্রোগ্রাম (প্রোগ্রামের অবস্থানের দ্বারা রেফারেন্সকারী সহায়ক লিঙ্কগুলির সাথে এক একাত্মক লিঙ্ক)

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

কিভাবে?

× - Link 1, multiply: number, number

+ - Link 2, add: number, number

_ - Link 1, subtract: number, number

÷ - Link 1, divide: number, number

ṣ”!µḢVRṚȯL©Ị$®ŀ@/ - Main link: list of characters, a
ṣ”!               - split s at '!' characters
   µ              - monadic separation, call that b
    Ḣ             - head - pop and yield the digit list from b, modifying b
     V            - evaluate as Jelly code (get the number, say N)
      R           - range = [1,2,3,...,N]
       Ṛ          - reverse = [N,...,3,2,1]
            $     - last two links as a monad:
         L        -   length of modified b (number of '!' characters)
          ©       -   (copy to register)
           Ị      -   insignificant? (1 when just one '!', 0 when two or more)
        ȯ         - logical or (1 for "0!", 0 for "0!!...", the reversed-range otherwise)
                / - cumulative reduce by:
               @  -  with swapped arguments:
              ŀ   -    dyadic call of link at index:
             ®    -      recall value from register (number of '!' characters)

ব্যর্থ 0!
এরিক আউটগল্ফার

ওহ, হাহা - আমি ওপি এর অধীনে আপনার মন্তব্যটি ভুল পড়ে দেখেছিলাম - আমি ভেবেছিলাম তারা 0 করত! 0 হিসাবে সংজ্ঞায়িত যা ভুল হবে।
জোনাথন অ্যালান

এখনই সব ঠিক করা হয়েছে :)
জোনাথন অ্যালান

খুব খারাপ টিআইও এখনই ভেঙে গেছে যাতে এটি এখনও অবৈধ কিনা তা পরীক্ষা করতে পারছি না। :(: P: P এছাড়াও খুব খারাপ যা আপনি ব্যবহার করতে পারবেন না /। একটি খালি তালিকায় ডি: সম্পাদনা: দৃশ্যত জন্য বৈধ 0!, 0!!, 0!!!এবং 0!!!!+1 টি।
এরিক Outgolfer

2

স্ব-সংশোধন করা x86_64 মেশিন কোড, 123 বাইট

0f b6 0f 31 c0 eb 11 0f be c9 8d 04 80 8d 44 41 d0 0f b6 4f 01 48 ff c7 83 f9 21 75 ea b9 21 21 21 a1 33 0f 0f bc c9 81 c1 ff 07 00 00 c1 e9 03 0f b6 c9 89 ca 09 c2 74 35 55 48 89 e5 c7 45 fc 59 58 5c 5e 8a 4c 0d fc 88 0d 15 00 00 00 f3 0f 2a c8 83 f8 02 5d 7c 1f ff c8 0f 57 c0 f3 0f 2a c0 f3 0f 5e c1 83 f8 01 0f 28 c8 7f eb c3 f3 0f 10 05 03 01 00 00 c3 0f 28 c1 c3

ব্যাখ্যা করা ভাষাগুলি কেন অভিনবভাবে উইন্ডোজ কোড চালাতে সক্ষম হবে eval, তবে সরল মেশিন কোড নয়?

এটি দিয়ে চেষ্টা করুন:

#include <stdio.h>
#include <sys/mman.h>
#include <errno.h>

char ff[] = "\x0f\xb6\x0f\x31\xc0\xeb\x11\x0f\xbe\xc9\x8d\x04\x80\x8d\x44\x41\xd0\x0f\xb6\x4f\x01\x48\xff\xc7\x83\xf9\x21\x75\xea\xb9\x21\x21\x21\xa1\x33\x0f\x0f\xbc\xc9\x81\xc1\xff\x07\x00\x00\xc1\xe9\x03\x0f\xb6\xc9\x89\xca\x09\xc2\x74\x35\x55\x48\x89\xe5\xc7\x45\xfc\x59\x58\x5c\x5e\x8a\x4c\x0d\xfc\x88\x0d\x15\x00\x00\x00\xf3\x0f\x2a\xc8\x83\xf8\x02\x5d\x7c\x1f\xff\xc8\x0f\x57\xc0\xf3\x0f\x2a\xc0\xf3\x0f\x5e\xc1\x83\xf8\x01\x0f\x28\xc8\x7f\xeb\xc3\xf3\x0f\x10\x05\x03\x01\x00\x00\xc3\x0f\x28\xc1\xc3";
int main()
{
    char* page = (char*)((unsigned long)((char*)ff) & (~0xfffLL));
    if (mprotect(page, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC) < 0) {
        perror("mprotect");
        return -1;
    }
    float (*f)(char*) = (float (*)(char*))ff;
    char* testcases[] = { "0!","1!","2!","3!","4!","5!","6!","7!","8!","9!","10!",
                          "0!!","1!!","2!!","3!!","4!!","5!!","6!!","7!!","8!!","9!!","10!!",
                          "0!!!","1!!!","2!!!","3!!!","4!!!","5!!!","6!!!","7!!!","8!!!","9!!!","10!!!",
                          "0!!!!","1!!!!","2!!!!","3!!!!","4!!!!","5!!!!","6!!!!","7!!!!","8!!!!","9!!!!","10!!!!",
                        };
    for (int i = 0; i < 44; i++) {
        printf("%s -> %f\n", testcases[i], f(testcases[i]));
    }
}

এসেম্বলি:

_f:
100000d4f:  0f b6 0f    movzx   ecx, byte ptr [rdi]
100000d52:  31 c0   xor eax, eax
100000d54:  eb 11   jmp 17 <_f+18>
100000d56:  0f be c9    movsx   ecx, cl
100000d59:  8d 04 80    lea eax, [rax + 4*rax]
100000d5c:  8d 44 41 d0     lea eax, [rcx + 2*rax - 48]
100000d60:  0f b6 4f 01     movzx   ecx, byte ptr [rdi + 1]
100000d64:  48 ff c7    inc rdi
100000d67:  83 f9 21    cmp ecx, 33
100000d6a:  75 ea   jne -22 <_f+7>
100000d6c:  b9 21 21 21 a1  mov ecx, 2703302945
100000d71:  33 0f   xor ecx, dword ptr [rdi]
100000d73:  0f bc c9    bsf ecx, ecx
100000d76:  81 c1 ff 07 00 00   add ecx, 2047
100000d7c:  c1 e9 03    shr ecx, 3
100000d7f:  0f b6 c9    movzx   ecx, cl
100000d82:  89 ca   mov edx, ecx
100000d84:  09 c2   or  edx, eax
100000d86:  74 35   je  53 <_f+6E>
100000d88:  55  push    rbp
100000d89:  48 89 e5    mov rbp, rsp
100000d8c:  c7 45 fc 59 58 5c 5e    mov dword ptr [rbp - 4], 1583110233
100000d93:  8a 4c 0d fc     mov cl, byte ptr [rbp + rcx - 4]
100000d97:  88 0d 15 00 00 00   mov byte ptr [rip + 21], cl
100000d9d:  f3 0f 2a c8     cvtsi2ss    xmm1, eax
100000da1:  83 f8 02    cmp eax, 2
100000da4:  5d  pop rbp
100000da5:  7c 1f   jl  31 <_f+77>
100000da7:  ff c8   dec eax
100000da9:  0f 57 c0    xorps   xmm0, xmm0
100000dac:  f3 0f 2a c0     cvtsi2ss    xmm0, eax
100000db0:  f3 0f 5e c1     divss   xmm0, xmm1
100000db4:  83 f8 01    cmp eax, 1
100000db7:  0f 28 c8    movaps  xmm1, xmm0
100000dba:  7f eb   jg  -21 <_f+58>
100000dbc:  c3  ret
100000dbd:  f3 0f 10 05 03 01 00 00     movss   xmm0, dword ptr [rip + 259]
100000dc5:  c3  ret
100000dc6:  0f 28 c1    movaps  xmm0, xmm1
100000dc9:  c3  ret

ব্যাখ্যাগুলি পরে যুক্ত করা হবে। মৌলিক ধারণা পরিবর্তন করতে হয় divss xmm0, xmm1এ নির্দেশ 0x100000db0এবং সঙ্গে এটি প্রতিস্থাপন mulss, addss, subssবা divssসরবরাহকৃত প্রতীক অনুযায়ী। একটি ছোট কৌশলও ইনপুট স্ট্রিংকে বিশ্লেষণ করতে ব্যবহৃত হয়।

এসেম্বলি এর সাথে উত্পন্ন:

float f (char* s)
{
    int x;
    for (x=0; *s != '!'; s++) {
        x=10*x + (*s-'0');
    }
    unsigned char op = (__builtin_ctz(*(unsigned int *)s ^ 0xa1212121)-1) >> 3;
    if (x == 0 && op == 0) {
        return 1;
    }
    unsigned int lookup = 0x5e5c5859;
    unsigned char new_code = ((unsigned char*)&lookup)[op];
    asm("movb %0, 0x15(%%rip)" : : "r" (new_code));
    float sum;
    for (sum = x--; x>0; x--) {
        sum = x / sum;
    }
    return sum;
}

2

হাস্কেল, 105 102 98 96 বাইট

0!3=0
x!y=foldr([(*),(+),(-),(/)]!!y)([1,0,0,1]!!y)[1..x]
f s|[(n,b)]<-lex s=read n!(length b-1)

জগারব এবং নিমির জন্য 9 টি বাইট সংরক্ষণ করা হয়েছে।

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


@ জাগারব আপনি ঠিক বলেছেন সংশোধন করা হয়েছে।
ক্রিশ্চিয়ান লুপাস্কু

আমি আপনার কাছে প্রায় ডান বন্ধনী ড্রপ করতে পারেন মনে read n, এবং f=অনুযায়ী অপ্রয়োজনীয় আমাদের নিয়ম
জগারব

@ Zgarb আবারো :)। ধন্যবাদ!
ক্রিশ্চিয়ান লুপাস্কু

স্যুইচিং একটি নামাঙ্কিত ফাংশন পিছনে ব্যবহার lexদুই বাইট সংরক্ষণ: f s|[(n,b)]<-lex s=read n!(length b-1)
নিমি

@ নিমিমি ওয়া, ধন্যবাদ! আমি হাস্কেলের কাছে এতটাই নতুন যে আমি জানতাম না lex। সেটা খুবই ভালো! :) আমি দেখতে পাচ্ছি না কীভাবে এটি বাইট সংরক্ষণ করে - আমি এর পরে 99 বাইট পাই।
ক্রিশ্চিয়ান লুপাস্কু

1

গাইয়া , 26 25 বাইট

ẋ)@d┅v;l“×+⁻÷”=“ₔ⊢”+e¤ḥ!∨

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

ব্যাখ্যা

ẋ                          Split the input into runs of the same character.
 )                         Get the last one (the !'s).
  @                        Push an input (since there's none left, use the last one).
   d                       Parse as number (ignores the !'s).
    ┅v                     Get the reverse range: [n .. 1]
      ;                    Copy the ! string
       l“×+⁻÷”=            Get its length and index into this string of operators.
               “ₔ⊢”+       Append 'ₔ⊢' to the operator.
                    e      Eval the resulting string, which is "reduce by <operator> with
                            swapped arguments." Reducing an empty list gives 0.
                     ¤     Bring the !'s back to the top.
                      ḥ!   Remove the first character and check if it's empty.
                        ∨  Logical OR; turns 0 from 0! to 1, doesn't change anything else.


1

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

Lstefano এর সমাধান দ্বারা অনুপ্রাণিত ।

{0::0⋄(⍎'×+-⌹'⊃⍨≢⍵~⎕D)/⍳⍎⍵∩⎕D}

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

{... } বেনামে ফাংশন যেখানে যুক্তি দ্বারা প্রতিনিধিত্ব করা হয় :

0:: যদি কোনও ত্রুটি ঘটে:

  0 শূন্য ফিরে

 এখন চেষ্টা করুন:

  ⍵∩⎕D আর্গুমেন্টের ছেদ এবং ডি আইগিত্সের সেট (বিস্মৃতকরণের পয়েন্টগুলি সরিয়ে দেয়)

   চালাও (এটি একটি সংখ্যায় পরিণত হয়)

  of n এটি ices

  ()/ সন্নিবেশ করুন (এপিএল যথাযথ সহযোগী, প্রয়োজন হিসাবে) পদগুলির মধ্যে নিম্নলিখিত ফাংশন:

   ⍵~⎕Dডি আইজিটস  ছাড়াই যুক্তি (উদ্দীপনা পয়েন্টগুলি ছেড়ে দেয়)

   ট্যালি যে (অর্থাত্ কত বিস্ময়বোধক পয়েন্ট)

  '×+-⌹'⊃⍨ চিহ্নগুলির তালিকা থেকে বাছাই করতে এটি ব্যবহার করুন *

   সম্পাদন করুন (প্রতীকটিকে একটি ক্রিয়ায় রূপান্তরিত করে)


(ম্যাট্রিক্স বিভাগ) ÷খালি তালিকায় ত্রুটির কারণ হিসাবে (সাধারণ বিভাগ) এর পরিবর্তে ব্যবহৃত হয়


::ডিএফএন-তে কী করে ?
জাচারা ý

এটি একটি ত্রুটি প্রহরী । ত্রুটি রক্ষাকারী সেট আপ হওয়ার পরে যদি কোনও মুহুর্তে ::ঘটনার বামদিকে যে কোনও সংখ্যার (0 = 1 ... 999, 1000 = 1001…) এর সাথে একটি ত্রুটি হয়, তবে ডানদিকে ডানদিকের মানটি ::অবিলম্বে ফিরে আসে।
Adám

ঠিক আছে, আমি কখনই সে সম্পর্কে জানতাম না, ধন্যবাদ!
জাকারি


0

ডায়ালগ এপিএল, কমপক্ষে 29 টি অক্ষর

{(⍎i⊃'×+-÷')/⍳⍎⍵↓⍨-i←+/'!'=⍵}

অভিব্যক্তিটি প্রায় সঠিক। এটি সমস্ত পরীক্ষার ক্ষেত্রে ছাড়িয়ে যায় CE0!!!!1 পরিবর্তে এটি এটি0 খালি ভেক্টর হ্রাস হ্রাস করার জন্য ব্যবহৃত ফাংশনটির জন্য নিরপেক্ষ উপাদানটি ফিরিয়ে আনার কথা। ভাগফলের জন্য এটি ১। এই মুহুর্তে চেষ্টা করার এবং ঠিক করার মতো সময় আমার কাছে নেই তবে আমি এখানে একটি বর্ষার দিনের জন্য রেখে দেব।


বৃষ্টি হচ্ছে: {0::0⋄(⍎'×+-⌹'⊃⍨≢⍵~⎕D)/⍳⍎⍵∩⎕D} অনলাইনে চেষ্টা করে দেখুন!
অ্যাডম

খুব ঠান্ডা! পার্থক্য সাদৃশ্য চেয়ে বেশি যে আপনি এটি আপনার সমাধান হিসাবে দাবি করলে আমার মোটেই আপত্তি নেই।
lstefano



0

গণিত, 152 বাইট

(T=ToExpression;If[#=="0!!!!",0,s=T@StringCount[#,"!"];t=T@StringDrop[#,-s];{#!,i~Sum~{i,#},Sum[-i(-1)^i,{i,#}],N@Product[1/i^(-1)^i,{i,#}]}[[s]]&[t]])&

0

জাভাস্ক্রিপ্ট, 111 163 বাইট

s=>([a,b]=s.split(/\b/),c=b.length,a==0&c==1||eval((p=[...Array(+a+1).keys()].slice(1).join(c-1?c-2?c-3?'/(':'-(':'+':'*'))+')'.repeat((p.match(/\(/g)||[]).length)))

পঠনযোগ্য সংস্করণ

s=>([a,b]=s.split(/\b/),c=b.length,a==0&c==1||eval((p=
[...Array(+a+1).keys()].slice(1).join(c-1?c-2?c-3?'/(':'-
(':'+':'*'))+')'.repeat((p.match(/\(/g)||[]).length)))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.