এন এ একটি নোট!


32

জে ম্যাক্সফিল্ড উপপাদনের পরে প্রমাণিত হয়েছে (দেখুন ডিওআই: 10.2307 / 2688966 ):

যদি এর কোনও অঙ্কের ধনাত্মক পূর্ণসংখ্যা থাকে, তবে ইতিবাচক পূর্ণসংখ্যা N এর উপস্থিত থাকে যেমন এন এর প্রথম মিটার সংখ্যা ! পূর্ণসংখ্যা গঠন একটিAmNmN!A

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি কিছু A1 দেওয়া হয়েছে একটি অনুরূপ N1

বিস্তারিত

  • N!বর্ণনামূলকN!=123N প্রতিনিধিত্ব ! = 1 \ সিডট 2 \ সিডট 3 \ সিডট \ এলডটস N সিডট এন এরN
  • আমাদের ক্ষেত্রে A এর অঙ্কগুলি বেস 10 বোঝা যাচ্ছে ।
  • আপনার জমা দেওয়ার জন্য যথেষ্ট সময় এবং মেমরি দেওয়া নির্বিচারে A1 জন্য কাজ করা উচিত । কেবলমাত্র পূর্ণসংখ্যার প্রতিনিধিত্ব করতে 32-বিট প্রকারের ব্যবহার যথেষ্ট নয়।
  • আপনার অগত্যা কমপক্ষে সম্ভব N আউটপুট করার দরকার নেই ।

উদাহরণ

A            N
1            1
2            2
3            9
4            8
5            7
6            3
7            6
9           96
12           5
16          89
17          69
18          76
19          63
24           4
72           6
841      12745
206591378  314

প্রতিটি এ এর জন্য সর্বনিম্ন সম্ভব N https://oeis.org/A076219 এ পাওয়া যাবেA


26
আমি ... কেন তিনি এই উপপাদ্য প্রমাণ করলেন? তিনি কি কেবল একদিন ঘুম থেকে উঠে বললেন "আমি এটি সমাধান করব!" বা এটি একটি উদ্দেশ্য কাজ করে?
ম্যাজিক অক্টোপাস উরন

11
@ ম্যাজিক অ্যাক্টোপাস ইউরন এর আগে কখনও কখনও কোনও সংখ্যা তাত্ত্বিক নিয়ে আলোচনা করেন নি, তাই না?
ব্র্যাডি গিলগ

2
এখানে যে কেউ আগ্রহী তার প্রমাণ এখানে
এশোলং ফল

উত্তর:


14

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

f=lambda a,n=2,p=1:(`p`.find(a)and f(a,n+1,p*n))+1

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

এটি নীচে ব্যাখ্যা করা 47-বাইট সমাধানের একটি প্রকরণ, ইনপুটটির জন্য ফিরে আসার 1জন্য সামঞ্জস্য '1'। (যথা, আমরা 1পুনরাবৃত্ত কলের পরিবর্তে সম্পূর্ণ অভিব্যক্তি যুক্ত করি n==2এবং সমস্ত অ- '1'ইনপুটগুলির জন্য ফলাফলকে ভারসাম্য বজায় রেখে গভীরতার এক স্তরকে সরাতে গণনা শুরু করি ))

পাইথন 2 , 45 বাইট (মানচিত্র 1 থেকে True)

f=lambda a,n=2,p=1:`-a`in`-p`or-~f(a,n+1,p*n)

@ জো কিং এবং @ এক্সনর দ্বারা এটি অন্য একটি পরিবর্তন, যা একটি সংখ্যা হিসাবে ইনপুট নেয় এবং ইনপুটটির Trueজন্য ফিরে আসে 1কিছু লোক মনে করে এটি সুষ্ঠু খেলা, তবে আমি ব্যক্তিগতভাবে এটিকে কিছুটা অদ্ভুত বলে মনে করি।

তবে আইকি বুলিয়ান ফলাফলটি গুটিয়ে নিতে কেবল 3 টি বাইট খরচ হয় +(), এটি আমাদের একটি সংক্ষিপ্ত "সুন্দর" সমাধান দেয়:

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

f=lambda a,n=2,p=1:+(`-a`in`-p`)or-~f(a,n+1,p*n)

এটি আমার পূর্ববর্তী সমাধান, যা ইনপুটটির 0জন্য ফেরত দেয় '1'। এটি বৈধ হত যদি প্রশ্নটি অ-নেতিবাচক সম্পর্কিত করেN

পাইথন 2 , 47 বাইট (অবৈধ)

f=lambda a,n=1,p=1:`p`.find(a)and-~f(a,n+1,p*n)

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

যেমন ইনপুট হিসাবে একটি স্ট্রিং লাগে f('18')

এখানে কৌতুকটি হুবহু x.find(y) == 0যখন x.startswith(y)

and-Expression স্বেচ্ছায় শর্ট সার্কিট `p`.find(a)ফলাফল নিয়ে 0যত তাড়াতাড়ি `p`দিয়ে শুরু হয় a; অন্যথায়, এটি মূল্যায়ন করবে -~f(a,n+1,p*n), আইডি এস্ট 1 + f(a,n+1,p*n)

শেষ ফলাফলটি 1 + (1 + (1 + (... + 0))), nস্তরগুলি গভীর, তাই n


উপায় দ্বারা দুর্দান্ত সমাধান। আমি একই পদ্ধতিতে কাজ করছিলাম তবে প্রতিটি পুনরাবৃত্তিতে ফ্যাক্টরিয়াল গণনা করছি; আপনার পদ্ধতির বাস্তবায়ন আমাকে +1যাইহোক কয়েকটা বাইট সংরক্ষণ করেছে ।
শেগি

1
আপনার ট্রু-ফর -১ সংস্করণের জন্য, আপনি সংখ্যা হিসাবে নেওয়া বেস কেস শর্তটি সংক্ষিপ্ত করতে পারেন a
xnor

@xnor আমি `চিন্তা না হতো -aমধ্যে -p,` `একটি ঝরঝরে কৌতুক যে :)
লিন

যদি প্রমাণটি এখনও ধরে রাখে যদি এন এমনকি মানগুলিতে সীমাবদ্ধ থাকে তবে এই 45 বাইট সমাধানটি সর্বদা একটি সংখ্যা আউটপুট করে।
নেতিবাচক সাত

9

ব্র্যাচল্যাগ , 3 5 বাইট

ℕ₁ḟa₀

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

এর আউটপুট ভেরিয়েবলের মাধ্যমে ইনপুট নেয় এবং তার ইনপুট ভেরিয়েবলের মাধ্যমে আউটপুট দেয়। (অন্যদিকে, এটি কেবল ইনপুটটির ফ্যাক্টরিয়ালের স্বেচ্ছাসেবী উপসর্গগুলি সন্ধান করে যা মোটামুটি আকর্ষণীয় নয়)) টিআইও-তে দ্বিতীয় থেকে শেষ পরীক্ষার ক্ষেত্রে টাইমস বেরিয়েছে, তবে শেষটি জরিমানা করেছে । এটি লেখার সময় আমি আমার ল্যাপটপে এটি বেশ কয়েক মিনিটের জন্য 1৪১-এ চালিয়ে যাচ্ছি এবং এটি এখনও কোনও উত্তর বের করতে পারে নি, তবে এতে আমার বিশ্বাস আছে।

         The (implicit) output variable
   a₀    is a prefix of
  ḟ      the factorial of
         the (implicit) input variable
ℕ₁       which is a positive integer.

যেহেতু একমাত্র ইনপুটটি ḟa₀1 এর জন্য কাজ করে না এবং 1 এটি 1 এর ইতিবাচক উপসর্গ! = 1, 1|ḟa₀ঠিক পাশাপাশি কাজ করে।

এছাড়াও, এই সম্পাদনা হিসাবে, 841 প্রায় তিন ঘন্টা ধরে চলছে এবং এটি এখনও আউটপুট উত্পাদন করতে পারে নি। আমি অনুমান করি যে 1 থেকে 12745 পর্যন্ত প্রতিটি পূর্ণসংখ্যার ফ্যাক্টরিয়াল গণনা করা ঠিক দ্রুত নয়।


2
ব্র্যাচ্ল্যাজে ফ্যাক্টরিয়াল প্রিডিকেটের বাস্তবায়নটি কিছুটা বিশৃঙ্খলাযুক্ত যাতে এটি গ্রহণযোগ্য দক্ষতার সাথে উভয় উপায়ে ব্যবহার করা যায়। ফ্যাকটোরিয়াল গণনা করার জন্য কেউ একটি খুব দ্রুত অ্যালগরিদম বাস্তবায়ন করতে পারে তবে এটি অন্যভাবে চালানো খুব ধীর হবে (অর্থাত্‍ ঘটনাচক্রে আসল সংখ্যাটি সন্ধান করা)।
ফ্যাটালাইজ করুন

ওহ ঠান্ডা! এর উত্সটির দিকে তাকিয়ে, এটি যা করছে তা আমি বলতে পারি না তবে আমি আপনাকে এটিতে খুব ভাল চিন্তাভাবনা করার কথা বলতে পারি।
অপ্রকাশিত স্ট্রিং

7

সি ++ (জিসিসি) , 107 95 বাইট, ব্যবহার -lgmpএবং-lgmpxx

কিছু নির্বোধ দুর্ঘটনাগুলি নির্দেশ করার জন্য মন্তব্যে থাকা লোকদের ধন্যবাদ।

#import<gmpxx.h>
auto f(auto A){mpz_class n,x=1,z;for(;z!=A;)for(z=x*=++n;z>A;z/=10);return n;}

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

গণনাগুণ করে দ্বারা , তারপরে বারবার এটি দ্বারা ভাগ করে যতক্ষণ না এটি পাস করা পূর্ণসংখ্যার চেয়ে বেশি হয় না। এই মুহুর্তে, ফ্যাক্টরিয়ালটি যদি পাস করা পূর্ণসংখ্যার সমান হয় বা অন্যথায় পরবর্তী দিকে এগিয়ে যায় তবে লুপটি সমাপ্ত হবে।n!(n1)!n10n


আপনি প্রয়োজন হবে না তাই এই হল, আর পতাকা গণনা 107বাইট।
অ্যাডমবর্কবার্ক

আপনার আগে দ্বিতীয় সেমিকোলনটি কেন দরকার return?
রুসলান

আপনি ফাংশনটির জন্য একক অক্ষরের নাম ব্যবহার করতে পারেন, কয়েক বাইট সংরক্ষণ করতে পারেন।
শেগি


6

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

∞.Δ!IÅ?

এটি অনলাইনে চেষ্টা করুন বা সর্বাধিক পরীক্ষা করুন - সমস্ত পরীক্ষার কেস ( 841সময় পেরিয়ে গেছে, তাই বাদ দেওয়া হয়েছে)।

ব্যাখ্যা:

∞.Δ      # Find the first positive integer which is truthy for:
   !     #  Get the factorial of the current integer
    IÅ?  #  And check if it starts with the input
         # (after which the result is output implicitly)


2

জাভাস্ক্রিপ্ট, 47 43 বাইট

একটি বিগিয়ান্ট হিসাবে আউটপুট।

n=>(g=x=>`${x}`.search(n)?g(x*++i):i)(i=1n)

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

লিনের প্রতিটি পুনরাবৃত্তির উপর ভিত্তি করে ফ্যাক্টরিয়ালটি তৈরির চেয়ে "বিল্ডিং" করার পদ্ধতির সাহায্যে কয়েকটি বাইট সংরক্ষণ করেছেন তাই দয়া করে আপনি তার সমাধানটি উত্সাহিত করুন তবে আপনি যদি এটিকে উত্সাহ দিয়ে যাচ্ছেন তবে।


দুঃখিতভাবে, _Ês bU}f1মধ্যে Japt কাজ করে না
অজ্ঞতা প্রতিমূর্তি

অ্যাম্বোডিমেন্টফ অজ্ঞতা, হ্যাঁ, আমারও তা ছিল। আপনি পরে স্থান সরাতে পারে s
শেগি

অ্যাম্বোডিমেন্টফ অজানা, আপনি 1যদি 0ফিরিয়ে দিতে পারেন তবে তাও সরিয়ে ফেলতে পারেন n=1
শেগি

3 বাইট কম:x=i=1n;f=n=>`${x*=++i}`.search(n)?f(n):i
ভ্রোগেহেগেল

@ ভ্রুতেহেগেল, এটি পুনরায় ব্যবহারযোগ্য হবে না।
শেগি

2

সি # (.নেট কোর) , 69 + 22 = 91 বাইট

a=>{var n=a/a;for(var b=n;!(b+"").StartsWith(a+"");b*=++n);return n;}

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

System.Numerics.BigIntegerএকটি usingবিবৃতি প্রয়োজন যা ব্যবহার করে ।

-১ বায়োডকে @ এক্সপায়ার্ডডাটা ধন্যবাদ!





1

কাঠকয়লা , 16 বাইট

⊞υ¹W⌕IΠυθ⊞υLυI⊟υ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

⊞υ¹

পুশ 1খালি লিস্টে যাতে এটি একটি নির্ধারিত পণ্যের সাথে বন্ধ শুরু হয়।

W⌕IΠυθ

তালিকার পণ্যের শুরুতে যখন ইনপুটটি পাওয়া যায় না তখন পুনরাবৃত্তি করুন ...

⊞υLυ

... তালিকার দৈর্ঘ্যটি নিজের দিকে চাপ দিন।

I⊟υ

তালিকায় ধাক্কা দেওয়া শেষ মানটি মুদ্রণ করুন।



1

জে , 28 22 বাইট

-6 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য

(]+1-0{(E.&":!))^:_&1x

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

আসল উত্তর জে , 28 বাইট

>:@]^:(-.@{.@E.&":!)^:_ x:@1

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

  • >:@] ... x:@1একটি বর্ধিত নির্ভুলতা দিয়ে শুরু করে 1, এটি বাড়িয়ে রাখার সময় ...
  • -.@ এটা কেস না ...
  • {.@ প্রথম এলমের একটি শুরু ম্যাচ ...
  • E.&":&":মূল ইনপুটটি অনুসন্ধান করার জন্য সমস্ত স্ট্রেরিং ম্যাচ (উভয় যুক্তি স্ট্রিংফাইয়ের পরে ) ...
  • ! আমরা ক্রমবর্ধমান সংখ্যার ফ্যাকটোরিয়াল

(]+1-0{(E.&":!))^:_&1x
ফ্রাউনফ্রোগ

আমি গতানুগতিক সময় এড়াতে "স্থির বিন্দু" ব্যবহার পছন্দ করি।
জোনাহ


1

পাইথন 3 , 63 বাইট

f=lambda x,a=2,b=1:str(b).find(str(x))==0and a-1or f(x,a+1,b*a)

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

-২৪ বাইট জো কিংকে ধন্যবাদ জানায়

চেস ব্রাউন -3 বাইট ধন্যবাদ


@ জোকিং দুর্দান্ত, ধন্যবাদ
হাইপারনিউট্রিনো


@ চাসব্রাউন ধন্যবাদ
হাইপার নিউট্রিনো

আমি মনে করি f=যে আপনি শিরোলেখ পেয়েছেন তা আপনার বিট কাউন্টের দিকে গণনা করা উচিত।
mypetlion

আপনি @ ঠিক আছে; এটি ধরার জন্য ধন্যবাদ
হাইপার নিউট্রিনো






0

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

import Data.List
a x=head$filter(isPrefixOf$show x)$((show.product.(\x->[1..x]))<$>[1..])

যদি কেউ প্রয়োজনীয় আমদানি বাইপাস করতে জানেন তবে আমাকে জানান।


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