স্কোয়ার রুটগুলির অঙ্ক-ভিত্তিক যোগফলের অবিরত ভগ্নাংশ


10

ভূমিকা

আপনার কাজটি হ'ল বর্গমূলের 3 এবং বর্গমূলের 3 এর বর্গমূলের অবিচ্ছিন্ন ভগ্নাংশের উপস্থাপনায় প্রথম 1000 পদ তৈরি করা।

অন্য কথায়, নিম্নলিখিত তালিকাটি তৈরি করুন (তবে আউটপুট ফর্ম্যাটটি নমনীয়)

[2, 6, 1, 5, 7, 2, 4, 4, 1, 11, 68, 17, 1, 19, 5, 6, 1, 5, 3, 2, 1, 2, 3, 21, 1, 2, 1, 2, 2, 9, 8, 1, 1, 1, 1, 6, 2, 1, 4, 1, 1, 2, 3, 7, 1, 4, 1, 7, 1, 1, 4, 22, 1, 1, 3, 1, 2, 1, 1, 1, 7, 2, 7, 2, 1, 3, 14, 1, 4, 1, 1, 1, 15, 1, 91, 3, 1, 1, 1, 8, 6, 1, 1, 1, 1, 3, 1, 2, 58, 1, 8, 1, 5, 2, 5, 2, 1, 1, 7, 2, 3, 3, 22, 5, 3, 3, 1, 9, 1, 2, 2, 1, 7, 5, 2, 3, 10, 2, 3, 3, 4, 94, 211, 3, 2, 173, 2, 1, 2, 1, 14, 4, 1, 11, 6, 1, 4, 1, 1, 62330, 1, 17, 1, 5, 2, 5, 5, 1, 9, 3, 1, 2, 1, 5, 1, 1, 1, 11, 8, 5, 12, 3, 2, 1, 8, 6, 1, 3, 1, 3, 1, 2, 1, 78, 1, 3, 2, 442, 1, 7, 3, 1, 2, 3, 1, 3, 2, 9, 1, 6, 1, 2, 2, 2, 5, 2, 1, 1, 1, 6, 2, 3, 3, 2, 2, 5, 2, 2, 1, 2, 1, 1, 9, 4, 4, 1, 3, 1, 1, 1, 1, 5, 1, 1, 4, 12, 1, 1, 1, 4, 2, 15, 1, 2, 1, 3, 2, 2, 3, 2, 1, 1, 13, 11, 1, 23, 1, 1, 1, 13, 4, 1, 11, 1, 1, 2, 3, 14, 1, 774, 1, 3, 1, 1, 1, 1, 1, 2, 1, 3, 2, 1, 1, 1, 8, 1, 3, 10, 2, 7, 2, 2, 1, 1, 1, 2, 2, 1, 11, 1, 2, 5, 1, 4, 1, 4, 1, 16, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 8, 1, 2, 1, 1, 22, 3, 1, 8, 1, 1, 1, 1, 1, 9, 1, 1, 4, 1, 2, 1, 2, 3, 5, 1, 3, 1, 77, 1, 7, 1, 1, 1, 1, 2, 1, 1, 27, 16, 2, 1, 10, 1, 1, 5, 1, 6, 2, 1, 4, 14, 33, 1, 2, 1, 1, 1, 2, 1, 1, 1, 29, 2, 5, 3, 7, 1, 471, 1, 50, 5, 3, 1, 1, 3, 1, 3, 36, 15, 1, 29, 2, 1, 2, 9, 5, 1, 2, 1, 1, 1, 1, 2, 15, 1, 22, 1, 1, 2, 7, 1, 5, 9, 3, 1, 3, 2, 2, 1, 8, 3, 1, 2, 4, 1, 2, 6, 1, 6, 1, 1, 1, 1, 1, 5, 7, 64, 2, 1, 1, 1, 1, 120, 1, 4, 2, 7, 3, 5, 1, 1, 7, 1, 3, 2, 3, 13, 2, 2, 2, 1, 43, 2, 3, 3, 1, 2, 4, 14, 2, 2, 1, 22, 4, 2, 12, 1, 9, 2, 6, 10, 4, 9, 1, 2, 6, 1, 1, 1, 14, 1, 22, 1, 2, 1, 1, 1, 1, 118, 1, 16, 1, 1, 14, 2, 24, 1, 1, 2, 11, 1, 6, 2, 1, 2, 1, 1, 3, 6, 1, 2, 2, 7, 1, 12, 71, 3, 2, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 3, 5, 5, 1, 1, 1, 1, 4, 1, 1, 1, 3, 1, 4, 2, 19, 1, 16, 2, 15, 1, 1, 3, 2, 3, 2, 4, 1, 3, 1, 1, 7, 1, 2, 2, 117, 2, 2, 8, 2, 1, 5, 1, 3, 12, 1, 10, 1, 4, 1, 1, 2, 1, 5, 2, 33, 1, 1, 1, 1, 1, 18, 1, 1, 1, 4, 236, 1, 11, 4, 1, 1, 11, 13, 1, 1, 5, 1, 3, 2, 2, 3, 3, 7, 1, 2, 8, 5, 14, 1, 1, 2, 6, 7, 1, 1, 6, 14, 22, 8, 38, 4, 6, 1, 1, 1, 1, 7, 1, 1, 20, 2, 28, 4, 1, 1, 4, 2, 2, 1, 1, 2, 3, 1, 13, 1, 2, 5, 1, 4, 1, 3, 1, 1, 2, 408, 1, 29, 1, 6, 67, 1, 6, 251, 1, 2, 1, 1, 1, 8, 13, 1, 1, 1, 15, 1, 16, 23, 12, 1, 3, 5, 20, 16, 4, 2, 1, 8, 1, 2, 2, 6, 1, 2, 4, 1, 9, 1, 7, 1, 1, 1, 64, 10, 1, 1, 2, 1, 8, 2, 1, 5, 4, 2, 5, 6, 7, 1, 2, 1, 2, 2, 1, 4, 11, 1, 1, 4, 1, 714, 6, 3, 10, 2, 1, 6, 36, 1, 1, 1, 1, 10, 2, 1, 1, 1, 3, 2, 1, 6, 1, 8, 1, 1, 1, 1, 1, 1, 1, 2, 40, 1, 1, 1, 5, 1, 3, 24, 2, 1, 6, 2, 1, 1, 1, 7, 5, 2, 1, 2, 1, 6, 1, 1, 9, 1, 2, 7, 6, 2, 1, 1, 1, 2, 1, 12, 1, 20, 7, 3, 1, 10, 1, 8, 1, 3, 1, 1, 1, 1, 2, 1, 1, 6, 1, 2, 1, 5, 1, 1, 1, 5, 12, 1, 2, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 8, 2, 4, 1, 3, 1, 1, 1, 2, 1, 11, 3, 2, 1, 7, 18, 1, 1, 17, 1, 1, 7, 4, 6, 2, 5, 6, 4, 4, 2, 1, 6, 20, 1, 45, 5, 6, 1, 1, 3, 2, 3, 3, 19, 1, 1, 1, 1, 1, 1, 34, 1, 1, 3, 2, 1, 1, 1, 1, 1, 4, 1, 2, 1, 312, 2, 1, 1, 1, 3, 6, 6, 1, 2, 25, 14, 281, 4, 1, 37, 582, 3, 20, 2, 1, 1, 1, 2, 1, 3, 7, 8, 4, 1, 11, 2, 3, 183, 2, 23, 8, 72, 2, 2, 3, 8, 7, 1, 4, 1, 4, 1, 2, 2, 1, 2, 1, 8, 2, 4, 1, 2, 1, 2, 1, 1, 2, 1, 1, 10, 2, 1, 1, 5, 2, 1, 1, 1, 2, 1, 1, 2, 1, 3, 2, 9]

চ্যালেঞ্জ

অবিরত ভগ্নাংশের জন্য নিম্নলিখিত সাধারণ পরিচিতিটি একটি ধারাবাহিক ভগ্নাংশকে সরল করুন চ্যালেঞ্জ থেকে নেওয়া হয়েছে ।

অবিচ্ছিন্ন ভগ্নাংশ হ'ল অভিব্যক্তি যা ভগ্নাংশগুলি পুনরাবৃত্তভাবে বর্ণনা করে। এগুলি গ্রাফিকভাবে উপস্থাপন করা যেতে পারে:

অবিরত ভগ্নাংশ

অথবা সেগুলি মানগুলির তালিকা হিসাবে উপস্থাপিত হতে পারে: [a0, a1, a2, a3, ... an]

এই চ্যালেঞ্জটি হ'ল ডিজিট-ভিত্তিক যোগফলের অব্যাহত ভগ্নাংশ খুঁজে বের করা sqrt(2)এবং sqrt(3), অঙ্ক-ভিত্তিক সমষ্টিটি নীচে হিসাবে সংজ্ঞায়িত করা হয়েছে,

এর দশমিক প্রতিনিধিত্ব সংখ্যার নিন sqrt(2)এবং sqrt(3)এবং অঙ্ক দ্বারা সমষ্টি অঙ্ক প্রাপ্ত:

    1.  4  1  4  2  1  3  5  6  2  3 ...
+   1.  7  3  2  0  5  0  8  0  7  5 ...
=   2. 11  4  6  2  6  3 13  6  9  8 ...

তারপরে কেবলমাত্র যোগফলের শেষ সংখ্যাটি রাখুন এবং এগুলি একটি বাস্তব সংখ্যার দশমিক উপস্থাপনে আবার সংকলন করুন

    1.  4  1  4  2  1  3  5  6  2  3 ...
+   1.  7  3  2  0  5  0  8  0  7  5 ...
=   2. 11  4  6  2  6  3 13  6  9  8 ...
->  2.  1  4  6  2  6  3  3  6  9  8 ...

এর অঙ্ক ভিত্তিক সমষ্টি sqrt(2)এবং sqrt(3)তাই হয় 2.1462633698..., এবং যখন এটা অব্যাহত ভগ্নাংশ সঙ্গে, প্রথম 1000 মান (অর্থাত প্রকাশ করা হয় থেকে ) প্রাপ্ত ভূমিকা বিভাগে তালিকাভুক্ত বেশী।a0a999

চশমা

  • আপনি কোনও ফাংশন বা একটি সম্পূর্ণ প্রোগ্রাম লিখতে পারেন। উভয়ই ইনপুট গ্রহণ করা উচিত। অন্য কথায়, ফাংশন বা প্রোগ্রামটির কোনও ইনপুট না দিয়ে সঠিকভাবে কাজ করা উচিত। খালি খালি ইনপুট সরবরাহ করা হলে ফাংশন বা প্রোগ্রাম কী করে তা বিবেচ্য নয়।

  • আপনার STDOUT এ আউটপুট করা উচিত। কেবলমাত্র যদি আপনার ভাষা STDOUT এ আউটপুট সমর্থন করে না তবে আপনার নিজের ভাষার নিকটতম সমতুল্য ব্যবহার করা উচিত।

  • আপনাকে এসটিডিআরআর পরিষ্কার রাখার দরকার নেই এবং ততক্ষণ ত্রুটি দ্বারা প্রোগ্রামটি বন্ধ করার অনুমতি দেওয়া হয় যতক্ষণ না প্রয়োজনীয় আউটপুট এসটিডিআউট বা এর সমতুল্য হয়ে থাকে।

  • আপনি যে কোনও স্ট্যান্ডার্ড ফর্মের মাধ্যমে আউটপুট সরবরাহ করতে পারেন ।

  • এটি , সর্বনিম্ন বাইট জিতেছে।

  • যথারীতি এখানে ডিফল্ট লুফোলগুলি প্রয়োগ হয়।

উত্তর:


2

কোটলিন 1.1 স্ক্রিপ্ট , 304 293 বাইট

import java.math.BigDecimal as b
import java.math.*
val m=MathContext(1022)
var B=b(2)
var A=b((""+B.sqrt(m)).zip(""+b(3).sqrt(m)).joinToString(""){(a,b)->if(a=='.')".";else ""+(a-'0'+(b-'0'))%10})
val g=b(1).setScale(1022)
repeat(1000){println(B);A=g/(A-B);B=A.setScale(0,RoundingMode.FLOOR)}

দুর্ভাগ্যক্রমে কিছুটা ভার্জোজ: /

এই প্রকাশে যেমন sqrtযোগ করা হয়েছিল অবশ্যই জেডিকে 9 দিয়ে চালানো উচিত BigDecimal। মজার বিষয় হচ্ছে, আমি কোটলিন 1.1 এবং জেডিকে 9 বৈশিষ্ট্য দুটি সহ একটি টিআইও সাইট খুঁজে পাইনি (আইডিয়োন এবং repl.it উভয় কোটলিন 1.0 চালায় যা ল্যাম্বডাসে ধ্বংসাত্মক সমর্থন sqrtকরে না , এবং টিআইও অভিযোগ করেছে যা বিদ্যমান নেই))

একটি নিউলাইন দ্বারা পৃথক প্রতিটি উপাদান মুদ্রণ।

সম্পাদনা ( -11): printlnলুপ বডিটির শুরুতে সরানো হয়েছে এবং পদ্ধতি কলটির পুনরাবৃত্তি এড়াতে একটি অতিরিক্ত পুনরাবৃত্তি যুক্ত করা হয়েছে। একটি অতিরিক্ত গণনা করা হয়, তবে এটি কোনও কিছুর জন্য ব্যবহৃত হয় না।


2

পাইথন 2 , 193 ... 179 178 বাইট

d=10
u=d**2000
v=u*u
def s(n,a=d,i=9):
 while a-i:i,a=a,(a+n/a)/2
 return a
p,q,r,t=s(2*v),s(3*v),1,0
while p:t+=(p+q)%d*r;p/=d;q/=d;r*=d
for i in range(1000):print t/u;t=v/(t%u)

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

একটি সংক্ষিপ্ত কোডের সাথে গণনা করা sqrt(2)এবং এ sqrt(3)জাতীয় নির্ভুলতা পাওয়া পাইথন এবং অন্যান্য ভাষাগুলিতে একটি কঠিন কাজ।

সম্প্রসারণটি সঠিক কিনা তা নিশ্চিত করার জন্য 2000 টি সংখ্যার প্রয়োজন (1020 পর্যাপ্ত পরিমাণে, তবে আমি এটি পরিবর্তন করতে যাচ্ছি না কারণ কোনও উন্নতি হয়নি), এবং 4-6 লাইনগুলি পূর্ণসংখ্যা বর্গমূল হয়।

193> 180: অ্যারে ম্যানিপুলেশনের পরিবর্তে অঙ্ক-ভিত্তিক মডুলোর যোগফল এখন একটি লুপ দ্বারা বহন করে

180> 179: 5 বাইট দিয়ে সংজ্ঞায়নের ব্যয় সহ মোট 1 টি বাইট কেটে 6 টি 10ব্যবহারের জায়গা প্রতিস্থাপনd

179> 178: ঠিক বুঝতে পেরেছি যে a!=iএটি প্রতিস্থাপন করা যেতে পারেa-i


1

জেলি , 32 বাইট

ȷ*`
%¢¢²¤:
2,3×Ñ×ÑÆ½DS%⁵ḌÇȷСṖ:Ñ

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


মূলত ফিক্স-পয়েন্ট পাটিগণিত ব্যবহার করুন। এম এখানে আরও ভাল কাজ করতে পারে তবে কোনওভাবে floor(HUGE_NUMBER × sqrt(2)খুব বেশি বড়ের জন্য মূল্যায়ন করতে চায় না HUGE_NUMBER। যাইহোক স্থির-পয়েন্ট বিভাগ অবশ্যই ভাল।


ব্যাখ্যা:

-------
ȷ*`       Calculate the base for fixed-point arithmetic.
ȷ         Number 1000.
 *        Raise to the power of...
  `       self. (so we have 1000 ** 1000 == 1e3000) Let B=1e3000.

-------
%¢¢²¤:    Given f × B, return a number approximately (1/frac(f)) × B.
          Current value: f × B.
%¢        Modulo by B. Current value: frac(f) × B.
  ¢²¤     B² (that is, 1e6000)
     :    integer-divide by. So we get B²/(frac(f)×B) ≃ 1/frac(f) × B.

-------
2,3×Ñ×ÑÆ½DS%⁵ḌÇȷСṖ:Ñ  Main link.
2,3                    The list [2,3].

    Ñ                  This refers to the next link as a monad, which is the
                       first link (as Jelly links wraparound)
   ×                   Multiply by. So we get [2,3]×1e3000 = [2e3000,3e3000]
     ×Ñ                Again. Current value = [2e6000,3e6000] = [2B²,3B²]

       ƽ              Integer square root.
                       Current value ≃ [sqrt(2B²),sqrt(3B²)]
                                     = [B sqrt(2),B sqrt(3)]

         DS            Decimal digits, and sum together.
           %⁵          Modulo 10.
             Ḍ         Convert back from decimal digits to integer.

                С     Repeatedly apply...
              Ç          the last link...
               ȷ         for 1000 times, collecting the intermediate results.
                  Ṗ    Pop, discard the last result.
                   :Ñ  Integer divide everything by B.

দুর্ভাগ্যক্রমে ×⁺Ñকাজ করে না। বিকল্পভাবে ×Ѳ$
ব্যবহারকারী 202729

সম্মত। ব্যাখ্যা অনেক প্রশংসা হবে।
ওয়েজুন ঝো

1
@ ওয়েইজুনজৌঃ সম্পন্ন, আপনি কিছু বুঝতে না পারলে আমাকে বলুন।
ব্যবহারকারী 202729

1

হাসেল 207 বাইট

অবিরত ভগ্নাংশটি লাজিলিভাবে গণনা করার সহজ উপায় আমি খুঁজে পেলাম না, তাই আমি 2000 অঙ্কের পাশাপাশি কাজ করেছি।

import Data.Ratio
r#y|x<-[x|x<-[9,8..],r>(y+x)*x]!!0=x:(100*(r-(y+x)*x))#(10*y+20*x)
c r|z<-floor r=z:c(1/(r-z%1))
main=print.take 1000.c$foldl1((+).(10*))(take 2000$(`mod`10)<$>zipWith(+)(3#0)(2#0))%10^1999

কি করুণা! আমি আশা করছিলাম এমন একটি হাসেল জবাব দেখে যা অসীম তালিকা তৈরি করে এবং অলসতার সাথে মূল্যায়ন করে ...
ওয়েইজুন চিউ

@ ওয়েইজুনঝৌ আমার কিছুটা সময় পরে আসার পরে চেষ্টা করব। কমপক্ষে স্কয়ার্ট অসীম তালিকা তৈরি করে। আমার কেবল ইনফিন্ট তালিকা হিসাবে দশমিক সংখ্যাটি কীভাবে বিপরীত করা যায় তা নির্ধারণ করতে হবে। হয়তো কেউ সাহায্য করতে পারে
ড্যামিয়েন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.