একটি কল্পিত শেষে শূন্য


35

একটি প্রোগ্রাম বা ফাংশন লিখুন যা n!বেস 10 এর শেষে শূন্যের সংখ্যা খুঁজে পায় , যেখানে nএকটি ইনপুট নম্বর (কোনও পছন্দসই বিন্যাসে)।

এটি ধরে নেওয়া যায় যে nএটি একটি ধনাত্মক পূর্ণসংখ্যার অর্থ, n!এটি একটি পূর্ণসংখ্যাও। দশমিক পয়েন্ট পরে কোনও জিরো নেই n!। এছাড়া, এটিও ধারণা করা যায় যে আপনার প্রোগ্রামিং ভাষা মান সব ব্যবস্থা করতে সক্ষম nএবং n!


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

1
==> 0

5
==> 1

100
==> 24

666
==> 165

2016
==> 502

1234567891011121314151617181920
==> 308641972752780328537904295461

এটি কোড গল্ফ। স্ট্যান্ডার্ড বিধি প্রয়োগ। বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

জমা

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

সেখানে যদি আপনি আপনার শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের যোগফল বা আপনি আলাদাভাবে দোভাষী পতাকা শুল্ক তালিকাভুক্ত করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।



আমরা কি এন ধরে নিতে পারি! আমাদের ভাষার 'দেশীয় পূর্ণসংখ্যার প্রকারের মধ্যে খাপ খায়?
অ্যালেক্স এ।

@AlexA। হ্যা, তুমি পারো.
আর্কটরাস

nএকটি ইনপুট স্ট্রিং হতে পারে?
কনর ও'ব্রায়েন

15
আমি মনে করি এটি যদি n!আপনার পূর্ণসংখ্যার ধরণে মাপসই করা না যায় তবে এটি আরও ভাল প্রশ্ন হবে! ঠিক আছে, অন্য সময় হতে পারে।
একটি সিমন্স

উত্তর:


43

পাইথন 2, 27 বাইট

f=lambda n:n and n/5+f(n/5)

বিভক্তি শূণ্যসমূহ 5. কারণের দ্বারা সীমাবদ্ধ এর গুণিতক সংখ্যা 5যে সর্বাধিক nহয় n/5(মেঝে বিভাজন সহ), কিন্তু এই গুণিতক পুনরাবৃত্তি কারণের গণনা করা হয় না 25, 125, ...। সেগুলি পেতে, n5 দ্বারা বিভক্ত করুন এবং পুনরাবৃত্তি করুন।


19

জেলি , 5 বাইট

!Æfċ5

ফ্যাক্টরিয়ালটি সন্ধান করার পরে এটি আবার ফ্যাক্টরিয়াস করে, মৌলিক অনুষ্কারে 5 এর ঘনিষ্ঠের জন্য পরীক্ষা করে এমন প্রতিরক্ষামূলক পদ্ধতির ব্যবহার করে।

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

!              Factorial
 Æf            List of prime factors, e.g. 120 -> [2, 2, 2, 3, 5]
   ċ5          Count number of 5s

4
বাবা। ট্রেড অফ সম্পর্কে কথা! কোডটি 5 বাইটে নামিয়ে আনার জন্য, মেমরি এবং সময়কে অযৌক্তিক পরিমাণে বাড়িয়ে দিন।
রস প্রেসার

19

মর্নিংটন ক্রিসেন্ট, 1949 1909 বাইট

Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Parsons Green
Take District Line to Cannon Street
Take Circle Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Turnham Green
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Turnham Green
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Blackfriars
Take District Line to Upminster
Take District Line to Temple
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Blackfriars
Take Circle Line to Hammersmith
Take District Line to Becontree
Take District Line to Cannon Street
Take District Line to Becontree
Take District Line to Cannon Street
Take District Line to Becontree
Take District Line to Blackfriars
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Angel
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

-40 বাইট NieDzejkob ধন্যবাদ


এবং এটি এখন আমার সবচেয়ে উত্তেজিত উত্তর।
পিপ্পারি

3
আমরা যারা- Mornington Crescentজড়িত তাদের জন্য একটি সংক্ষিপ্ত ব্যাখ্যা শীতল হবে। :)
রবার্ট বেনসন

সংক্ষিপ্ত রেখার নাম ব্যবহার করে যেখানে সম্ভব সম্ভব -40 বাইট
নিডজেজেকোব

18

পাইথ, 6 বাইট

/P.!Q5

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

/    5   Count 5's in
 P        the prime factorization of
  .!Q      the factorial of the input.

বিকল্প 7-বাইট :

st.u/N5

ক্রমবর্ধমান হ্রাস .u/N5বারবার তল-বিভাজক 5হওয়া পর্যন্ত এটির পুনরাবৃত্তি না হওয়া পর্যন্ত, যা 0 টির পরে এই ক্ষেত্রে ঘটে।

34 -> [34, 6, 1, 0]

এরপরে প্রথম উপাদানটি সরানো হয় ( t) এবং বাকী অংশটি যোগ করা হয় ( s)।


13

আসলে, 10 বাইট

!$R;≈$l@l-

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

নোট করুন যে সিপিথনে সিরিয়াসলি চালানোর সময় শেষ পরীক্ষার কেস ব্যর্থ হয় কারণ math.factorialএকটি সি এক্সটেনশন (যা 64৪ -বিট পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ) ব্যবহার করে। যদিও পাইপাইতে সিরিয়াসলি চালানো ভাল কাজ করে।

ব্যাখ্যা:

!$R;≈$l@l-
!           factorial of input
 $R         stringify, reverse
   ;≈$      make a copy, cast to int, then back to string (removes leading zeroes)
      l@l-  difference in lengths (the number of leading zeroes removed by the int conversion)

3
ওহ বাহ, আমি পছন্দ করি কীভাবে এই পদ্ধতিটি 5 টি ট্রিক দ্বারা বিভাজকটি ব্যবহার করে না।
আর্কটরাস 12'16

আমি
এটির

1
@ স্কোর_উন্ডার আসলে সিপি 437 কোড পৃষ্ঠা ব্যবহার করে, ইউটিএফ -8 ব্যবহার করে না। প্রতিটি চরিত্র একটি বাইট হয়।
মেগো

9

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

f 0=0
f n=(+)=<<f$div n 5

মেঝে দ্বারা ইনপুট ভাগ করে 5, তারপরে ডাকা ফাংশনটিতে ফলাফল যুক্ত করে। এক্সপ্রেশনটি (+)=<<fএকটি ইনপুট নেয় xএবং আউটপুট দেয় x+(f x)

থেকে সংক্ষিপ্ত:

f 0=0
f n=div n 5+f(div n 5)

f 0=0
f n|k<-div n 5=k+f k

একটি পুনরাবৃত্তিমূলক অভিব্যক্তি 28 বাইট দিয়েছে:

f n=sum[n`div`5^i|i<-[1..n]]

কি iথেকে একটি পাল্টা 1..n?
কনর ও'ব্রায়েন

@ সিও'বʀɪᴇɴ হ্যাঁ, যদিও এটি কেবল log_5(n)বিষয়গুলির মধ্যে রয়েছে, বাকিগুলি 0 দেয়
xnor

8

এমএটিএল , 9 বাইট

:"@Yf5=vs

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

এটি খুব বড় সংখ্যক জন্য কাজ করে, কারণ এটি ফ্যাক্টরিয়াল গণনা এড়ানো হয়।

অন্যান্য উত্তরের মতো এটিও সত্যটি কাজে লাগায় যে বারের সংখ্যাটি 2ঘটনাকারীর বিভাজক হিসাবে প্রদর্শিত হয় তার বারের সংখ্যার চেয়ে বড় বা সমান 5

:     % Implicit input. Inclusive range from 1 to that
"     % For each
  @   %   Push that value
  Yf  %   Array of prime factors
  5=  %   True for 5, false otherwise
  v   %   Concatenate vertically all stack contents
  s   %   Sum

6

05 এ বি 1 ই, 5 বাইট

আমরা এন> 4 গ্যারান্টি দিতে পারলে 4 বাইট হবে

কোড:

Î!Ó7è

ব্যাখ্যা:

Î        # push 0 then input
  !      # factorial of n: 10 -> 2628800
   Ó     # get primefactor exponents -> [8, 4, 2, 1]
    7è   # get list[7] (list is indexed as string) -> 2
         # implicit output of number of 5s or 0 if n < 5

বিকল্প, আরও দ্রুত, 6 বাইট সমাধান: লুই মেন্ডোর এমএটিএল উত্তর দ্বারা অনুপ্রাণিত

LÒ€`5QO

ব্যাখ্যা:

L         # push range(1,n) inclusive, n=10 -> [1,2,3,4,5,6,7,8,9,10]
 Ò        # push prime factors of each number in list -> [[], [2], [3], [2, 2], [5], [2, 3], [7], [2, 2, 2], [3, 3], [2, 5]]
  €`      # flatten list of lists to list [2, 3, 2, 2, 5, 2, 3, 7, 2, 2, 2, 3, 3, 2, 5]
    5Q    # and compare each number to 5 -> [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
      O   # sum -> 2

: সম্পাদনা ব্যবহার সমাধানের মুছে ¢ (COUNT) 5 ধারণকারী সব মৌলিক 5 উদাঃ 53 গণনা করা হবে।

2 সম্পাদনা করুন: তুলনা হিসাবে উচ্চতর ইনপুট জন্য আরও কার্যকর সমাধান যোগ।


হ্যাঁ, পরিবর্তে , 5Qকাজ করা উচিত। ভাল উত্তর যদিও! :)
আদনান

আমি "যদি আউটপুট ছিল এই ব্যর্থ হবে না> 9" মন্তব্য সহ বৃহত্তর ইনপুট উপর পরীক্ষা করা যাচ্ছে হয়েছিল, কিন্তু এর ছেলে 05AB1E বাস্তবায়ন Óহয় ধীর
Sp3000

বিটিডব্লিউ, প্রথম কোডটিও হতে পারে Î!Ó2éগতকাল বাগটি ঠিক করা হয়েছিল ।
আদনান

আপনি যদি utf-8 ব্যবহার করে থাকেন Î!Ó7èতবে 8 বাইট হয় এবং "6 বাইট" সমাধানটি 10 ​​বাইট হয়
স্কোর_উন্ডারে

@ স্কোর_উন্ডার হ্যাঁ এটি সঠিক। তবে, 05AB1E সিপি-1252 এনকোডিং ব্যবহার করে।
আদনান

6

মতলব (59) (54)(39)

আরে দাও !!!! আমরা আপনাকে গণিতের মতো শুনেছি ...

  @(n)sum(fix(n./5.^(1:fix(log(n)/1.6))))
  • কোড পর্যালোচনায় এটি আমার তৈরি উত্তরের উপর ভিত্তি করে ।

  • কোড রিভিউতে আমার উত্তরে যা বর্ণিত হয়েছে তার চেয়েও বেশি, ফ্যাক্টরিয়াল (এন) এর জিরো সংখ্যার সূত্রটি হ'ল সম (এন / (5 ^ কে)) যেখানে কে 1 এবং লগ 5 (এন) এর মধ্যে পরিবর্তিত হয়

  • গল্ফায়ার পেতে না পারার একমাত্র তুচ্ছ কারণটি হ'ল মাতলাবে একটি বিল্টিন log5হিসাবে পাওয়া যায় না, সুতরাং আমি লগ (৫) কে ১.6 দ্বারা প্রতিস্থাপন করলাম, তাতে কিছু যায় আসে না কারণ এটি যাইহোক মেঝেতে থাকবে।

একবার চেষ্টা করে দেখো


প্রশ্ন কয়েক। ১. মতলব এ আপনি আসলে কীভাবে চালাবেন? 2. এন = 1 এর ফলাফল কী?
স্টুয়ার্ট ব্রুফ 12'16

@StuartBruff এই ধরনের উত্তর চালানোর জন্য (1) এবং তা ফেরত দেয় 0.
Abr001am

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

5

গণিত, 20 বাইট

IntegerExponent[#!]&

IntegerExponentশূন্যগুলি গণনা করে। মজা করার জন্য, এখানে এমন একটি সংস্করণ যা ফ্যাক্টরিয়াল গণনা করে না:

Tr[#~IntegerExponent~5&~Array~#]&

আমি মনে করি Arrayদ্বিতীয় সমাধানটিতে একটি বাইট সংরক্ষণ করে।
মার্টিন এন্ডার

5

সি, 28 বাইট

f(n){return(n/=5)?n+f(n):n;}

ব্যাখ্যা

পিছনের শূন্যগুলির সংখ্যা পাঁচটি সংখ্যার সমান যা ফ্যাক্টরিয়ালটি তৈরি করে। এর মধ্যে 1..nএকটির পাঁচ ভাগের পাঁচটি অবদান রাখে, তাই আমরা শুরু করি n/5। এর মধ্যে n/5একটি পঞ্চমটি 25 এর গুণক, সুতরাং অতিরিক্ত পাঁচটি অবদান রাখুন ইত্যাদি। আমরা শেষ f(n) = n/5 + n/25 + n/125 + ..., যা হয় f(n) = n/5 + f(n/5)nশূন্যে পৌঁছালে আমাদের পুনরাবৃত্তি সমাপ্ত করতে হবে; এছাড়াও আমরা ?:যোগক্রমের nআগে ভাগ করার জন্য সিকোয়েন্স পয়েন্টটির সুবিধা গ্রহণ করি ।

বোনাস হিসাবে, এই কোডটি প্রতিটি দেখার জন্য যা তার চেয়ে অনেক দ্রুত 1..n(এবং অনেকগুলি ফ্যাক্টরিয়াল গণনা করার চেয়ে অনেক দ্রুত)।

পরীক্ষা প্রোগ্রাম

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv) {
    while(*++argv) {
        int i = atoi(*argv);
        printf("%d: %d\n",i,f(i));
    }
}

টেস্ট আউটপুট

1: 0
4: 0
5: 1
24: 4
25: 6
124: 28
125: 31
666: 165
2016: 502
2147483644
: 536870901 2147483647: 536870902


একটি দুর্দান্ত ব্যাখ্যার জন্য +1
টাইটাস


4

জুলিয়া, 34 31 30 বাইট

n->find(digits(prod(1:n)))[]-1

এটি একটি বেনাম ফাংশন যা কোনও স্বাক্ষরিত পূর্ণসংখ্যার প্রকারটি গ্রহণ করে এবং পূর্ণসংখ্যা ফেরত দেয়। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন। বৃহত্তর পরীক্ষার কেসগুলি nবৃহত্তর ধরণের হিসাবে পাসের প্রয়োজন , যেমন ক BigInt

আমরা ফ্যাক্টরিয়ালটি গণনা করি n(ম্যানুয়ালি ব্যবহারটি prodঅন্তর্নির্মিতের তুলনায় সংক্ষিপ্ত factorial), digitsবিপরীত ক্রমে এর একটি অ্যারে পাই , findননজারো উপাদানগুলির সূচকগুলি, প্রথম এই জাতীয় সূচক পান এবং 1 বিয়োগ করুন।

এটি অনলাইন চেষ্টা করুন! (সর্বশেষ পরীক্ষার কেস বাদে সবগুলি অন্তর্ভুক্ত কারণ শেষটি অনেক বেশি সময় নেয়)

ডেনিসকে একটি বাইট সংরক্ষণ করে!



3

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

আনারি ইনপুট নেয়।

আনারি আউটপুট ফেরত।

+ + `^ (? = 1) (1 {5}) * 1 *
$ # 1 $ * 1; $ # 1 $ *
;

(পেছনের লাইনফিডটি নোট করুন))

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

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

প্রথম পর্যায়ে:

+`^(?=1)(1{5})*1*
$#1$*1;$#1$*

সামান্য শৃঙ্খলাবদ্ধ:

+`^(?=1)(11111)*1*\b
$#1$*1;$#1$*1

এর মানে কি:

  • প্রথমত, এর সাথে সর্বাধিক সংখ্যক 11111মিল পাওয়া যায়।
  • এই সংখ্যাটি দ্বারা প্রতিস্থাপন করুন
  • কার্যকরভাবে তল দ্বারা ভাগ 5
  • চেহারাটি (?=1)আশ্বাস দেয় যে সংখ্যাটি ইতিবাচক।
  • +`মানে idempotent পর্যন্ত পুনরাবৃত্তি করুন।
  • সুতরাং, প্রথম পর্যায়ে "5 দ্বারা পুনরাবৃত্তি তল-বিভাগ"

যদি ইনপুটটি 100 হয় (একচেটিতে) থাকে তবে পাঠ্যটি এখন:

;;1111;11111111111111111111

দ্বিতীয় স্তর:

;

কেবল সমস্ত আধা-কলোন সরিয়ে দেয়।


2

রুবি, 22 বাইট

রুবি 0সত্যবাদী হওয়া কয়েকবারের মধ্যে একটি হল বাইট গণনার জন্য সমস্যা।

f=->n{n>0?f[n/=5]+n:0}

অপেক্ষা কর কেন সত্য 0?
কনর ও'ব্রায়েন

2
@ সিওওবি রুবিতে রয়েছে, nilএবং falseএটি মিথ্যা এবং অন্য কিছুই নেই। গল্ফের ক্ষেত্রে অনেকগুলি ক্ষেত্রে সাহায্য হয়, কারণ 0সত্যবাদী হওয়ার অর্থ রুবি ফিরতিতে সূচক এবং রেজেক্স সূচক ফাংশনগুলির nilপরিবর্তে কোনও মিল না থাকলে -1এবং কিছু সমস্যা যেখানে খালি স্ট্রিংগুলি এখনও সত্যবাদী।
মান কালি

@ কেভিনলউ-নোট কেইনি যে তা বোঝায় না।
কনর ও'ব্রায়েন

2

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

{[+] -$_,$_,*div 50}
{sum -$_,$_,*div 5...0}

পার্ল to-এ^... যুক্ত করা গেলে আমি এটি সংক্ষিপ্ত করতে পারি । আপনি যদি সিকোয়েন্স জেনারেটরের মধ্যে কোনও সংশোধক যুক্ত করেন তবে এটি বৃহত্তর সংখ্যার জন্য আরও মেমরি দক্ষ হওয়া উচিত । {sum $_,*div 5^...0}
lazysum

ব্যাখ্যা:

{ # implicitly uses $_ as its parameter
  sum

    # produce a sequence
    -$_,     # negate the next value
     $_,     # start of the sequence

     * div 5 # Whatever lambda that floor divides its input by 5

             # the input being the previous value in the sequence,
             # and the result gets appended to the sequence

     ...     # continue to do that until:

     0       # it reaches 0
}

টেস্ট:

#! /usr/bin/env perl6

use v6.c;
use Test;

my @test = (
     1,   0,
     5,   1,
   100,  24,
   666, 165,
  2016, 502,
  1234567891011121314151617181920,
        308641972752780328537904295461,

  # [*] 5 xx 100
  7888609052210118054117285652827862296732064351090230047702789306640625,
        1972152263052529513529321413206965574183016087772557511925697326660156,
);

plan @test / 2;

# make it a postfix operator, because why not
my &postfix:<!0> = {[+] -$_,$_,*div 5...0}

for @test -> $input, $expected {
  is $input!0, $expected, "$input => $expected"
}

diag "runs in {now - INIT now} seconds"
1..7
ok 1 - 1 => 0
ok 2 - 5 => 1
ok 3 - 100 => 24
ok 4 - 666 => 165
ok 5 - 2016 => 502
ok 6 - 1234567891011121314151617181920 => 308641972752780328537904295461
ok 7 - 7888609052210118054117285652827862296732064351090230047702789306640625 => 1972152263052529513529321413206965574183016087772557511925697326660156
# runs in 0.0252692 seconds

(এই শেষ লাইনটি কিছুটা বিভ্রান্তিমূলক, যেমন মোআরভিএমকে পার্ল 6 সংকলক এবং রানটাইম লোড করতে হবে, কোডটি সংকলন করতে হবে এবং রান করতে হবে So সুতরাং এটি মোটামুটি প্রায় দেড়েক সময় নেয়
That এটি এখনও এটির তুলনায় যথেষ্ট দ্রুতগতির ওল্ফ্রামআল্ফা ডটকমের সাথে সর্বশেষ পরীক্ষার ফলাফলটি পরীক্ষা করা ছিল)


2

ম্যাথক্যাড, [টিবিডি] বাইটস

এখানে চিত্র বর্ণনা লিখুন

ম্যাথক্যাড হ'ল গাণিতিক "হোয়াইটবোর্ড" যা অভিব্যক্তি, পাঠ্য এবং প্লটের 2D প্রবেশের অনুমতি দেয়। এটি অনেকগুলি ক্রিয়াকলাপের জন্য গাণিতিক চিহ্ন ব্যবহার করে, যেমন সমষ্টি, পার্থক্য এবং সংহতকরণ। প্রোগ্রামিং অপারেটরগুলি একটি বিশেষ প্রতীক, সাধারণত কন্ট্রোলের একক কীবোর্ড সংমিশ্রণ হিসাবে প্রবেশ করানো হয় এবং / অথবা একটি মান কীতে স্থানান্তরিত হয়।

উপরে আপনি যা দেখছেন তা হ'ল ম্যাথক্যাড ওয়ার্কশিটটি টাইপ করার সময় এবং ম্যাথক্যাড যেমন এটি মূল্যায়ন করে ঠিক তেমন দেখাচ্ছে। উদাহরণস্বরূপ, ২০১ from থেকে অন্য যে কোনও মানতে এন পরিবর্তন করার ফলে ম্যাথক্যাডের ফলাফলটি নতুন মানটি যা হয় তা 502 থেকে আপডেট করতে হবে।

http://www.ptc.com/engineering-math-software/mathcad/free-download


ম্যাথক্যাডের বাইট সমতুল্য স্কোরিং পদ্ধতিটি এখনও নির্ধারিত হয়নি। প্রতীক সমতুল্যতা গ্রহণ করে, সমাধানটি প্রায় 24 "বাইটস" নেয় (যখন অপারেটরটি কেবল "সিটিএল-]" কী সংমিশ্রণ (বা কোনও সরঞ্জামদণ্ড থেকে) ব্যবহার করে প্রবেশ করা যায়)। ম্যাথ্যাক্যাডে অনুবাদ করার সময় আগাওয়া 1001 এর মতলব পদ্ধতিটি প্রায় 37 বাইট নেয় (সমষ্টি অপারেটরটি সিটিএল-শफ्ट- by দ্বারা প্রবেশ করে)।


হ্যান্ডেল করার জন্য একটি অত্যাশ্চর্য সরঞ্জাম মনে হচ্ছে, আমি এটি দ্বিতীয়বার ডাউনলোড করে ছাড়ব না!
Abr001am

2

ডিসি, 12 বাইট

[5/dd0<f+]sf

এটি এমন একটি ফাংশন সংজ্ঞায়িত করে fযা স্ট্যাকের শীর্ষ থেকে তার ইনপুট গ্রহণ করে এবং তার আউটপ্যাকটিকে স্ট্যাকের শীর্ষে ছেড়ে দেয়। গাণিতিক ভিত্তিতে আমার সি উত্তর দেখুন । আমরা বারবার 5 দ্বারা বিভক্ত করে স্ট্যাকের উপর মানগুলি জমা করি, তারপরে সমস্ত ফলাফল যুক্ত করুন:

5/d   # divide by 5, and leave a copy behind
d0<   # still greater than zero?
f+    # if so, apply f to the new value and add

পরীক্ষা প্রোগ্রাম

# read input values
?
# print prefix
[  # for each value
    # print prefix
    [> ]ndn[ ==> ]n
    # call f(n)
    lfx
    # print suffix
    n[  
]n
    # repeat for each value on stack
    z0<t
]
# define and run test function 't'
dstx

টেস্ট আউটপুট

./79762.dc <<<'1234567891011121314151617181920 2016 666 125 124 25 24 5 4 1'
1 ==> 0  
4 ==> 0  
5 ==> 1  
24 ==> 4  
25 ==> 6  
124 ==> 28  
125 ==> 31  
666 ==> 165  
2016 ==> 502  
1234567891011121314151617181920 ==> 308641972752780328537904295461  


1

জে, 28 17 16 বাইট

<.@+/@(%5^>:@i.)

এক্সনরের উত্তর থেকে পুনরাবৃত্তির কৌশল হিসাবে অনেকটা একই।


এখানে আমি রাখি একটি পুরানো সংস্করণ কারণ ব্যক্তিগতভাবে আমি এটি বেশি পছন্দ করি, ২৮ বাইটে আটকে থাকি:

+/@>@{:@(0<;._1@,'0'&=@":@!)

প্রয়োজন নেই, x:বর্ধিত নির্ভুলতার জন্য আমি পরীক্ষার কেসগুলিতে অন্তর্ভুক্ত করেছি ।

   tf0 =: +/@>@{:@(0<;._1@,'0'&=@":@!@x:)
   tf0 5
1
   tf0 100
24

   tf0g =: tf0"0
   tf0g 1 5 100 666 2016
0 1 24 165 502

শেষ সংখ্যাটি এই ফাংশনটির সাথে কাজ করে না।

ব্যাখ্যা

এটি গণনা করে n!, এটিকে একটি স্ট্রিতে রূপান্তর করে এবং প্রতিটি সদস্যের সাথে সমতার জন্য পরীক্ষা করে কাজ করে '0'। কারণ n = 15, এই প্রক্রিয়াটি হ'ল:

15
15! => 1307674368000
": 1307674368000 => '1307674368000'
'0' = '1307674368000' => 0 0 1 0 0 0 0 0 0 0 1 1 1

এখন, আমরা ;._1তালিকাটিকে তার প্রথম উপাদানটিতে (শূন্য) বিভক্ত করতে, প্রতিটি বিভক্ত ফলাফলের বক্সিং করে, এসিস ( a:) বা রানের ভরা একটি বাক্স সরবরাহ করি 1, যেমন:

┌┬─┬┬┬┬┬┬┬─────┐
││1│││││││1 1 1│
└┴─┴┴┴┴┴┴┴─────┘

আমরা সহজভাবে সর্বশেষ সদস্যটি ( {:) পেয়েছি, এটি আনবক্স করুন ( >) এবং তার উপরে একটি সংক্ষেপণ সম্পাদন করে শূন্যের সংখ্যা উপার্জন করি +/

এখানে আরও পাঠযোগ্য সংস্করণ:

split =: <;._1@,
tostr =: ":
is =: =
last =: {:
unbox =: >
sum =: +/
precision =: x:
n =: 15

NB. the function itself
tf0 =: sum unbox last 0 split '0' is tostr ! precision n
tf0 =: sum @ unbox @ last @ (0 split '0'&is @ tostr @ ! @ precision)
tf0 =: +/ @ > @ {: @ (0 <;._1@, '0'&= @ ": @ ! )

>:@i.1+i.একটি বাইট সংরক্ষণ করতে লেখা যেতে পারে ।
অ্যালগরিদমশর্ক

আপনার পুরানো সংস্করণটি [:#.~'0'=":@!13 বাইটের জন্য পিছনে থাকা 1 টি গণনা করার পদ্ধতিটি পরিবর্তন করে তৈরি করা যেতে পারে ।
কোলে



1

ফিরে , 17 বাইট

[$[5÷\%$F+][]?]=F

Try it here.

পুনরাবৃত্তি অপারেটর লাম্বদা। ব্যবহার:

[$[5÷\%$F+][]?]=F666F

ব্যাখ্যা

[             ]=F  Lambda -> Operator F
 $                 Check if top of stack is truthy
  [       ][]?     Conditional
   5÷\%$F+         If so, do x/5+F(x/5)

1

পার্ল, 24 22 + 1 ( -pপতাকা) = 23 বাইট

$\+=$_=$_/5|0while$_}{

ব্যবহার:

> echo 2016 | perl -pe '$\+=$_=$_/5|0while$_}{'

সম্পূর্ণ প্রোগ্রাম:

while (<>) {
# code above added by -p
    while ($_) {
        $\ += $_ = int($_ / 5);
    }
} {
# code below added by -p
    print;  # prints $_ (undef here) and $\
}

1

জাভা, 38 বাইট

int z(int n){return n>0?n/5+z(n/5):0;}

অসম্পূর্ণ পদ্ধতি সহ সম্পূর্ণ প্রোগ্রাম:

import java.util.Scanner;

public class Q79762{
    int zero_ungolfed(int number){
        if(number == 0){
            return 0;
        }
        return number/5 + zero_ungolfed(number/5);
    }
    int z(int n){return n>0?n/5+z(n/5):0;}
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        System.out.println(new Q79762().zero_ungolfed(n));
        System.out.println(new Q79762().z(n));
    }
}

1

জে, 7 বাইট

ডানদিকে যুক্তি নিয়ে Monadic ফাংশন।

3{:@q:!

যদি xইতিবাচক হয় তবে কেবল প্রথম প্রাইমের জন্য x q: yএক্সটেনারদেরকে একটি yপ্রাথমিক xগুণক হিসাবে প্রদান করে। 3-Rd মৌলিক 5 এবং {:তালিকার লেজ লাগে।

নোট করুন যে আপনাকে xশেষের সাথে একটি পূর্ণসংখ্যার ইনপুট করতে হবে, নাহলে জে এগুলিকে ফ্লোট হিসাবে বিবেচনা করবে।

   3{:@q:! 100x
24
   3{:@q:! 666x
165
   3{:@q:! 2016x
502

এটা নিজেকে এ চেষ্টা করুন tryj.tk , যদিও আপনাকে সতর্ক করে দেওয়া হয়েছে যে আপনি চেয়ে বড় কিছু করার চেষ্টা করলে এই অনলাইন অনুবাদক অভিযোগ করবেন।

আপনি যদি এমন কিছু চান যা এন গণনা করে না ! এবং তাই এটি কোনও পূর্ণসংখ্যার সাথে ফিট করার প্রয়োজন হয় না, পুনরাবৃত্তির সমাধানটি ব্যবহার করুন <.@%&5(+$:@)^:*। (tryj.tk এখনও বড় ইনপুটগুলিতে চটকদার is


1

রুবি, 70 61 51 49 বাইট

ভার্সন 3 কেনি লাউ এবং ড্যানিরোর সাথে ধন্যবাদ জানায়

->n{(n-n.to_s(5).chars.map(&:to_i).reduce(:+))/4}

সম্পাদনা: আপনি সক্রিয় আউট ম্যাপিং দুটি বাইট সংরক্ষণ করতে পারবেন to_i আগে আপনিreduce । অদ্ভুত: পি

এই ফাংশনটি n'এর বেস 5 অঙ্কের যোগফলকে বিয়োগ করে nএবং তারপরে 4 ফলাফলকে ভাগ করে দেয়। এটি জ্যামিতিক সিরিজের যোগফলের সাথে সম্পর্কিত 1+5+25+..+5**n = (5**n+1)/4

উদাহরণ হিসাবে (আবার, কেনি লউকে ধন্যবাদ দিয়ে), বিবেচনা করুন 358( 2413বেস 5 তে) বিয়োগটি এর বেস 5 সংখ্যার করুন।

2413-2-4-1-3 
= (2000-2) + (400-4) + (10-1) + (3-3)
# consider that 1000-1=444 and you'll see why every 5**n is multiplied by 4
= 2*444 + 4*44 + 1*4 + 3*0
= 2*(4*5**0+4*5**1+4*5**2) + 4*(4*5**0+4*5**1) + 1*(4*5**0) + 3*()
= 348

348দ্বারা ভাগ 4এবং আপনি পেতে f(358) = 87

সংস্করণ 2 কেনি লউকে ধন্যবাদ দিয়ে

->n{s=(1..n).reduce(:*).to_s;s.size-s.reverse.to_i.to_s.size}

এই ফাংশনটি গণনা n!তারপর subtracts sizeএর n!থেকে sizeএর (n!).reverse.to_i.to_sযা সব শূণ্যসমূহ সরিয়ে ফেলা হবে, এইভাবে, ফেরার sizeশূণ্যসমূহ নিজেদের।

সংস্করণ 1

->n{s=n.to_s(5).chars;(0...s.size).reduce{|a,b|a+(s[0,b]*'').to_i(5)}}

এটির 5মূল গুণককরণের মধ্যে "কতগুলি রয়েছে তার এটি তারতম্যn! ?" কৌশল যে রুবির সাধারণ বেস রূপান্তর অন্তর্নির্মিত ব্যবহার করে।

Golfing থেকে রূপান্তর সঙ্গে, যদিও ব্যাথা একটি বিট Integerকরতে Stringকরতে Array, অংশ দখল Arrayএবং যে রূপান্তর Stringকরার Integerজন্য আবার reduce। কোনও গল্ফিং পরামর্শ স্বাগত are


এটি to_iহ্রাস করার আগে মানচিত্রের চেয়ে খানিকটা খাটো : ->n{(n-n.to_s(5).chars.map(&:to_i).reduce(:+))/4}(দুটি বাইট সাশ্রয় করে)
ড্যানিয়েরো

পছন্দ করুন ধন্যবাদ: ডি
শার্লক


1

ডায়ালগ এপিএল , 9 বাইট

⊥⍨'0'=⍕!⎕

সংখ্যার জন্য প্রম্পট

! factorialize

stringify

'0'= অক্ষর শূন্যে সমতা পরীক্ষা করুন

⊥⍨ ট্রেলিং ট্রু গণনা করুন *


আক্ষরিক অর্থে এটি বেস -10 রূপান্তরকে একটি মিশ্র-বেস, বুলিয়ান তালিকাটি সংখ্যা এবং বেস উভয় হিসাবে ব্যবহার করে:

⊥⍨0 1 0 1 1হিসাবে একই 0 1 0 1 1⊥⍨0 1 0 1 1যা 0×(0×1×0×1×1) 1×(1×0×1×1) 0×(0×1×1) 1×(1×1) + 1×(1)যা আবার দুটি (trailing 1s সংখ্যা) হয়।

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