বিসি লগ এবং ফ্যাক্টরিয়াল গণনা সমর্থন করে না?


17

অন্য কোন কমান্ড লাইন ক্যালকুলেটর যে সমর্থন করে log, n!গণনার? অন্তত এটি bcকরতে পারে না, এটি আমাকে পার্স ত্রুটি বলেছে

যদি আমি স্ক্রিপ্ট ব্যবহার করতে পারি তবে এটি সর্বোত্তম echo '5!' | program

উত্তর:


20

bc-lপতাকা সহ প্রার্থনা করা হলে প্রাকৃতিক লোগারিদম সমর্থন করে । আপনি এটির সাথে বেস -10 বা বেস -2 লগটি গণনা করতে পারেন:

$ bc -l
...
l(100)/l(10)
2.00000000000000000000

l(256)/l(2)
8.00000000000000000007

আমি মনে করি না যে এটি একটি অন্তর্নির্মিত ফ্যাক্টরিয়াল আছে তবে এটি নিজেকে লেখার পক্ষে যথেষ্ট সহজ:

$ bc
...
define fact_rec (n) { 
  if (n < 0) {
    print "oops";
    halt;
  }
  if (n < 2) return 1;
  return n*fact_rec(n-1);
}
fact_rec(5)
120

বা:

define fact_it (n) {
  if (n < 0) {
    print "oops";
    halt;
  }
  res = 1;
  for (; n > 1; n--) {
    res *= n;
  }
  return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000

পসিক্স অনুগত হতে, আপনাকে এটি লিখতে হবে:

define f(n) {
  auto s, m
  if (n <= 0) {
    "Invalid input: "
    n
    return(-1)
  }
  s = scale
  scale = 0
  m = n / 1
  scale = s
  if (n != m) {
    "Invalid input: "
    n
    return(-1)
  }
  if (n < 2) return(1)
  return(n * f(n - 1))
}

এটি: একক অক্ষর ফাংশনের নাম, না print, না halt, প্রথম বন্ধনী আবশ্যক return(x)। আপনার যদি ইনপুট বৈধতা প্রয়োজন না (এখানে ইতিবাচক পূর্ণসংখ্যার জন্য), এটি ঠিক:

define f(n) {
  if (n < 2) return(1)
  return(n * f(n - 1))
}

1
এন == 1 টির জন্য পরীক্ষা করা যদি আপনি এটিকে একটি নেতিবাচক সংখ্যা বা শূন্য দেন তবে অন্তহীন লুপের ফলাফল দেয়। পরিবর্তে বিসি ম্যান পৃষ্ঠা হিসাবে এন <= 1 ব্যবহার করুন। সত্যই, যদিও, এটি নেতিবাচক সংখ্যার একটি ত্রুটি ফেরত পাঠানো উচিত - এন.ইউইকিপিডিয়া.আর / উইকি / এর মতে, ফ্যাকটোরিয়ালগুলি গণনা করার জন্য পুনরাবৃত্তি করার ক্ষেত্রে এটি একটি পরিচিত সমস্যা।
ক্যাস

এটি ফ্যাকটোরিয়ালটির নিখুঁত বাস্তবায়নের জন্য অধ্যয়ন হিসাবে বোঝানো হয়নি, বিসি রুরসিভ ফাংশন সহ বিসির ফাংশন রয়েছে তা দেখানোর জন্য একটি সাধারণ ডেমো।
মাদুর

সত্য, তবে কেউ কোনও দিন সেই উদাহরণটির ফাংশনটি পড়বে এবং বলবে "দুর্দান্ত, আমি কীভাবে এটি করব তা ভাবছিলাম" এবং এটি ব্যবহার করবেন। বিটিডাব্লু, আমি যতটা গণিত গীকের মতো হওয়া এবং এখনও কম্পিউটার গীকের মতো হতে পারি না ... তবে যেহেতু আমি একটি ত্রুটি সংশোধন করছিলাম তখন ভেবেছিলাম প্রথমে একটু গবেষণা করাই ভালো ছিল :)
কেস

ঠিক আছে, আপনি সেখানে যান। সঠিক রিকার্সিভ এবং পুনরাবৃত্ত সংস্করণ ...
মাদুর

পুরোপুরি সঠিক নয়: 0!=1ঠিক যেমন 1!=1। কমপক্ষে, এটি উইকিপিডিয়া বলে।
ক্যাস

4

Orpie হয় ক্যালকুলেটর এবং কমান্ড লাইন Geeks জন্য ক্যালকুলেটর। এটি একটি আধুনিক এইচপি আরপিএন ক্যালকুলেটর অনুকরণ করে যা অবশ্যই গণনার একমাত্র সত্য উপায়।

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

গুনতে হবে 5! অর্পিতে, আপনি এটি যেমন লিখতে চান ঠিক তেমন টাইপ করুন : 5 !. আপনি প্রথমে স্ট্যাকের দিকে Enterধাক্কা দিতে তাদের মধ্যে টিপতে পারেন 5, তবে এটি প্রয়োজনীয় নয়।

10 (5) লগ গণনা করতে , টাইপ করুন 5 Enter ' l o Enter5এই ক্ষেত্রে আপনাকে প্রথমে স্ট্যাকের উপরে চাপ দিতে হবে , কারণ পরবর্তী কীস্ট্রোক কোনও অপারেটর নয়। এই একক উদ্ধৃতি চরিত্রটি কমান্ড সংক্ষেপণ মোডে প্রবেশ করে log10, যা আপনাকে টাইপ করা শুরু করতে দেয় , যা আপনি কেবল প্রথম দুটি অক্ষর দিয়ে স্বতন্ত্রভাবে সনাক্ত করতে পারেন। ( lএকা lnপরিবর্তে আপনি প্রাকৃতিক লগ ফাংশন পান, পরিবর্তে।)

যে কোনও আরপিএন ক্যালকুলেটরের মতো, আপনি কিছুটা অনুশীলন করে অর্পির সাথে সত্যিই দ্রুত যেতে পারেন ।

অরপি স্ট্যান্ডে রয়েছে উবুন্টু রেপোস। ফ্রিবিএসডি এটিকে বন্দরগুলিতে অন্তর্ভুক্ত করে math/orpie। ওএস এক্স-এ, আপনি হোমব্রুয়ের মাধ্যমে এটি ইনস্টল করতে পারেন । তৃতীয় পক্ষের প্যাকেজগুলি অন্য ওএসের জন্য উপলব্ধ থাকতে পারে। উত্স থেকে বিল্ডিং কিছুটা কাজকর্ম হতে পারে, যেহেতু এটি ওক্যামেলে লেখা হয়েছে , এবং আপনার সম্ভবত একটি ওসিএএমএল বিকাশ পরিবেশ নেই। যদিও একটি সেট আপ করা বিশেষত কঠিন নয়।


2

সেখানে সবসময় জিএনইউ অ্যাকটাভ থাকে , কমান্ড-লাইন ক্যালকুলেটরগুলির ইমাস (যখন আপনি নিজের ক্যালকুলেটরটিতে অন্তর্নির্মিত একটি সম্পূর্ণ বিকাশ পরিবেশ এবং প্রোগ্রামিং ভাষা এবং হাজার হাজার thousandsচ্ছিক অ্যাড-অনগুলি চান)

অথবা আর যদি স্ট্যাটাস আপনার জিনিস বেশি হয়।

আমি বেশিরভাগই bc -lস্ট্যান্ডার্ড গণিতের লাইব্রেরিটি লোড করার জন্য ব্যবহার করি ... আমি এমনকি bcএটিকে আলাদা করে রেখেছি bc -l। একটি ফ্যাক্টরিয়াল ফাংশন সংজ্ঞায়িত করার জন্য তথ্যের জন্য ম্যাটের উত্তর দেখুন .... যদিও bcম্যান পৃষ্ঠাটি এটি হিসাবে সংজ্ঞায়িত করেছে:

define f (x) {
  if (x <= 1) return (1);
  return (f(x-1) * x);
}

<= 1 এর চেয়ে == 1 এর জন্য চেক করা যদি আপনার এটিকে নেতিবাচক সংখ্যা (ত্রুটি হওয়া উচিত) বা শূন্য (বৈধ) খাওয়ানো হয় তবে একটি অন্তহীন লুপ প্রতিরোধ করে।


1

আমার প্রিয় লাইটওয়েট, সাধারণ W-Calchttp://w-calc.sourceforge.net

আপনাকে ম্যানুয়ালটি সন্ধান করতে হবে না বা ম্যানুয়ালি সাধারণ ফাংশনগুলি পুনরায় তৈরি করতে হবে না, যেমন আপনি করেন bc- কমান্ডগুলি বেশিরভাগই ঠিক আপনি যা প্রত্যাশা করেন তা হয়, তাই আপনি যা চান তা টাইপ করুন এবং এটি ঠিক কাজ করে। আপনার প্রশ্ন অনুসারে পরীক্ষা - সত্যই log()এবং n!প্রত্যাশা অনুযায়ী কাজ।

(স্বীকার করছি আমি অরপি সম্পর্কে শুনিনি - খুব ভাল একটি ভাল বিকল্প হতে পারে।)


0

সম্পূর্ণরূপে ওভারকিল, তবে প্রোগ্রামিং ল্যাঙ্গুয়েজ ইন্টারপ্রেটাররা হ'ল কমান্ড লাইন ক্যালকুলেটর:

$ echo 5 | python -c 'import sys; import math; print math.factorial(int(sys.stdin.readline()));'
120

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