In৪ বাইট বা তার চেয়ে কম দশমিক স্থানে খিচিনের ধ্রুবক


22

Khinchin ধ্রুবক একটি অদ্ভুত গাণিতিক ধ্রুবক যে, উল্ফর্যাম MathWold অনুযায়ী হয় "গণনা করতে কুখ্যাতিপূর্ণভাবে কঠিন উচ্চ স্পষ্টতা থেকে"

এখানে এটি 100 সংখ্যায়:

2,685452001065306445309714835481795693820382293994462953051152345557218859537152002801141174931847697 ...

একটি প্রোগ্রাম লিখতে 64 বাইট বা তার কম যে সঠিক দশমিক স্থান সর্বাধিক সংখ্যক Khinchin ধ্রুবক আউটপুট।

  • আপনি খিচিনের ধ্রুবক সম্পর্কিত সরাসরি কোনও লাইব্রেরি ধ্রুবক বা ফাংশন ব্যবহার করতে পারবেন না। (যেমন ম্যাথ.খিনচিন (যথার্থ) অবশ্যই অনুমোদিত নয়।)
  • আপনি গণিতের গ্রন্থাগারগুলি লগারিদম, সংক্ষেপণ ইত্যাদি গণনা করতে ব্যবহার করতে পারেন
  • আপনি নিজের উত্তরটির সমস্ত বা অংশ হার্ডকোড করতে পারেন
  • আপনার প্রোগ্রামটি অবশ্যই সীমাবদ্ধ আউটপুট উত্পাদন করবে এবং একটি যুক্তিসঙ্গত আধুনিক কম্পিউটারে (যেমন এখানে তালিকাভুক্ত হিসাবে ) এক ঘণ্টারও কম সময় চলবে ।
  • আপনি stdout আউটপুট করা আবশ্যক। কোনও ইনপুট নেই।
  • আপনি চাইলে যে কোনও অক্ষর ব্যবহার করতে পারেন যতক্ষণ না http://mothereff.in/byte-counter 64 বাইট বা তার চেয়ে কম রেজিস্ট্রেশন করে।

স্কোরিং

আপনার স্কোরটি খিঁচিনের ধ্রুবক আপনার প্রোগ্রামের আউটপুটগুলিতে যথাযথ ২.68৮ দিয়ে শুরু হওয়াতে ধারাবাহিক অঙ্কের সংখ্যা ... আপনি ভুল অঙ্কগুলি আউটপুট করতে পারেন তবে কেবলমাত্র শেষের সঠিক সংখ্যাটি আপনার স্কোরের জন্য গণনা করা হয়।

উদাহরণস্বরূপ, এর আউটপুট

2.68545200 2 06530644530971483548179569382038229399446295305115234555721

9 পয়েন্ট স্কোর হবে। প্রতিটি ডিজিটের জন্য একটি 2 6 8 5 4 5 2 0 0তবে 2 এর পরে কিছুই নয় যা 1 হওয়া উচিত।


2
আপনি কেন পুরো উত্তরটিকে হার্ডকোডিংয়ের অনুমতি দিচ্ছেন?
উইলিয়াম বার্বোসা

5
@ উইলিয়াম বারবোসা কেন? আদর্শভাবে এমন একটি সমাধান হওয়া উচিত যা 31 এর চেয়ে ভাল স্কোর করে। যদি না হয় তবে ভাল এটি দুর্ভাগ্য।
মার্টিন এন্ডার

1
ইউনিকোড অনুমোদিত? কিভাবে এটি গণনা?
অদিতসু

3
আপনাকে 32-র পরিবর্তে 64 বি অনুমতি দেওয়া উচিত এবং সমস্ত অক্ষরটি ইউটিএফ -8 বাইট ( মোটেরেফ.ইন / বাইট- কাউন্টার ) হিসাবে গণনা করা উচিত (ইউনিকোড প্লেনের উপর নির্ভর করে প্রতি চার্চে = 1 থেকে 4 বাইট)। এছাড়াও, বিদ্যমান সমাধান সহজেই 64b অভিযোজিত হতে পারে
xem

3
@ পিটারটেলর আমি একটি সিজেএম ভাসমান-পয়েন্ট সমাধানকে কোড করেছিলাম, এবং আমি আপনাকে বলি, সীমিত নির্ভুলতা মূল সমস্যা নয়: পি
অ্যাডিটসু

উত্তর:


11

ম্যাপেল, 200+

নিম্নলিখিত ম্যাপেল কমান্ড খিনচিনের ধ্রুবককে অনুরোধ করা নির্ভুলতার সাথে গণনা করে (এখানে, 200 সংখ্যা):

evalf[200](exp(sum((-1)^k*(2-2^k)*ζ(1,k)/k,k=2..∞)/ln(2)));

আপনি এই কোডটি ম্যাপেল গ্রাফিকাল ইন্টারফেসে অনুলিপি করে দিলে এই কোডটি কাজ করা উচিত। ζহল UTF-8 দুটি বাইট, এবং সময় লাগে 62 বাইট মোট তিনটি।

Those চিহ্নগুলির ASCII সংস্করণগুলি লেখার পরেও min()পরিবর্তে ব্যবহারের কৌশলটি infinityহ'ল হায়, বাইট গণনাটি 66 পর্যন্ত পৌঁছেছে:

evalf[200](exp(sum((-1)^k*(2-2^k)*Zeta(1,k)/k,k=2..min())/ln(2)));

বর্গাকার বন্ধনীতে সংখ্যা পরিবর্তন করে সহজেই সংখ্যার অঙ্কের সংখ্যা সমন্বয় করা যেতে পারে evalf। আমার বরং পুরানো কম্পিউটারে, 200 অঙ্কগুলি প্রায় অর্ধ ঘন্টার মধ্যে শেষ হতে পারে বলে মনে হয়; আপনার আরও সক্ষম হতে পারে। লক্ষ্য করুন ম্যাপেল চক্রের পরিবর্তে অনুরোধ স্পষ্টতা কাছে ফলাফলের এটা ছিন্ন, তাই ম্যাচিং ডিজিটের প্রকৃত সংখ্যা কিছুটা কম হতে পারে।

ধ্রুবক গণনা করার এই পদ্ধতিটি ম্যাথওয়ার্ড পৃষ্ঠা থেকে সূত্র (9) এর উপর ভিত্তি করে সেখানে গস্পারে উদ্ধৃত হয়েছে (১৯৯ pers, পার্স। কম।):

            সমীকরণ

এটি ছিল সবচেয়ে কার্যকর পদ্ধতি যা আমি পরিচালনা করেছিলাম (সবে) 64 বাইট বা তারও কমের মধ্যে ডুবতে।


বেশ ঝরঝরে. যদি কেবল আমার কাছে ম্যাপল থাকে: /
ক্যালভিনের

12

সিজেম - 118

2'."*;TeT?_aN{.i9B*ZEay
G`9~eW}nE=Lr-`B}    )D>9m9"136b

এটি http://cjam.aditsu.net/ এ চেষ্টা করুন

যেহেতু স্ট্যাকেক্সচেঞ্জ কিছু অক্ষর ধ্বংস করে, তাই এখানে একটি প্রোগ্রাম যা উপরে প্রোগ্রাম উত্পন্ন করে; প্রথমে এটি চালান, তারপরে আউটপুটটি চালান:

"2'.\""685452001065306445309714835481795693820382293994462953051152345557218859537152002801141174931847697995153465905288090 136b:c"\"136b"

ব্যাখ্যা:

22 টি
'.পুশ করে বিন্দুটি
"…"এমন একটি স্ট্রিং যা বাকী অঙ্কগুলি এনকোডযুক্ত আকারে
128bস্ট্রিংটিকে একটি সংখ্যায় রূপান্তরিত করে, বেস 128 (তাদের ASCII কোডের মাধ্যমে) অক্ষর হিসাবে অঙ্কগুলি হিসাবে আচরণ করে


2
খুব সুন্দর. আপনি কিছুটা ব্যাখ্যা করতে পারেন?
কাইল কানোজ

@KyleKanos ব্যাখ্যা যোগ
aditsu

সেটা খুবই ভালো. আমার একদিন সিজেএম শেখা উচিত ... এছাড়াও, আমি আপনার অনলাইন দোভাষীকে অপেরা ওয়েব ব্রাউজারে কাজ করতে পারি না, যদিও এটি আমার ফায়ারফক্সে কাজ করে। সম্ভবত একটি অপেরা-ইস্যু, তবে ভেবেছিলাম আমি এটি উল্লেখ করব।
কাইল কানোজ

1
@ ক্যালভিনের শখগুলি 1997 সালে জাভিয়ার গর্ডন সর্বাধিক 250MHz প্রসেসর ব্যবহার করে 22 ঘন্টা মধ্যে প্রথম 110,000 অঙ্কগুলি গণনা করেছিলেন। সুতরাং আপনি এক ঘণ্টার মধ্যে এই সমাধানের চেয়ে 1000 গুণ হিসাবে বহুগুণ গণনা করতে সক্ষম হতে পারেন। web.archive.org/web/20120218093629/http://pi.lacim.uqam.ca/…
অ্যালেক্স এল

1
@ ক্যালভিনের শখগুলি একটি সম্পূর্ণ প্রোগ্রামের জন্য এই লিঙ্কটি দেখেছে যা 7 সেকেন্ডে 2000 অঙ্কের গণনা করেছে।
অদিতসু

5

কোনা 63

সাধারণ হার্ড-কোডেড উত্তর:

2.68545200106530644530971483548179569382038229399446295305115234

মিমি এটা 63 না?
xem

@ এক্সেম: ছোট টাইপোগ্রাফিক ত্রুটি। সংশোধন করা হয়েছে। : ডি
কাইল কানোজ


@ ডিজিটালট্রামা: সম্ভবত বেশ কয়েকটি অন্যান্য ভাষায়ও কাজ করে, আমি ঠিক কোনার সাথে আটকেছি কারণ এর আগে আমি এর উত্তর দিয়েছি।
কাইল কানোজ

5

হাস্কেল, ৫

ঠিক আছে, যেহেতু কেউ বাস্তব সমাধান গণিত ব্যবহার করে সমাধান পোস্ট করেনি, তাই আমি সিদ্ধান্ত নিয়েছিলাম যে এটি অন্য উত্তরগুলির মতো কাছাকাছি কোথাও নেই।

main=print$product[(1+1/r/(r+2))**2`logBase`r|r<-[1..99999999]]

এই গণনাগুলি 2.6854453689859192, যা ধ্রুবকের 5 টি সম্পূর্ণ অক্ষর। ওল্ফ্রাম ঠিক তখনই বলেছিলেন যখন "উচ্চ নির্ভুলতার গণনা করা কঠিন"।


63 বাইট প্রোগ্রাম - 1 বাইট ছাড়াই! নিস!
ডিজিটাল ট্রমা

অতিরিক্ত বাইট অন্যটি হতে পারে 9, তবে আমার কম্পিউটার সেটিকে পরিচালনা করতে পারে না এবং এমনকি যদি এটি করতে পারে তবে আমি নিশ্চিত নই যে এটির ফলে আরও একটি সঠিক অঙ্ক হবে কিনা।
Zaq

রুবি ব্যবহার করে, আমি মূলত এই সূত্রটি ব্যবহার করে সর্বোচ্চ 60 টি সেকেন্ডের মধ্যে চালিয়েছি hit আমি পেয়েছি 2.685451312659854: tio.run/##KypNqvz/P9vWkEvDUE/…
কেবল সুন্দর আর্ট

3

গণিত, 6

(Times@@Rest@ContinuedFraction[Pi,977])^(1.`9/976)

দেয়

2.68545843

এবং শুধুমাত্র 50 বাইট ব্যবহার করে, তাই আরও বেশি Piঅবিরত ভগ্নাংশের চেয়ে আরও ভাল কিছু আবিষ্কার করার এবং ব্যবহার করার জন্য কিছু জায়গা রয়েছে তবে আমি নিশ্চিত নই যে এটি এক ঘন্টা রানটাইম দিয়ে আরও অনেক ভাল পাবে। (বিশেষ করে যেহেতু খোঁজার যদি আমি শুধু পাশব বল ব্যবহার করছি আরো ভালো সমন্বয় সম্ভবত কয়েক দিন সময় লাগতে হবে।)

(অবশ্যই, আপনি অস্বীকার করার পক্ষে যথেষ্ট চালাক ছিলেন Khinchin~N~2000, যেখানে 2000এমন কোনও সংখ্যার সাথে প্রতিস্থাপন করা যেতে পারে যা আপনাকে এক ঘন্টার মধ্যে ফলাফল দেয়;)।)


1
ধ্রুবকের অর্থ ব্যবহারের জন্য +1, কেবল একটি সূত্র নয়।
vi।

2

wxMaxima 3

আসলে একটি গণিত পদ্ধতি!

bfloat(product((1+1/(n*(n+2)))^(log(n)/log(2)),n,1,10000));

প্রায় 25 মিনিটের পরে, এটি ফিরে আসল

2.681499686663101b0

এখন আমি বুঝতে পেরেছি কেন গণিতের পৃষ্ঠাটি এটি জানিয়েছিল। আমার সাথে খেলতে পারা 6 টি অক্ষর রয়েছে তবে আমি 6 0 এর যোগ (imagine 60 মিনিট) চালাতে চাইছি এবং (খ) আমাকে আরও সঠিক সমাধান দেবে imagine


সন্দেহ: প্রতিটি অতিরিক্ত শূন্য একের চেয়ে কম সঠিক সংখ্যা যোগ করে: '(
কেবল সুন্দর আর্ট

1

জিএনইউ বিসি , ৫ ডিজিট (৫৪ বাইট প্রোগ্রাম)

আসলে গণনা করার চেষ্টা। জিএনইউ বিসি ভয়ঙ্করভাবে ধীর। এটি 53 মিনিটের জন্য একটি উবুন্টু 14.04 ভিএম-তে 2012-এর মাঝামাঝি ম্যাকবুক প্রো রেটিনাতে চলছে। আশ্চর্যজনকভাবে এটি ওএসএক্স বেয়ার মেটালের চেয়ে ভিএম-তে দ্রুত চলে - সম্ভবত জিএনইউ সংস্করণটি বিএসডি সংস্করণের চেয়ে এই কাজের জন্য আরও ভালভাবে অনুকূলিত হয়েছে।

for(k=r=1;r++<10^7;)k*=e(l(1/(r*(r+2))+1)*l(r)/l(2))
k

আউটপুট:

2.68544536902156538295

বিঃদ্রঃ:

bc -lএর জন্য e()এবং l()ফাংশনগুলি (এবং স্কেল = 20 নির্ধারণ) ব্যবহার করা দরকার।


1

সিজেএম ভাসমান পয়েন্ট গণনা - 6

1e8{I{1.II2+*/)I2mL#*}1.?}fI

এটি আসল 32 বাইটে ফিট করে :)

জাভা 8 ব্যবহার করে জাভা দোভাষী দিয়ে দৌড়ানো, এটি আমার ল্যাপটপে প্রায় এক মিনিট পরে এটিকে আউটপুট দেয়:

2.6854513126595827

অনলাইন অনুবাদক সম্ভবত খুব দীর্ঘ সময় নিতে হবে।


1

পাইথন, 64 66

print"2.%i"%int('anljsgqif7gwwwsrntcz7zv2obv6gv5us7fzfwjcaj',36)

আউটপুট:

2.68545200106530644530971483548179569382038229399446295305115234555

আপনি printঅন্য একটি চরিত্রের মধ্যে চাপ দেওয়ার পরে স্থানটি কেটে ফেলতে পারেন ।
xnor

1

রুবি - 73

দুর্ভাগ্যক্রমে, আপনি কেবল to_iরুবি ব্যবহার করে 36 বেসে রূপান্তর করতে পারেন :

"2.#{"hmegxpkvliy1vaw4lb054ep8wsqwkz2yx9cm9jvc9yfd48j".to_i 36}"

যা ফিরে আসে

"2.6854520010653064453097148354817956938203822939944629530511523455572188595"

1

আরপিএল / 2, 7 গণিত অঙ্ক, 61 বাইট

'LN(FLOOR(1/X))/(X+1)/LN(2)' { 'X' 1e-9 1 } 1e-7 INT DROP EXP

আমার পুরানো (ইন্টেল কোর 2) ল্যাপটপে এক মিনিটে 2.68545210493822 ফিরিয়ে দেয়।

যতদূর আমি জানি আরপিএল / 2 তে কোনও জিটা ফাংশন নেই, এ কারণেই আমি ইন্টিগ্রেশনটি ব্যবহার করেছি (ম্যাথওয়ার্ল্ড পৃষ্ঠা থেকে সূত্র 15)। নীতিগতভাবে 1e-9 এবং 1e-7 ছোট সংখ্যায় প্রতিস্থাপনের দ্বারা নির্ভুলতার উন্নতি করা যেতে পারে তবে আমি স্পষ্টতই এর জন্য স্মৃতিশক্তি অভাবী ছিলাম।

অবশ্যই অসীম পণ্যটির অবলম্বন এই পয়েন্টটি সমাধান করুন, দেখে মনে হচ্ছে এটি

1 1 1e9 FOR I 1 1 I dup 2 + * / + I LN 2 LN / ^ * NEXT

এবং এইচপি আরপিএল ক্যালকের মতো কাজ করবে তবে এটি দুটি ক্রমের ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে বেড়েছে (ল্যাপটপে, আমার এইচপিতে চেষ্টা করে নি!), এবং কেবল digit ডিজিট দেয়।

সুতরাং আরপিএল / 2 এ সংহতকরণ অ্যালগরিদম আসলে বেশ ভাল কাজ করে।


0

অনেক repl languages, 61

দুঃখিত, এর থেকে ভাল সমাধান খুঁজে পেল না।

"2.685452001065306445309714835481795693820382293994462953051152"

নিয়মগুলি বলে না যে সঠিক সংখ্যা ক্রমটি উদ্ধৃতিগুলির আগে হওয়া যাবে না, তাই আমি এটি ব্যবহার করছি। উদাহরণস্বরূপ কোনও জেএস কনসোলে এটি সম্পাদন করে আপনি কোটগুলি সহ একই স্ট্রিংটি পাবেন।


1
হ্যাঁ, সামনে একটি উদ্ধৃতি সহ এই বৈধ। এটি কেবল গুরুত্বপূর্ণ যে 2.685 ... নিরবচ্ছিন্ন।
ক্যালভিনের শখ 20

0

পাইথন (5)

x=3**.1
p=1
for _ in[1]*10**6:p*=(x//1)**1e-6;x=1/(x%1)
print(p)

Output: 2.6854396408091694

(আউটপুট নিতে ~ 2 সেকেন্ড সময় লাগে))

অন্যান্য গণিতের সমাধানগুলির সাথে সংহতি জানাতে, আমি আরও খারাপ রূপান্তরকারীকে দেব যা প্রথম মিলিয়ন অব্যাহত ভগ্নাংশ সহগের একক স্বেচ্ছাচারী-ইশ অযৌক্তিক সংখ্যার জ্যামিতিক গড় গণনা করে যা কোনও ধরণের কাজ নয় বলে পরিচিত। প্রকৃতপক্ষে, আমি একটি অতিরিক্ত অঙ্কের সাথে মিলে যায় এমন একটি না পাওয়া পর্যন্ত আমি কয়েকটি চেষ্টা করে সেই নম্বরটি কারচুপ করেছিলাম।

মজার বিষয়: আমি আমার কম্পিউটারটি হিমশীতল করেছিলাম এবং এই কোডটি প্রতিস্থাপনের পাইথন গল্ফ ট্রিক দিয়ে এই কোডটি ছোট করার চেষ্টা করার পরে একটি শক্ত শাটডাউন করতে for _ in[1]*10**6:codeহয়েছিল exec("code"*10**6)


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