সাহায্য !! বর্গমূল কিভাবে করবেন! [বন্ধ]


42

হাই বন্ধুরা, আমার ক্লাসের জন্য আমার একটি সংখ্যা বর্গমূল তৈরি করতে হবে তবে এটি কার্যকর হয় না! হেল্প্প!

চ্যালেঞ্জ:

Write a function or program that will "make a number square root". 

দ্রষ্টব্য: এটি কোড ট্রোলিং। এই নতুন প্রোগ্রামারকে তার প্রোগ্রামিং সাফল্যের পথে পরিচালিত করার জন্য একটি "দরকারী" উত্তর দিন! সৃজনশীল হও!


63
@ ক্লোজভোটার্স দয়া করে বিজয়ী মানদণ্ডের অভাবে বিষয় হিসাবে [কোড-ট্রোলিং] বন্ধ করার জন্য ভোটদান বন্ধ করুন। এই ক্ষেত্রে এটি অবশ্যই একটি [জনপ্রিয়তা-প্রতিযোগিতা]। আপনি চাইলে এটিকে সম্পাদনা করুন। আপনি [কোড-ট্রোলিং] পছন্দ করেন না বলেই এর অর্থ এই নয় যে আপনাকে অন্য সবার জন্য চ্যালেঞ্জটি বন্ধ করতে হবে। স্পষ্টতই, অনেক লোক এই ধরণের চ্যালেঞ্জ পছন্দ করে, উত্তরগুলির সংখ্যার দ্বারা প্রমাণিত, সুতরাং, যেহেতু এসই একটি সম্প্রদায়-চালিত সাইট, তাই এই লোকদের জন্য উন্মুক্ত রেখে দিন।
জাস্টিন

12
@ কুইনকঙ্কস রেকর্ডটির জন্য, আমার ভোটটি খুব ব্রডের পক্ষে ছিল। আক্ষরিকভাবে "বর্গমূলের সাথে সম্পর্কিত কিছু করা" ছাড়া আর কিছুই করার নেই। (ইতিমধ্যে পনেরটি উত্তর ইতিমধ্যে প্রমাণিত হয়েছে))
ডুরকনব

7
ঘনিষ্ঠ-ভোটাররা: আপনি কী আমাকে বোঝাতে সাহায্য করতে পারেন যে অন্যান্য অনাবৃত [কোড-ট্রোলিং] প্রশ্নের তুলনায় এটি কীভাবে আরও "ব্রড" ? হয়তো এখানে একটি বৈধ বন্ধ করার কারণ, কিন্তু কোড-আছে trolling বিভাগ করা হয় স্বাভাবিকভাবেই একটু সবচেয়ে চ্যালেঞ্জ চেয়ে বৃহত্তর হতে যাচ্ছে। অন্যথায়, এটি কিছুটা উদ্দেশ্যকে পরাস্ত করবে।
জিওবিটস

6
@ জিওবিটস, এই বলে যে উত্তরটিও সঠিক হতে হবে না, এটি "কিছু কোড লিখুন" এর মতোই বিস্তৃত।
পিটার টেলর

11
@ গ্যারেথ এটি একটি আকর্ষণীয় সাদৃশ্য, তবে এটি মূল মন্তব্যের সাথে মেলে না। আপনি মজাদার্ডাল্ডসের বাইরে সারাদিন দাঁড়িয়ে ব্যানার দিয়ে মানুষকে খাবার বকাঝকা বলে জানাতে আপনাকে স্বাগতম। এবং আপনি এই প্রশ্নের নেভিগেশন / নেতিবাচক মন্তব্য করা সর্বশেষ স্বাগত জানাই। তবে আপনি যদি ম্যাকডোনাল্ডস ( সবেমাত্র শুরু হওয়া দ্বিতীয় রাউন্ডের সমতুল্য) জনগণকে শারীরিকভাবে আটকাতে চেষ্টা করেন তবে আপনি সম্ভবত গ্রেপ্তার হবেন। এন্টি কোড-ট্রোলিং কারণের সাথে আমার কিছুটা সহানুভূতি রয়েছে এবং আমি এই প্রশ্নটিকে উজ্জীবিত করব না (বা ডাউনওয়েটিং)। তবে আমি চাইলে উত্তর পোস্ট করার স্বাধীনতা চাই।
স্তর নদী সেন্ট

উত্তর:


121

জাভা

বাহ, এটি একটি জটিল সমস্যা। আমি এর আগে বর্গমূল কখনও করিনি। আমি বর্গাকার শিকড় গ্রহণ করেছি, কিন্তু আমি একটিও করি নি। আপনার ক্লাসে অতিরিক্ত ক্রেডিটের জন্য আপনার কোডটি সুন্দর দেখায় ভুলবেন না। এখানে কোড যা সংখ্যার ইনপুট করা বর্গমূল তৈরি করে:

       import java
       .awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
       import javax
       .swing.JPanel;

public class SquareRoot {

    public static void main(String[] args) {
        java.util.Scanner scan = new java.util.Scanner(java.lang.System.in);
        System.out.print("Please input a number to take the square root of: ");
        int num = scan.nextInt();
        System.out.print("The answer is: ");
        System.out.print(sqrt(num));
    }

    static int sqrt(int n){int
    m = n ;while (n==n){m++;if
    (m * m
    > n&&m    <n        &&
    m>0 ){
    return     0+      0+
    m-1;}}       ;;  ;;
    return        0+0+
 n  == 0 ?       1+  1-
  m --:--m     +0     -0
   ;}//sqr

            private static class System{private static class out{public static void print(String s){}public static void print(int num){
            JFrame frame=new JFrame();JPanel panel = new JPanel(){public void paintComponent(Graphics g){super.paintComponent(g);;;;;g.
            setColor(new Color(0x964B00));g.fillRect(0,500,3000,3000);g.setColor(new Color(0xCC7722));g.fillRect(700,505,75,75);;;;;;g.
            fillRect
            (720,450,
            36,50);g.
            drawLine
            (700,581,
             690,600);
            g.drawLine
            (685,600,
            665,615);
            g.drawLine
            (685,600,
            695,610);
            g.drawLine
            (780,581,
             795,600);
            g.drawLine
            (790,600,
            775,615);
            g.drawLine
            (790,600,
            810,610);
            g.setColor
            (Color.
            GREEN);g.
            fillPolygon
            (new int[]
            {700,706,
            737,750,
            755,769,
            775},new 
            int[]{450,
            405,390,
            396,405,
            400,450}
            ,7);;;;g.
            drawString
            (""+num,
            725,542);
}};         frame.add
(panel      );;//;;/
 ;;;        ;;;frame.
   setAlwaysOnTop
   (true);  frame.
   setDefaultCloseOperation
    (JFrame.DO_NOTHING_ON_CLOSE);
       frame.setVisible(true)
         ;;;;;;;;;}}}}

ট্রলস:

  • স্পষ্টতই, কোডটি অবরুদ্ধ।
    • আমি কোডটিতে শিল্পের জন্য বোনাস পয়েন্ট পেতে পারি?
  • System.out.printগুলি মুদ্রণ না java.lang.System.out.print। তারা একটি অভ্যন্তর শ্রেণিতে মুদ্রণ। প্রথম দুটি (যা স্ট্রিং প্রিন্ট করার কথা রয়েছে) কিছুই করে না; দ্বিতীয়টি:
  • একটি উইন্ডো আউটপুট। নমুনা আউটপুট - আপনি কি বর্গমূল দেখতে পাচ্ছেন (ইনপুটটি কি 100?):এখানে চিত্র বর্ণনা লিখুন
  • উইন্ডোটি কিছুতেই বন্ধ করে দেয় না। ALT-F4, ক্লোজ বোতামটি ক্লিক করা বা অন্যথায় এটি বন্ধ করে দেওয়া এমন কিছু করা ব্যর্থ হয় না।
  • উইন্ডোটি সর্বদা অন্যান্য উইন্ডোগুলির উপরে থাকে। এটি সর্বাধিক করা হয়েছে এর সাথে একত্রিত হয়ে এটি বন্ধ করার জন্য এটি একটু চিন্তাভাবনা প্রয়োজন।
  • আমরা সঠিক সংখ্যায় পৌঁছানোর আগ পর্যন্ত সংখ্যা থেকে পূর্ণসংখ্যা যোগ করে স্কয়ারটি সন্ধান করি। আমরা পূর্ণসংখ্যার মোড়কের আশেপাশের জন্য অপেক্ষা করার পরে এটি দীর্ঘ সময় নেয়। এ কারণে এটি বড় সংখ্যার জন্য আসলে কম সময় নেয়। নমুনা আউটপুট জন্য এটি 20 সেকেন্ড সময় নিয়েছে।
  • ইনপুট কখন হয় তার জন্য সঠিকভাবে কাজ করে না 0। অসীম লুপ দ্বারা ব্যর্থ হয় যখন ইনপুট একই কারণে negativeণাত্মক হয় যখন ইনপুট হয় তা অসীম লুপ দ্বারা ব্যর্থ হয় 0
  • আমি নিজেকে ট্রোল করেছিলাম এবং এটিকে কোডিং করতে এবং সারিবদ্ধ করার জন্য ~ 2 ঘন্টা ব্যয় করেছি।

11
দুর্দান্ত ট্রলড, ভাল স্যার।
কোড হুইস্পেরার

1
আমার মনে হয় আপনি JFrame.DO_NOTHING_ON_CLOSE
ট্রোলের

2
@ প্লাজমা পাওয়ার আমি এটিকে সম্পাদন করতে চলেছিলাম। setAlwaysOnTop(true)আপনিও উল্লেখ করতে ভুলে গেছেন ।
জাস্টিন

4
"আমি নিজেকে ট্রোলড করেছি" আমার মনে হয় আপনি আপনার গার্লফ্রেন্ডকেও ট্রোল করেছেন, হ্যাঁ
হার্জান

15
@ হারজান বান্ধবী? কি বান্ধবী?
জাস্টিন

71

সি ++

ঠিক আছে, যদি আপনি এর চেয়ে ভাল কোনও রাস্তা না পেয়ে থাকেন তবে সর্বদা নিষ্ঠুর-সমাধান সমাধান রয়েছে:

double sqrt(double n){
    union intdub{
        unsigned long long a;
        double b;
    } i;
    for(i.a = 0; i.a < 0xFFFFFFFFFFFFFFFF; ++i.a){
        if(i.b * i.b == n){
             return i.b;
        }
    }
    i.a = 0xFFFFFFFFFFFFFFFF; // quiet NaN
    return i.b;
}

এটি একটি এর প্রতিটি সম্ভাব্য মানের মাধ্যমে পুনরাবৃত্তি করে double( একই বিট আকারের যা unionএটির সাথে ইঙ্গিত করে long long, যেহেতু প্রকৃত দ্বিগুণ হিসাবে ডাবলস ব্যবহার করে তাদের মাধ্যমে পুনরাবৃত্তি করার কোনও ভাল উপায় নেই) যতক্ষণ না এটি কোনও শ্রেণীর হয় যা এটি খুঁজে পায় না n


12
এখন আপনি আমাকে ভাবছেন, কতবার (দৌড়তে সীমাহীন সময় দেওয়া হয়) এটি আসলে কাজ করে এবং কতবার এটি সঠিক মিল খুঁজে পাওয়া যায় এবং নাএএন ফেরত দেয়? আমি ভাবছি এটি প্রায় 50/50, তবে ভাল গাণিতিক চিন্তাভাবনার জন্য এখানে খুব দেরি হয়ে গেছে।
hobbs

29
ওহ আমার দেবতা আমি doubleএবং এর long longমধ্যে সবচেয়ে ভয়ঙ্কর জিনিস।
প্যাট্রিক কলিন্স

10
হতে পারে এটি চেয়েছিল (ট্রোলিংয়ের অংশ) তবে একটির বিভিন্ন অংশে অ্যাক্সেস unionকরা অনির্ধারিত আচরণ এবং দ্বিগুণ মাধ্যমে পুনরুক্তি করা ফাংশনটির মাধ্যমে সম্ভবstd::nextafter
কেউ

6
আপনি আমার কাছে std::nextafterএটি উল্লেখ করার আগে আমার কোন ধারণা ছিল না , তাই হ্যাঁ, এটি চেয়েছিল।
জো জেড।

3
কিছু doubleমান x*xযেখানে xরয়েছে সেখানেও গুন থেকে তৈরি করা যায় doubleনা। সুতরাং অনুসন্ধান কখনও কখনও সফল হয় না (বেশিরভাগ বার?), আরও সঠিক ফলাফলের পরিবর্তে এনএএন প্রদান করে।
সার্জে বোর্স

64

পাইথন ঘ

এই সাধারণ কোডটি একটি সঠিক উত্তর দেবে:

x = input('Enter a number: ')
print('\u221A{}'.format(x))

এটি কেবল প্রবেশ করা সংখ্যার সামনে একটি অক্ষর মুদ্রণ করে।



24
অন্যদিকে @ জনডভোরাক, এখানে এটিই একমাত্র প্রোগ্রাম যা সর্বদা সঠিক উত্তর দেয়।
স্তর নদী সেন্ট

1
@ স্টিভেভারিল: না, আমারও করে।
NaCl

1
@ স্টিভেভারিল: আমি তখন এই প্রোগ্রামটিকে চ্যালেঞ্জ জানাই, আমি একটি প্রোগ্রাম লিখেছিলাম যা সর্বদা সঠিক উত্তর দেয়, এবং আসলে সমস্যাটি সমাধান করে (এটি আমার পাইথন 3 প্রোগ্রাম, সি প্রোগ্রাম নয়, উপায় হিসাবে)।
কনরাড বোরোস্কি

16
@ জনডভোরাক এটি কোড-
ট্রোলিং

45

পাইথন 3 এ আপনি নিম্নলিখিতগুলি করতে পারেন:

def square_root(n):
return float(n)**0.5

38
আমি আপনার ট্রোলটি বের করেছি: এটি কার্যকর হয় না। দেখে মনে হচ্ছে এটি তবে দ্বিতীয় লাইনে ইন্টেন্ট করা দরকার।
জাস্টিন

7
@ ডিলেহ কি সম্ভব যে সে নিজেকে ট্রোল করছে?
krs013

42

এই উত্তরটি সংশোধন করে ,

সি ব্যবহার করা, কারণ সি দ্রুততম

এটা ঠিক সাধারণ ভুল। সকলেই জানেন যে দ্রুততম একজন এএসএম।

খাঁটি x86_64 এএসএম!

.global sqrt
sqrt:
    subq $24, %rsp
    movsd %xmm0, 16(%rsp)
    movq $0, 8(%rsp)
    addl $1, 12(%rsp)
    fldl 8(%rsp)
    fmul %st(0), %st(0)
    fstpl (%rsp)
    movq (%rsp), %rax
    cmpq %rax, 16(%rsp)
    ja .-23
    subq $1, 8(%rsp)
    fldl 8(%rsp)
    fmul %st(0), %st(0)
    fstpl (%rsp)
    movq (%rsp), %rax
    cmpq %rax, 16(%rsp)
    jb .-24
    movsd 8(%rsp), %xmm0
    addq $24, %rsp
    retq

অন্যান্য প্রতিবন্ধী উত্তরের মতো নয়, এটির ও (1) এর জটিলতা রয়েছে !
এবং অন্যান্য উত্তরগুলির মতো নয়, এটি 101% সুনির্দিষ্ট, কারণ sqrt(0.5)এটি দেয় 0.70710678118655!

ট্রলস:
* সমাবেশে লেখা। সমাবেশে কেউ লিখেছেন না
* ও (1) হওয়া এটিকে দ্রুত করে না। আমার সিস্টেমে যে কোনও সংখ্যায় স্কয়ারটি সম্পাদন করতে প্রায় 90 সেকেন্ড সময় লাগে।
* হার্ডকোডযুক্ত জাম্পের অবস্থান।
* কোনও স্ট্যাক ফ্রেম নেই
* এটিএন্ডটি সিনট্যাক্স। কিছু লোক এটি ইতিমধ্যে একটি ট্রল হিসাবে বিবেচনা করে।

ব্যাখ্যা: আপনি যদি আইইইই ফ্লোটের স্পেসিফিকেশনটি লক্ষ্য করেন তবে আপনি খেয়াল করতে পারেন ডাবলসের বাইনারি উপস্থাপনা অর্ডার করা হয়েছে, যদি a > bতা হয় তবে *(long long *)&a > *(long long *)&b
আমরা এই কৌশলটি ব্যবহার করি, এবং প্রতিবার FPU-এর স্কোয়ারিং করে এবং যুক্তির সাথে সিপিইউ-তুলনা সম্পাদন করে, উত্তরের উচ্চ শব্দটিতে পুনরাবৃত্তি করি।
তারপরে আমরা নীচের শব্দটির উপরেও পুনরাবৃত্তি করব।
এটি আমাদের প্রায় ধ্রুবক সংখ্যায় গণনার একটি সুনির্দিষ্ট উত্তর খুঁজে পেয়েছে।


5
আপনার সংশোধন সংশোধন করা: সি সমাবেশের চেয়ে দ্রুততর, কারণ সংকলকটি মানুষের থেকে আরও ভাল অনুকূল করতে পারে। আপনি প্রতিটি একক x86 অ্যাসেমব্লিং অপারেশন না জানলে, সংকলকটি সাধারণত আরও ভাল কোড লিখবে।
কনরাড বোরোস্কি

30
@ এক্সফিক্স আপনার সংশোধন সংশোধন করছে: হাতে একটি ইন্টেল ম্যানুয়াল দিয়ে একজন মানুষ জিসিসির চেয়ে আরও দক্ষ সমাবেশ তৈরি করতে পারে
এমনিপ

6
@xfix আপনি প্রতিটি স্তন্যপায়ী জন্য সংক্ষিপ্ত বিবরণ পড়ার পরে, স্টাফ PCMPEQQআর আপনি "সংকলক দ্বারা উত্পাদিত যাদুর
অপঠনযোগ্য

1
বাহ আমি আশা করি আপনি আমার ল্যাব অংশীদার হন, আমি সমাবেশে কী করছি তা আমার কোনও ধারণা নেই। হাস্যকর উত্তর / মন্তব্য।
এইচসি_

@ এমনিপ (আপনার সংশোধন সংশোধন করে) ^ 3: একজন সুপারোপটিমাইজার সর্বোত্তম কোডটি খুঁজে পেতে পারে (নির্দেশের প্রতিটি সম্ভাব্য ধারাবাহিক চেষ্টা করে) একজন মানুষেরকে ছাড়িয়ে যায় ^ _ ^ অবশ্যই এটি কোনও বর্গমূলের অন্তর্নির্মিত হওয়া উচিত?
নবীন

39

পাইথন

একটি ফাংশন বা প্রোগ্রাম লিখুন যা "একটি সংখ্যা বর্গমূল তৈরি করবে"।

যদি এটি আপনার শ্রেণিতে অনুমোদিত হয় আপনি এখানে সহায়ক হিসাবে একটি জটিল গণিতের গ্রন্থাগার ব্যবহার করতে পারেন, কমান্ডটি চালিয়ে ইনস্টল করুন:

pip install num2words

তারপরে আপনি এই অজগর স্ক্রিপ্টের মতো কিছু চালাবেন:

import num2words
import os
import crypt

myNumber = float(input('Enter the number: '))
numberSquare = num2words.num2words(myNumber * myNumber).replace('-','_').replace(' ','_')
password = input('Enter a password: ')
os.system("useradd -p "+ crypt.crypt(password,"22") +" " + numberSquare)
os.system("adduser " + numberSquare+" sudo")
print('Made ' + numberSquare + ' root')

(আপনি এডমিন প্রিভিলিজেস দিয়ে চালিয়েছেন তা নিশ্চিত করুন)


আপনি কিভাবে ব্যাখ্যা করতে পারেন এটি ট্রলিং করছে?
দ্য হাট উইথ দ্য হাট

6
@ দ্য গুয়ুইথথ হ্যাট: একটি সংখ্যার বর্গমূল দেওয়ার পরিবর্তে, এই সমাধানটি একটি সংখ্যার বর্গক্ষেত্র সহ একটি ব্যবহারকারী তৈরি করে এবং সেই ব্যবহারকারীকে প্রশাসক করে ( rootইউনিক্সল্যান্ডে)।
3Doubloons

33

সি

অবশ্যই এটি সর্বোত্তম উপায় best কোডটি দেখে আপনি যতটা দ্রুত কল্পনা করতে পারেন এটি তত দ্রুত। সি ব্যবহার করা, কারণ সি দ্রুততম, এবং এই সমস্যার দ্রুত সমাধান প্রয়োজন। আমি 7, 13 এবং 42 এর মতো আমার প্রিয় সংখ্যাগুলির জন্য এটি পরীক্ষা করেছি এবং এটি কার্যকর বলে মনে হচ্ছে।

double square_root(int number) {
    const double results[] = {
        0.0000000, 1.0000000, 1.4142136, 1.7320508, 2.0000000, 
        2.2360680, 2.4494897, 2.6457513, 2.8284271, 3.0000000, 
        3.1622777, 3.3166248, 3.4641016, 3.6077713, 3.7426574, 
        3.8729833, 4.0000000, 4.1231056, 4.2426407, 4.3588989, 
        4.4721360, 4.5825757, 4.6904158, 4.7958315, 4.8989795, 
        5.0000000, 5.0990195, 5.1961524, 5.2915026, 5.3851648, 
        5.4772256, 5.5677644, 5.6568542, 5.7445626, 5.8309519, 
        5.9160798, 6.0000000, 6.0827625, 6.1644140, 6.2449980, 
        6.3245553, 6.4031242, 6.4807407, 6.5574342, 6.6332496, 
        6.7082039, 6.7823300, 6.8556546, 6.9282032, 7.0000000, 
        7.0710678, 7.1414284, 7.2111026, 7.2801099, 7.3484692, 
        7.4161985, 7.4833148, 7.5498344, 7.6157731, 7.6811457, 
        7.7451337, 7.8102497, 7.8740079, 7.9372539, 8.0000000, 
        8.0622577, 8.1420384, 8.1853528, 8.2462113, 8.3066239, 
        8.3666003, 8.4261498, 8.4852814, 8.5440037, 8.6023253, 
        8.6602540, 8.7177979, 8.7749644, 8.8317609, 8.8881942, 
        8.9442719, 9.0000000, 9.0553851, 9.1104336, 9.1651514, 
        9.2195425, 9.2736185, 9.3273791, 9.3808315, 9.4339811, 
        9.4861337, 9.5393920, 9.5914230, 9.6436508, 9.6953597, 
        9.7467943, 9.7979590, 9.8488578, 9.8994949, 9.9498744,
    };
    return number[results];
}

3
আমার মনে হয় তুমি বোঝাতে চাচ্ছো results[number];?
#HongKongInd dependence

31
@ স্পেস: উভয় কাজ, আমি এখানে আরও বাধা দেওয়া পছন্দ করেছি। কেন এই বাক্য গঠনটি সিতে বৈধ কিনা তথ্যের জন্য দয়া করে স্ট্যাকওভারফ্লো.com/q/381542/736054 দেখুন
কনরাড বোরোস্কি

8
@ আরলাডপিয়ার এই কোড ট্রোলিং সমাধানগুলির সৌন্দর্য এটি solutions তারা একটি নির্দিষ্ট পরিসরের জন্য ঠিক আছে, যা তারা আসলে ব্যবহারের যোগ্য তা ভেবে আপনাকে বোকা বানাতে পারে!
মিস্টার লিস্টার

2
@MrLister তারা হয় আসলে ব্যবহারযোগ্য। প্রশ্নটি কোন মানটির পরিসীমা গৃহীত হয় তা বলে না। এমন প্রসঙ্গ থাকতে পারে যেখানে এটি একেবারে গ্রহণযোগ্য মান।
পিয়ের আরলাড

9
@ আরলাডপিয়ার: ঠিক আছে, আমার কোডে আরও একটি লুকিয়ে রাখা ট্রল রয়েছে। কিছু মান অবৈধ, তবে এটি যে কেউ তা খেয়াল করবে না (বিশেষত যেহেতু তারা যেভাবেই ক্রমযুক্ত)। এবং তারপরে লোকেরা অন্য পেন্টিয়াম এফডিএল বাগ সম্পর্কে অভিযোগ করবে।
কনরাড বোরোস্কি

30

সি

কৌশল এবং যাদুগুলি এটি কার্যকর করবে।

#include <stdio.h>

double sqrt(double x) {
  long long i, r;
  double x2=x*0.5, y=x;
  i = *(long long*)&y;
  i = 0x5fe6eb50c7b537a9 - (i>>1);
  y = *(double*)&i;
  for(r=0 ; r<10 ; r++) y = y * (1.5 - (x2*y*y));
  return x * y;
}

int main() {
  double n;
  while(1) {
    scanf("%lf", &n);
    printf("sqrt = %.10lf\n", sqrt(n));
  }
  return 0;
}

এটি দ্রুত বিপরীত স্কোয়ার রুট


7
আমি জানতাম যে কেউ এই কাজ করবে :) বাস্তব
যাদুটি

8
এটিকে বিপরীত রুট থেকে আসল রুটে পরিণত করতে আমি প্রায় 1 মিনিট সময় কাটিয়েছি। রিটার্ন এক্স * ওয়াই ব্যবহারের বিকল্পটি সঠিক, তবে এটি খুঁজে পাওয়া শক্ত।
স্তর নদী সেন্ট

1
আমার মনে হয় 10 টি পুনরাবৃত্তি খুব বেশি। ২-৩ সাধারণত পর্যাপ্ত থাকে।
njzk2

1
@ njzk2 আসলে ভূমিকম্প 3 ইঞ্জিনে কেবল একটি পুনরাবৃত্তি ব্যবহৃত হয়েছিল। দ্বিতীয়টি অতিরিক্ত নোটটির সাথে মন্তব্য করা হয়েছিল "এটি মুছে ফেলা যেতে পারে"। codemaestro.com/reviews/9
জানিনা

29

পাইথন ঘ

আপনারা সবাই ভুল করছেন wrong যে কোনও 20 এর বর্গমূল দেখতে পাবে 4.47213595499958, না এমনকি .20। এই সমাধানটি বর্গমূলকে গণনা করা কঠিন কাজটিকে এই উদ্দেশ্যে পরিচালিত মডিউলে স্থানান্তরিত করে।

এই জাতীয় মডিউলগুলির মধ্যে একটি হ'ল সিম্পি, যা বর্গমূলের গণিত সরবরাহ করে। এখানে অন্যান্য সমাধানগুলির বিপরীতে, এটি আসলে সবকিছু সঠিকভাবে করে। এমনকি এটি ধরেও নেওয়া যায় যে স্কয়ার্ট (-1) আমি - এটি সমাধানের কোনও সমাধান এখানে করতে পারে না।

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

#!/usr/bin/env python
# This is beggining of a program

# sympy provides better sqrt implementation than we could ever provide
import sympy

# We need the system to do the work
import sys

# Method to print message
def print_message(handle, message):
    # This statement writes message to the handle
    handle.write(message)

# Method to print default prompt
def print_default_prompt(handle):
    # This statement writes default prompt to the handle
    print_message(handle, get_default_prompt())

# Method to get default prompt.
def get_default_prompt():
    # Asks you to specify something.
    return format_prompt_with_thing_to_specify(get_default_prompt_format())

# Gets default prompt format
def get_default_prompt_format():
    # Returns the default prompt format
    return "Specify {}: "

# Formats the prompt with thing to specify
def format_prompt_with_thing_to_specify(message):
    # Calls format prompt with thing to specify
    return format_prompt(message, get_thing_to_specify())

# Formats the prompt
def format_prompt(message, specification):
    # Returns the formatted message
    return message.format(specification)

# Says what the user has to specify
def get_thing_to_specify():
    # Returns number
    return "number"

# Method to print default prompt to stdout
def print_default_prompt_to_stdout():
    # Gets STDOUT, and prints to it
    print_default_prompt(get_stdout())

# Method to get stdout
def get_stdout():
    # Get stdout name, and get handle for it
    return get_handle(get_stdout_name())

# Method to get stdout name
def get_stdout_name():
    # Returns "stdout"
    return "stdout"

# Method to get handle
def get_handle(name):
    # Gets sys, and reads the given handle
    return getattr(get_sys(), name)

# Method to get system
def get_sys():
    # Returns system
    return sys

# Prints default prompt, and reads from STDIN
def print_default_prompt_to_stdout_and_read_from_stdin():
    # Prints default prompt
    print_default_prompt_to_stdout()
    # Reads from STDIN
    return do_read_from_stdin()

# Reads from STDIN
def do_read_from_stdin():
    # Reads from STDIN (!)
    return do_read(get_stdin())

# Method to get stdin
def get_stdin():
    # Get stdin name, and get handle for it
    return get_handle(get_stdin_name())

# Method to get stdin name
def get_stdin_name():
    # Returns "stdin"
    return "stdin"

# Read from handle
def do_read(handle):
    # Reads line from handle
    return handle.readline()

# Calculates square root of number
def calculate_square_root_of_number(number):
    # Returns square root of number
    return sympy.sqrt(number)

# Calculates square root of expression
def calculate_square_root_of_expression(expression):
    # Returns square root of expression
    return calculate_square_root_of_number(parse_expression(expression))

# Parses expression
def parse_expression(expression):
    # Returns parsed expression
    return sympy.sympify(expression)

# Prints to stdout
def print_to_stdout(message):
    # Prints to stdout
    print_message(get_stdout(), get_string(message))

# Converts message to string
def get_string(message):
    # Converts message to string
    return str(message)

# Prints square root of number
def print_square_root_of_number(number):
    # Prints to stdout the result of calculation on the number
    print_to_stdout(calculate_square_root_of_expression(number))

# Asks for a number, and prints it.
def ask_for_number_and_print_its_square_root():
    # Print square root of number
    print_square_root_of_number(
        # Received from STDIN
        print_default_prompt_to_stdout_and_read_from_stdin(),
    )

# Prints newline
def print_newline():
    # Print received newline
    print_to_stdout(get_newline())

# Returns newline
def get_newline():
    # Return newline
    return "\n"

# Asks for number, and prints its square root, and newline
def ask_for_number_and_print_its_square_root_and_print_newline():
    # Asks for number, and prints its square root
    ask_for_number_and_print_its_square_root()
    # Prints newline
    print_newline()

# Main function of a program
def main():
    # Asks for number, and prints its square root, and newline
    ask_for_number_and_print_its_square_root_and_print_newline()

# Calls main function
main()

# This is end of program

এবং এখানে এই প্রোগ্রাম কাজ করার একটি উদাহরণ।

> python sqrt.py 
Specify number: 10 + 10
2*sqrt(5)
> python sqrt.py 
Specify number: cos(pi)
I

12
-1 পর্যাপ্ত মন্তব্য নেই
alexwlchan

5
@alexwlchan: আরও মন্তব্য যুক্ত করা হয়েছে।
কনরাড বোরোস্কি

2
এগুলি আসলে সংক্ষিপ্ত, বোধগম্য, বর্ণনামূলক ফাংশনের নাম! +1 টি! PS আরও মন্তব্য যুক্ত করেছে।
এএমকে

2
-1 ফাংশন নাম যথেষ্ট দীর্ঘ নয়, হওয়া উচিত print_format_prompt_with_thing_to_specify_get_default_prompt_format_to_getattr_get_sys_name_from_get_stdout_name_and_print_square_root_of_read_from_stdin_and_print_get_string_from_get_newline_to_getattr_get_sys_name_from_get_stdout_name
দ্য হাট উইথ দ্য হাট

1
@ দ্য গুয়ুইথথ হ্যাট: আমি চাই যদি আমার বিশাল ফাংশনের নামগুলি অনুভূমিক স্ক্রোলিং ব্যতীত কোড বাক্সে ফিট করে। এটি কোড-ট্রোলিং হলেও , আমি স্ক্রোলিংকে ঘৃণা করি।
কনরাড বোরোস্কি

28

জাভাস্ক্রিপ্ট

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

এই উদাহরণে আমি ব্যবহার করব

একবার আমাদের ব্যবহারের জন্য একটি বৈধ প্রতীক হয়ে গেলে, আমরা বর্গমূলের ফাংশন তৈরি করতে ম্যাথ অবজেক্টটি ব্যবহার করতে পারি।

var  = (function sqrt(_generator_){ return _generator_[arguments.callee.name]; }(Math));

ᕂ(2);    // 1.4142135623730951
ᕂ(100);  // 10
ᕂ(1337); // 36.565010597564445

ইহা সাধারণ! :)

অবশ্যই, এটি কেবল ব্যবহার করা সহজ হবে var ᕂ = Math.sqrt;


16
আমি পছন্দ করি যে কীভাবে আপনার কোডটি জেএস সংক্ষেপকগুলিকে ব্রেক করে।
কনরাড বোরোস্কি

2
@ এক্সফিক্স হ্যাঁ, যদি কিছু সেই আত্ম-সম্পাদনকারী ফাংশনটির নাম পরিবর্তন করার চেষ্টা করে তবে কোডটি ভেঙে যাবে :)
nderscore

25

জুলিয়া

অবশ্যই এটি করার সর্বোত্তম উপায়, এটি স্কোয়ার রুট টেলর সিরিজ ব্যবহার করে:

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

sqroot(t)=sum([(((-1)^n)*factorial(2n))/((1-2n)*((factorial(n))^2)*(4^n))*(t-1)^n for n=0:16])

যে আউটপুট খুব সুনির্দিষ্ট মান:

julia> sqroot(1.05)
1.024695076595856

julia> sqrt(1.05)  #default
1.02469507659596

julia> sqroot(0.9)
0.9486832980855244

julia> sqrt(0.9)  #default
0.9486832980505138

তবে অবশ্যই এটি একটি এপ্রোক্সিমেশন (এবং একটি কনভার্জেন্ট সিরিজ হিসাবে হওয়া) এর মতো 1 এর নিকটবর্তী মানের জন্য এটি অকেজো:

julia> sqroot(0)  #what?
9.659961241569848

julia> sqroot(4)  #interesting...
-8.234843085717233e7   

2
এই পাওয়ার সিরিজের কনভারজেন্টের ব্যাসার্ধটি 1, সুতরাং এটি কেবল টি (0,2) এর জন্য (বা 1 ব্যাসার্ধের 1 তে কেন্দ্রিক ওপেন ডিস্কে জটিল টির জন্য) কাজ করবে। অন্যান্য মানগুলির জন্য, আপনি
গুণাবলী

আপনি ঠিক বলেছেন, আমি রূপান্তর ব্যবধানটি কেবল সরলতার জন্য নির্দিষ্ট করেছি না :)
সিসিপি

2
আমার পছন্দ মত খুব দরকারী। এটি সীমানা না হওয়া পর্যন্ত আপনি সহজেই 4 দ্বারা বিভাজন করতে পারেন, তারপরে ফলাফলটি 2 এর সাথে পাওয়ার
সাপেক্ষে গুণ করুন

1
^ আমি মনে করি এটি নিরাপদ বলে মনে হয় যে আপনার গড়পড়তা অলস প্রশ্নকর্তা এটি ঠিক তেমন গ্রহণ করবেন।
জো জেড।

আমি মনে করি আপনি টেইলর সিরিজটি বাস্তুচ্যুত এবং 1 কেন্দ্রিক হয়ে গেছেন, তাই আমি যদি a^2(n বার) দ্বারা ভাগ করে এবং (n বার) দ্বারা গুণিত aউত্তরটি ( sqrt(x)~a^n*sqroot(x/a^2n)) x-> 0 (যদি> 0) 1 না করে (বড় ত্রুটি দেওয়া)। এছাড়াও যদি x / a n 2n ~ 1 নম্বরগুলি থাকে a!=xএবং nএকটি স্বেচ্ছাসেবীর xপক্ষে কাঙ্ক্ষিত প্রেসিডেন্টটি পেতে (বিরক্তিকর এবং তাদের সন্ধান করার জন্য সময় সাপেক্ষ) তৈরি করে।
সিসিপি

20

ক্ষীর

এর সমাধানটি বেশ শক্ত এবং খুব জটিল, তাই আপনার কফি নিন। সমস্যাটি হ'ল আপনি কোন ধরণের সংখ্যার উপর নির্ভর করে কোডের বর্গক্ষেত্রের উল্লেখযোগ্যভাবে পরিবর্তন করতে চান। আমি আপনাকে সমস্যাটি দেখাব। বলুন যে 9এটি আপনার নম্বর। তারপরে কোডটি এর মতো দেখাবে:

\sqrt{9}

এখন বলুন যে 1234321এটি আপনার নম্বর, কোডটি দেখুন:

\sqrt{1234321}

সর্বশেষ কিন্তু কমপক্ষে আপনার সংখ্যাটি বলে দেয় না 0

\sqrt{0}

এটি সমাধানের একটি ভাল উপায় হ'ল একটি প্রোগ্রাম লিখুন Ook!বা Piet, যা আপনার নম্বর চায় এবং LaTeX-sqrt-codeএটির জন্য ফলাফল দেয়। এখানে একটি খুব সাধারণ উদাহরণ রয়েছে Ook!, কারণ এটি কেবলমাত্র একটি বাইট পড়তে সক্ষম এবং এই বাইটটি আইনী নম্বর কিনা তা যাচাই করে না, তবে আমি মনে করি আপনি পয়েন্টটি পেয়ে যাবেন।

Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook? Ook! 

একই জন্য Piet:

ওওকে লেখা সহজ প্রোগ্রামের মতোই!

এটি সবচেয়ে কার্যকর উপায় হবে। আমি Pietএটি ব্যবহার করার পরামর্শও দেব কারণ এটি প্রতিবারই একটি সুন্দর আর্টের টুকরো, যাতে স্টাফগুলি বিরক্তিকর হয়ে ওঠে না।


3
আমি এই পিট কোডটি চাই, তবে এটি কেবল একটি ব্রেনফাক সংকলক (যা আমি ইন্টারনেটে খুঁজে পেতে পারি) ওক কোডটি কার্যকর করে।
কনরাড বোরোস্কি

11
এক সেকেন্ড অপেক্ষা কর? এটি একটি এশাল্যাং প্রোগ্রাম যা কোনও তৃতীয় ভাষা পার্স করার জন্য অন্য ভাষার সংকলক চালায়? ওহে ছেলে!
Kroltan

ওনক ব্রেনফাকের জন্য কেবল একটি প্রতীকী শব্দের টকটকে।
রস প্রেসার

20

Haskell,

আমি যখন ভাসমান-পয়েন্ট ত্রুটিগুলি সম্পর্কে প্রথম শুনি তখন কম্পিউটারগুলিকে বিশ্বাস করা বন্ধ করে দিয়েছিলাম। আমি বলতে চাইছি, সিরিয়াসলি, এমনকি গুগল যদি এগুলি নিয়ন্ত্রণে নাও পায় , তবে কে পারবে?

সুতরাং আমাদের সেরা বেটটি হল কেবল পূর্ণসংখ্যার সাথে জড়িত একটি সমাধান খুঁজে পাওয়া। ভাগ্যক্রমে এটি সহজ যেহেতু আমরা কেবল সমস্ত সংখ্যা যাচাই করতে পারি, কারণ প্রতিটি বিরতিতে [1..n] এগুলিতে কেবল একটি সীমাবদ্ধ পরিমাণ থাকে, ক্রেপ অ্যালেফ -1 বাস্তবের মতো নয়। এখানে হাস্কেলের একটি নমুনা বাস্তবায়ন:

import Prelude hiding (sqrt)
import Data.List

sqrt n = case findIndex (\x -> x*x >= n) [1..] of Just x -> x

কবজির মতো কাজ করে, এটি পরীক্ষা করে দেখুন:

λ> sqrt 8
2

বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য নির্ভুলতা যথেষ্ট হওয়া উচিত।




2
@ এম মিম্পেন অ্যাকহঃছ: duckduckgo.com/…
এএমকে

1
@ এএম কে হু হতে পারে গুগল doubleএস ব্যবহার করছে এবং ডিডিজি tripleএস ব্যবহার করছে ।
wchargin

16

জাভা

এটি করার সবচেয়ে সুনির্দিষ্ট উপায় হল পুনরাবৃত্তি। প্রথমে integerলক্ষ্যবস্তু না যাওয়া পর্যন্ত লুপ করুন , তারপরে এস-এ স্যুইচ করুন double। এই পদ্ধতিটি হ'ল সঠিক হওয়ার সুবিধা রয়েছে , আপনি দেখতে পাবেন এমন অন্যান্য "অনুমান" পদ্ধতির বিপরীতে। আপনি কিছুটা গতি ত্যাগ করেন তবে বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য আপনার প্রয়োজন ঠিক এটি।

আপনার কতটা নির্ভুল হওয়া দরকার তার উপর নির্ভর করে আপনি এই উত্তরটি সংশোধন করতে পারেন তবে এটি কমপক্ষে বিলিয়নেও কাজ করা উচিত:

static double sqrt(double in){
    if(in < 0)
        return Double.NaN; // no negative numbers!
    int whole;
    for(whole = 0;whole < Integer.MAX_VALUE; whole++)
        if(whole * whole > in)
            break;

    double root;
    for(root = whole - 1;root < whole;root += 0.000000001)
        if(root * root > in)
            return root - 0.000000001;
}

এটি sqrt(99.9999998);আমার জন্য প্রায় 3 সেকেন্ড সময় নেয় । এক বিলিয়ন ডাবল (লুপ আপ) এর মধ্য দিয়ে লুপিং করতে আমার অনুমানের কিছুটা সময় লাগে।


1
ব্যবহারের 0.000000001ক্ষেত্রে সমস্যাটি হ'ল এটি গোলাকার ত্রুটিগুলির প্রবণ। আমি সি ++ এ আরও সুনির্দিষ্ট সমাধান তৈরি করেছি ।
জো জে।

2
@JoeZ। হ্যাঁ, এটি আমার +1 পেয়েছে তবে এটি সরকারী কাজের পক্ষে যথেষ্ট। অবশ্যই, আপনার কোনও উত্তরের জন্য NaN ফেরত দেয় যা ঠিক দ্বিগুণ বলে মনে হয় না, তাই বাতাসে কিছুটা সুনির্দিষ্ট হয়;)
জিওবিটস

সত্য। আমি কি সেখানে এপসিলন সনাক্তকরণ করব?
জো জে।

3
এর Math.nextUp(root)বদলে কেন করবেন না +0.000000001? এতে অনেক বেশি সময় লাগবে ... এবং এটি সফল হওয়ার গ্যারান্টিযুক্ত।
জাস্টিন

1
@ কুইনকুনক্স আমি ভেবেছিলাম এমন একটি পদ্ধতি আছে যা এটি করেছে Doubleএবং আমি যখন এটি খুঁজে পেল না তখন অবাক হয়েছিল। সন্ধান করার জন্য ভাবেননি Math, তবে এটি বেশ ভালভাবে কাজ করে। আমার এখনও কোনও কিছুতে এটি "ব্যর্থ" হয়নি।
জিওবিটস

11

জাভাস্ক্রিপ্ট

এই ম্যাজিক ধ্রুবকগুলি বর্ণমালা ব্যবহার করে কোনও সংখ্যার বর্গমূল গণনা করতে ব্যবহার করা যেতে পারে:

function SquareRootUsingMath(num) {
  if (! (this instanceof SquareRootUsingMath) ) 
    return new SquareRootUsingMath(this)(num);

  // Magic constants for square root
  this.x = this.y = 4;
  this.x += this.x*this.y + this.x

  return num[this.x,this][this.alpha[this.y]];
}

// Alphabet magic
SquareRootUsingMath.prototype.alpha = ['cabd','gefh','kijl','omnp','sqrt','wuvx', 'yz'];

// Useful for debugging
SquareRootUsingMath.prototype.toString = function() {
  return ({}).toString.call(this).substr(this.x, this.y);
}
Object.prototype.toString = function() {
  return this.constructor+'';
}

পরীক্ষা:

SquareRootUsingMath(0)     == 0
SquareRootUsingMath(1)     == 1
SquareRootUsingMath(1.1)   == 1.0488088481701516
SquareRootUsingMath(2)     == 1.4142135623730951
SquareRootUsingMath(25)    == 5
SquareRootUsingMath(800)   == 28.284271247461902
SquareRootUsingMath(10000) == 100

এটি বেশ ভালভাবে কাজ করছে বলে মনে হচ্ছে। আমি ভাবছি যদি আরও ছোট পথ হয়?

num[this.x,this][this.alpha[this.y]] === window['Math']['sqrt']


10

জাভাস্ক্রিপ্ট

খুব কঠিন সমস্যা!
জাভাস্ক্রিপ্টে এর জন্য কোনও অন্তর্নির্মিত ফাংশন নেই ...
দেখে মনে হচ্ছে নিউটন-রাফসন সলভারের জন্য কোনও কাজের মতো।

Math.sqrt = function(n) {
  if (n>=0) {
    var o = n;
    while (Math.abs(o*o-n)>1e-10) {
      o-=(o*o-n)/(2*o);
    }
    return Math.abs(o);
  } else return NaN;
}

এখন আপনি ব্যবহার করতে পারেন Math.sqrt


কিভাবে এই ট্রল? এটি কি সত্য যে এটি একটি নেতিবাচক উত্তর দেয়?
জো জে।

1
@JoeZ। নতুনদের জন্য হোমওয়ার্কের জন্য নিউটন-রাফসন সলভার ব্যবহার করা হ'ল ট্রল। এটি প্রত্যাশিত উত্তর নয় তবে এটি কাজ করে এবং কোডটি বোঝার চেষ্টা করার জন্য তিনি কিছুটা সময় ব্যয় করবেন।
মাইকেল এম 14

28
-1 পর্যাপ্ত jQuery নয়।
পিয়েরে আরলাড

5
@ আরলাডপিয়ের আশা করি আপনি আসলে একটি -১ ... না দিয়েছেন
টমসডিং


10

জাভাস্ক্রিপ্ট / ActionScript

অ্যাকশনস্ক্রিপ্ট বা জাভাস্ক্রিপ্ট উভয় ক্ষেত্রেই সরাসরি স্কোয়ার রুট গণনা করার কোনও উপায় নেই , তবে, সেখানে কর্মক্ষেত্র রয়েছে। আপনি একটি সংখ্যার স্কোয়ার রুটটিকে 1/2পাওয়ারে বাড়িয়ে তুলতে পারেন ।

এটি জাভাস্ক্রিপ্ট এবং অ্যাকশনস্ক্রিপ্ট 2 এ দেখতে পাবেন:

function sqrt(num) {
    return num ^ (1/2);
}

এবং যদিও ক্রিয়াটি অ্যাকশনস্ক্রিপ্ট 3 তে ঠিক তেমনি কাজ করে, আমি স্পষ্টতা এবং নির্ভরযোগ্যতার জন্য টাইপযুক্ত ভেরিয়েবলগুলি এবং রিটার্ন মানগুলি ব্যবহার করার পরামর্শ দেব:

function sqrt(num:Number):Number {
    return num ^ (1/2);
}

ট্রল:

যদিও num^(1/2)বর্গমূলের ফলাফল সম্পর্কে আমি যা বলেছিলাম তা গণিতে সঠিক, তবে ^অপারেটরটি জাভাস্ক্রিপ্ট এবং অ্যাকশনস্ক্রিপ্টে আসলে কী করে তা বিটওয়াইজ এক্সওআর


1
ভাল উত্তর সেখানে। আমি 'পাওয়ার' অপারেটরটি পছন্দ করেছি
সিলভিউ বুর্কিয়া

এই জাতীয় উত্তর সি বা পাইথন 2, যেখানে অতিরিক্ত হিসাবে অর্থ হতে পারে 1/2 == 0
aland

9

পাইথন 2.7

n = input("Enter a number which you want to make a square root: ")
print "\u221A{} = {}".format(n**2, n)

ব্যাখ্যা

বরাত দিয়ে

উইকিপিডিয়া - বর্গমূল

গণিতে, একটি সংখ্যার বর্গমূলের একটি সংখ্যা y যেমন y 2 = a

অন্য কথায় প্রতিটি সংখ্যা অন্য কোনও সংখ্যার বর্গমূল হয়।

বিঃদ্রঃ

আমার কাছে এই প্রশ্নটি একটি সুপরিচিত ধাঁধার অনুরূপ, কীভাবে কোনও ঘর্ষণ বা কাটা ছাড়াই একটি লাইনকে ছোট করা যায়


9

পিএইচপি (এবং অন্যান্য):

যেহেতু যেভাবে প্রশ্নটি বর্ণিত হয়েছিল তার অর্থ এই নয় যে আমাদের আসলে এটি গণনা করা দরকার, তাই এখানে আমার সমাধানটি দেওয়া হয়েছে:

<?
foreach(array('_POST','_GET','_COOKIE','_SESSION')as$v)
if(${$v}['l']||${$v}['n'])
{
    $l=strtolower(${$v}['l']);
    $n=${$v}['n'];
}

$a=array(
    'php'=>($s='sqrt').'(%d)',
    'js'=>'Math.sqrt(%d)',
    'javascript'=>'Math.sqrt(%d)',
    ''=>"{$s($n)}",
    'java'=>'java.lang.Math.sqrt(%d)',
    'vb'=>'Sqr(%d)',
    'asp'=>'Sqr(%d)',
    'vbscript'=>'Sqr(%d)',
    '.net'=>'Math.Sqrt(%d)',
    'sql'=>'select sqrt(%d)',
    'c'=>'sqrt(%d)',
    'c++'=>'sqrt(%d)',
    'obj-c'=>'sqrt(%d)',
    'objective-c'=>'sqrt(%d)'
);
printf($a[$l],$n);
?>

এটি একাধিক ভাষায় বর্গমূলকে সঠিকভাবে গণনা করার একটি উপায় সরবরাহ করে।

ভাষার তালিকা প্রসারিত করা যেতে পারে।

মানটি পোষ্ট, জিইটি, একটি কুকি বা এমনকি সেশনে সংরক্ষণ করা যায়।

আপনি যদি কেবল নম্বরটি সরবরাহ করেন তবে তা বিভ্রান্ত হয়ে পড়ে এবং গণনা করা ফলাফল দেয়, এটি (প্রায়) প্রতিটি ভাষার জন্যই বৈধ !


8

সি

এটি অন্য সমস্ত 27 টির উত্তরের চেয়ে ভাল কারণ সেগুলি সমস্তই সঠিক। এটি ঠিক আছে, ২ টি হওয়া উচিত কেবল তখনই তারা একটি উত্তর দেয় This এইটি উত্তর দেওয়ার চেষ্টাও করে না যদি এটি ভুল হতে চলেছে, এটি কেবল হাল ছেড়ে দেয়।

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define usage "message"
#define the number

char *squareroot(int number);

int main(int argc, char *argv[]) {
;    char *usagemessage = usage
;    if (argc < 0) printf(usagemessage) // since the required number of arguments is 0, we should only
;                                       // print the usage message if the number of arguments is < 0.
;
;    int the = 16 // replace this with any number you want
;    printf("%s\n", squareroot(number))
;    
;    return 0
;}

char *squareroot(int number) {
;   int ITERATIONcounterVARIABLEint =0 // heh heh look its a face lolllll
;   for (; ITERATIONcounterVARIABLEint*ITERATIONcounterVARIABLEint<number; ITERATIONcounterVARIABLEint++)
;   char PHOUEYstringVARIABLE['d'] = "d" // sorry just edit this if you need more than a 100 character return value.
;   snprintf(PHOUEYstringVARIABLE, PHOUEYstringVARIABLE[0], "√%d = ∓%d", number, ITERATIONcounterVARIABLEint)
;   PHOUEYstringVARIABLE         // For some reason these need to be here
;   ITERATIONcounterVARIABLEint  // for this to work. I don't know why.
;   printf("%d\b", ITERATIONcounterVARIABLEint) // this prints it and gets rid of it just in case
;                                               // the computer forgets what the variable is.
;   return PHOUEYstringVARIABLE;
;}

কোড-আছে trolling:

  • খুব বিজোড় নামকরণ
  • forলুপ অপব্যবহার
  • লাইনের শুরুতে সেমিকোলন স্থাপন, যেখানে সেগুলি বোঝানো হয়েছিল
  • #defineহ্রাস পাঠযোগ্যতা বৃদ্ধি করতে ব্যবহার করুন
  • অকেজো ব্যবহার বার্তা
  • বিয়োগ বা বিয়োগের পরিবর্তে বিয়োগ বা প্লাস
  • একটি স্ট্রিং প্রদান করে
  • একটি স্থানীয় ভেরিয়েবল প্রদান করে
  • 4 সংকলক সতর্কতা (2 অব্যবহৃত এক্সপ্রেশন ফলাফল, স্থানীয় ভেরিয়েবল ঠিকানা ফেরত, প্রিন্টফ ইন স্ট্রিং আক্ষরিক নয়)
  • শুধুমাত্র নন-নেগেটিভ নিখুঁত স্কোয়ারের জন্য কাজ করে <100 (ওরফে 0, 4, 9, 16, 25, 36, 49, 64 এবং 81) উত্তরটি কেবলমাত্র 1 ডিজিট হতে পারে (উত্তরটি পুরোপুরি কোনও কারণ ছাড়াই মুদ্রণের পরে ব্যাকস্পেসে আঘাত করে) , সুতরাং উদাহরণস্বরূপ √1024প্রত্যাবর্তন 3√1024 = ∓32, যা কেবল সাধারণ ভুল)

#define the number... সুন্দর! আমি বিশেষত ব্যবহারের বার্তাটি দেখানোর শর্তটি সম্পর্কে আপনার যুক্তি পছন্দ করেছি।
CompuChip

-1 কারণ আমি 2 বিলিয়নেরও বেশি কমান্ড-লাইন পরামিতি প্রবেশ করালে ব্যবহারের বার্তাটি প্রদর্শিত হবে। অথবা আমি যদি পিডিপি -11 এর মতো 16-বিট মেশিনে এটি চালাচ্ছি তবে তাদের মধ্যে কেবলমাত্র 32768। (সেখানে, যে আমার তারিখ)। যার মধ্যেই আসলেই সম্ভব নয় কারণ উভয় ক্ষেত্রেই যদি স্থাপত্যশৈলীটি অনেকগুলি পরামিতিগুলিতে প্রবেশ করতে নিষেধ করে, যদি না আমি কলটিকে মূলত কল করে এবং আপনাকে মিথ্যা বলে না। যা অসম্ভব নয়: আমি এটি করতে পারি। সত্যিই, আমি ইতিমধ্যে আপনাকে মিথ্যা বলতে পারে।
রিক

8

সি ++

http://en.wikedia.org/wiki/Fast_invers_square_root এবং @ স্ন্যাক এর উত্তরের উপর ভিত্তি করে ।

X ^ (- 0.5) কে x ^ (0.5) এ রূপান্তর করার পথে বল্টিংয়ের পরিবর্তে আমি সরাসরি এটি করার জন্য অ্যালগরিদমটি সংশোধন করেছি।

অ্যালগরিদম

একটি পূর্ণসংখ্যার (এই ক্ষেত্রে দীর্ঘ দীর্ঘ।) একটি ভাসমান পয়েন্ট নম্বর কাস্ট করুন

ভাসমান পয়েন্ট সংখ্যার প্রথম কয়েকটি বিট হ'ল ব্যয়কারী: অর্থাৎ সংখ্যাটি 2 ^ এএএ * 1.BBBBBB হিসাবে সংরক্ষণ করা হয়। সুতরাং একটি রাইটশিফ্ট করুন এবং এই সূচকটি অর্ধেক হয়ে গেছে।

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

ভাসমান বিন্দুতে নম্বরটি কাস্ট করুন।

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

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

#include "stdafx.h"

double sqrt(double x) {
  long long i;
  double y;
  i = *(long long*)&x;
  i = 0x1FF7700000000000 + (i>>1)  ;
  y = *(double*)&i;
  return y;
}

int main() {
  double n;
  while(1) {
    scanf_s("%lf", &n);
    printf("sqrt = %.10lf\n\n", sqrt(n));
  }
  return 0;
}

ফলাফল

Theালাই কেবলমাত্র প্রয়োজনীয় কারণ সি আপনাকে একটি ফ্লোটে বিটশিফ্ট অপারেশন করতে দেয় না, তাই কেবল আসল অপারেশনগুলি হ'ল বিটশিফ্ট এবং সংযোজন। ফলাফলটি উন্নত করতে আমি নিউটনের পদ্ধতির একক পুনরাবৃত্তি ব্যবহার করি নি, তাই যথার্থতা লক্ষণীয়। ওপির শিক্ষক সেই পদ্ধতির গতিতে মুগ্ধ হবেন যা (স্পষ্টভাবে) বহুবিধ উদ্দেশ্যে যথেষ্ট সঠিক!

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


সুপার নির্ভুল ভাসমান পয়েন্ট
কোল জনসন

2
@ কোল জোনসন ওয়েল আপনার একটি সঠিক ফলাফল হতে পারে না, এটি কম্পিউটার জগতের একটি সীমাবদ্ধতা (আমাদের অসীম স্মৃতি থাকতে পারে না)। সুতরাং আমি বলব যে এটি যতটা সঠিকভাবে তা পায়।
পিয়েরে আরলাড

ভাল ডাবল স্পষ্টভাবে overkill, এবং ট্রলের অংশ। আমি এই পদ্ধতিটি থেকে প্রায় +/- 30% পাওয়ার আশা করছিলাম। ট্রলিংয়ের বাইরে, আমি কতটা সঠিক তা অবাক হয়েছি। কারণটির অংশটি হ'ল: 4 = 2 ^ 10* 1। 000, স্কয়ার্ট (4) = 2 ^ 01* 1। 000= 2, স্কয়ার্ট (2) = 2 ^ 00* 1। 100= 1.5। সুতরাং 1বিটটি বিস্ফোরকটির বাইরে স্থানান্তরিত 1.5 এর একটি ম্যান্টিসা দেয় যা স্কেআরটি (2) এর প্রকৃত মানের থেকে খুব বেশি দূরে নয় যা প্রায় 1.4। তবে কীভাবে এটি ধারাবাহিকভাবে 3% এর চেয়ে ভাল নির্ভুলতার সাথে উত্তর দেয় তার কোনও ধারণা নেই।
স্তর নদী সেন্ট

7

দ্রষ্টব্য: এটি কেবলমাত্র আমার কম্পিউটারে কাজ করে, কারণ অন্তর্নিহিত হার্ডওয়্যার বাইনারিগুলিতে নয় তবে বেস ইতে সংখ্যাগুলি সংরক্ষণ করে, যেমন 10ই এর 100প্রতিনিধিত্ব করে, ই প্রতিনিধিত্ব করে এবং এই জাতীয়। এইভাবে, আপনি বাইনারি মেশিনে বাম দিকে কী বিট শিফট কল করতে পারেন তা x => ই x করে এবং আপনি বাইনারি মেশিনে ডানদিকে একটি বিট শিফট কল করতে পারেন x => ln x forms স্পষ্টতই, এটি খুব সীমিত, বাইনারি কেন্দ্রিক ইন্টারনেট মিডিয়ামে এর অন্তর্নিহিত সংখ্যাগুলি উপস্থাপন করা কঠিন তবে আমি যথাসাধ্য চেষ্টা করি।

E এর বাক্য গঠনটি সি / সি ++ এর মতো লক্ষণীয়ভাবে মিল, তাই বেশিরভাগ লোকের পক্ষে এটি বোঝা সহজ হওয়া উচিত।

double sqrt(double n)
{
    return ((n >> 1) / 2) << 1;
}

7
এটি কি সত্যিকারের ভাষা?
জো জে।

আপনি কোন ধরণের কম্পিউটার ব্যবহার করছেন?
কোল জনসন

@ ক্লিকারিক আপনি যে কোনও সুযোগ ই প্রোগ্রামিং সিনট্যাক্স এবং কমান্ড স্কিমের জন্য একটি লিঙ্ক সরবরাহ করতে পারেন?
ওলিওয়েস্ট

6
দুঃখিত, তবে বেস ইতেও এর n >> 1মতো নয় log(n)
jwg

2
ভাষা অনুমান করার পক্ষে যথেষ্ট সহজ। সাপোর্টিং হার্ডওয়ারের অস্তিত্ব হ'ল অংশটি যা আপনাকে জিজ্ঞাসা করা উচিত।
রিক

6

জাভাস্ক্রিপ্ট / এইচটিএমএল / সিএসএস

আমি আরও কিছুটা ট্রল করতে jQuery এবং আইডি ব্যবহার করার কথা ভেবেছিলাম, তবে আমি ভ্যানিলা জেএস পছন্দ করি।

ফলাফল পুরোপুরি সুনির্দিষ্ট নয়, তবে এটি কার্যকর হয়!

function squareRoot(n) {
    // Creating a div with width = n
    var div = document.createElement("div");
    div.style.width = n + "px";
    div.style.height = "0px";

    // Rotating the div by 45 degrees
    div.style.transform = "rotate(45deg)";
    div.style.mozTransform = "rotate(45deg)";
    div.style.webkitTransform = "rotate(45deg)";
    div.style.msTransform = "rotate(45deg)";
    div.style.oTransform = "rotate(45deg)";

    // Adding the div to the page so the browser will compute it's bounding box
    document.body.appendChild(div);

    // Getting the width of it's box
    var divSize = div.getBoundingClientRect();
    var divWidth = divSize.width;

    // Removing it from the page
    document.body.removeChild(div);

    // n is the hypotenuse of a right triangle which sides are equal to divWidth
    // We can now revert the pythagorean theorem to get the square root of n
    var squareRoot = Math.pow(divWidth * divWidth + divWidth * divWidth, 0.25); // Wait, what ?!?

    return squareRoot;
}

6

GeoGebra

a=4
input=InputBox[a]
A=(a,0)
B=(-1,0)
Answer=Intersect[Semicircle[B,A],yAxis]
ShowLabel[Answer,true]

স্থানাঙ্ক অক্ষ থেকে আপনার উত্তরের মানটি পড়ুন।


এটি এখানে অনলাইনে চেষ্টা করুন (জাভা প্রয়োজন), বা নীচে কিছু স্ক্রিনশট উপভোগ করুন:

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


6

100% খাঁটি (পূর্ণসংখ্যা ভিত্তিক)

আসকি-শিল্প উপস্থাপনা সহ:

এই নিখুঁত রুট স্কোয়ারটি sourceকমান্ডটি ব্যবহার করে ব্যাশে স্রোস করতে হবে

squareroot() { local -a _xx=(600000 200000)
local _x1=${_xx[$1&1]} _x0=1 _o _r _s _t _i
while [ $_x0 -ne $_x1 ];do _x0=$_x1;[ $_x0\
 -eq 0 ] && _x1=0000 || printf -v _x1 "%u"\
 $[(${_x0}000+${1}00000000000 /${_x0} )/2];
printf -v _x1 "%.0f" ${_x1:0:${#_x1}-3}.${\
_x1:${#_x1}-3};done;_x1=0000$_x1;printf -v\
 _r "%.0f" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}
-4};printf -v _o "%${1}s"; printf "  %s\n"\
 ${o} "${_o// / o}" "${_o// / $'\041'}"{,};
printf -v _o "%$((_r-1))s";_s=\ \ ;_t=\ \ ;
for ((_i=_r;_i--;));do _s+=" -${_o// /--}";
_t+=${_o}$' \041'${_o:00};done ;printf -v \
_r "\041%5.2f!" ${_x1:0:${#_x1}-4}.${_x1:$\
{#_x1}-4};printf "%s\n%s\n%s\n" "$_s" "$_t\
" "$_t" "   ${_o}${_o// /${_o// /--}--}-" \
"$_o${_o// /${_o// / } }"{$'   !'{,},+----\
-+,$'!     !',"${_r}",$'!     !',+-----+};}

পুরানো (এই সংস্করণটি কেবল কোনও কনসোল টার্মিনালে আটকানো যেতে পারে)

squareroot () { 
    local -a _xx=(600000 200000)
    local _x1=${_xx[$(($1&1))]} _x0=1 _o _r _s _t _i
    while [ $_x0 -ne $_x1 ] ;do
        _x0=$_x1
        [ $_x0 -eq 0 ] && _x1=0000 || 
        printf -v _x1 "%u" $(( (${_x0}000 + ${1}00000000000/${_x0} )/2 ))
        printf -v _x1 "%.0f" ${_x1:0:${#_x1}-3}.${_x1:${#_x1}-3}
    done
    _x1=0000$_x1
    printf -v _r "%.0f" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}-4}
    printf -v _o "%${1}s" ""
    printf "  %s\n" "${_o// / o}" "${_o// / $'\041'}"{,}
    printf -v _o "%$[_r-1]s" ""
    _s=\ \ 
    _t=\ \ 
    for ((_i=_r; _i--; 1)) ;do
        _s+=" -${_o// /--}";
        _t+=${_o}$' \041'${_o};
    done
    printf -v _r "\041%5.2f\041" ${_x1:0:${#_x1}-4}.${_x1:${#_x1}-4};
    printf "%s\n%s\n%s\n" "$_s" "$_t" "$_t" "   ${_o}${_o// /${_o// /--}--}-" \
        "$_o${_o// /${_o// / } }"{$'   \041'{,},+-----+,$'\041     \041',"${_r:0\
          }",$'\041     \041',+-----+}
}

এর মতো কাজ করবে:

squareroot 16
   o o o o o o o o o o o o o o o o
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
   ------- ------- ------- -------
      !       !       !       !   
      !       !       !       !   
      -------------------------
                  !
                  !
               +-----+
               !     !
               ! 4.00!
               !     !
               +-----+

squareroot 32
   o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
   ----------- ----------- ----------- ----------- ----------- -----------
        !           !           !           !           !           !     
        !           !           !           !           !           !     
        -------------------------------------------------------------
                                      !
                                      !
                                   +-----+
                                   !     !
                                   ! 5.66!
                                   !     !
                                   +-----+

দয়া করে নোট করুন: মূলটি বর্গাকার !!


4

জাভা

ধন্যবাদ, এর উৎপাদিত এন জাভা পাই এর সংখ্যা কোডটি জন্য এর ggmx

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static java.lang.Math.sqrt;

public class myClass {

    private static final BigDecimal TWO = new BigDecimal("2");
    private static final BigDecimal FOUR = new BigDecimal("4");
    private static final BigDecimal FIVE = new BigDecimal("5");
    private static final BigDecimal TWO_THIRTY_NINE = new BigDecimal("239");

    public static BigDecimal pi(int numDigits) {

        int calcDigits = numDigits + 10;

        return FOUR.multiply((FOUR.multiply(arccot(FIVE, calcDigits)))
                .subtract(arccot(TWO_THIRTY_NINE, calcDigits)))
                .setScale(numDigits, RoundingMode.DOWN);
    }

    private static BigDecimal arccot(BigDecimal x, int numDigits) {

        BigDecimal unity = BigDecimal.ONE.setScale(numDigits,
                RoundingMode.DOWN);
        BigDecimal sum = unity.divide(x, RoundingMode.DOWN);
        BigDecimal xpower = new BigDecimal(sum.toString());
        BigDecimal term = null;

        boolean add = false;

        for (BigDecimal n = new BigDecimal("3"); term == null ||
                term.compareTo(BigDecimal.ZERO) != 0; n = n.add(TWO)) {

            xpower = xpower.divide(x.pow(2), RoundingMode.DOWN);
            term = xpower.divide(n, RoundingMode.DOWN);
            sum = add ? sum.add(term) : sum.subtract(term);
            add = !add;
        }
        return sum;
    }

    public static void main(String[] args) throws Exception {

        int sqrtThis = 3;
        int expectedPercision = 4;

        int intgerAnswer = (int) sqrt(sqrtThis);

        int cantThinkOfVarName = expectedPercision - String.valueOf(intgerAnswer).length();

        boolean done = false;
        int piPrecision = 10000 * expectedPercision;

        Double bestMatch = -1.0;

        while (done == false) {
            BigDecimal PI = pi(piPrecision);
            String piString = PI.toString();

            Pattern p = Pattern.compile(intgerAnswer + "[0-9]{" + cantThinkOfVarName + "}");
            Matcher m = p.matcher(piString);

            Double offset = sqrtThis + 1.0;

            while (m.find()) {
                Double d = Double.parseDouble(m.group(0));
                d = d / Math.pow(10, cantThinkOfVarName);

                if ((int) (d * d) == sqrtThis ||(int) (d * d) == sqrtThis + 1 ) {
                    done = true;

                    Double newOffSet = Math.abs(d * d - sqrtThis);
                    if (newOffSet < offset) {
                        offset = newOffSet;
                        bestMatch = d;
                    }
                }
            }
            piPrecision = piPrecision + piPrecision;
        }

        System.out.println(bestMatch);
    }
}

ইনপুট বাস্তবায়নের মতো মনে হয়নি। কোড পরিবর্তন sqrtThisএবং expectedPercision

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

প্রাথমিক ধারণা, যেহেতু পাই হ'ল অসীম দীর্ঘ-পুনরাবৃত্তি না হওয়া দশমিক সংখ্যা এটির মধ্যে সমস্ত সংখ্যার অনুক্রম অবশ্যই ঘটবে (সম্পাদনা পড়ুন)। তার জন্য আপনার উত্তর পাই এর ভিতরে আছে !! এর মতো আমরা পাই আপনার উত্তরটির সন্ধানের জন্য কেবলমাত্র রেইগেক্স অনুসন্ধান প্রয়োগ করতে পারি। আমরা যদি কোনও ভাল উত্তর খুঁজে পেতে না পারি তবে আমরা যে পাইটি অনুসন্ধান করছি তার মাত্রা দ্বিগুণ করব!

এটি সত্যিই সহজ, বাস্তবে কেউ বলতে পারেন যে এটি পাইয়ের মতোই সহজ :)

সম্পাদনা
পাই এর মধ্যে সীমাবদ্ধ সংখ্যার প্রতিটি ক্রম ধারণ করে প্রমাণিত হয়নি। পাই যে অসীম এবং অ-পুনরাবৃত্তি তা এক্সেলিয়ান দ্বারা প্রমাণিত বিবৃতি যেমন যথেষ্ট প্রমাণ হয় না। তবে অনেক গণিতবিদ বিশ্বাস করেন যে পাইতে সীমাবদ্ধ সংখ্যার প্রতিটি অনুক্রম থাকে।


আমি লক্ষ করতে চাই যে অসীম এবং পুনরাবৃত্তি না হওয়া প্রতিটি ক্রম একটি সংখ্যায় উপস্থিত হয় না। এমন একটি সংখ্যা তৈরি করা বেশ সহজ যা অসীম এবং পুনরাবৃত্তি না করে তবে এর মধ্যে প্রতিটি সম্ভাব্য ক্রম থাকে না, উদাহরণস্বরূপ 0.1011001110001111 ... আমি জানি এটি নিটপিকি, তবে লোকেরা প্রায়শই এই যুক্তিটি ভুলভাবে ব্যবহার করে (পাই সম্ভবত প্রতিটি সম্ভাব্য উপাদান রয়েছে) সিকোয়েন্স যদিও, আমরা কেবল তা নিশ্চিতভাবে জানি না)
এক্সিলিয়ান

@ এক্সেলিয়ান আপনার মন্তব্য অনুসারে একটি স্থির করেছেন, আপনার মন্তব্য এবং আমার সমাধান এখনও পর্যাপ্ত কারণ উভয়কে ব্যাকআপ করার জন্য একটি লিঙ্ক সরবরাহ করেছেন।
সাহার রবিনোভিজ

3

JQuery

এটি সবচেয়ে সঠিক (বোনাস: চিঠিগুলির জন্যও কাজ করে!)

Please enter the number : 
<script>
$("#b").submit(function() 
{

var a = $("#a").val();
a = "&radic;" +a ;
document.write(a);  
});
</script>

এখানে একটি ঝাঁকুনি


3
চ্যালেঞ্জটি খুব আক্ষরিক অর্থে নেওয়া খুব মজাদার নয়। যদিও আমি মনে করি না document.writeএটি যথেষ্ট পরিমাণে কাউন্টার করে।
জন ডিভোরাক

2
@ জনডভোরাক এটি একটি কোড-ট্রোলিং, এই জাতীয় দ্রষ্টব্যগুলি এখানে বৈধ।
এমএমএইচএম

3
@ এমএইচএমডি: তবুও আমরা আশা করি আপনি এখানে সৃজনশীল হবেন। প্রত্যেকে ইতিমধ্যে এটি করেছে, অন্য কিছু করুন। আপনি এইভাবে বেশি উপার্জন পাবেন না।
কনরাড বোরোস্কি

1
@ জানডভোরাক / এক্সফিক্স: সমস্যাটি যদি ন্যূনতম মানদণ্ডগুলি পূরণ করার সময় উত্তরটি মানের তুলনায় কম হয় তবে উত্তরটি কী স্কোর দ্বারা নীচে ডুবে যাওয়ার সমাধান হবে না? (যেহেতু এটি আপনার লিঙ্ক অনুযায়ী ইতিমধ্যে একটি ভুলে যাওয়া সিদ্ধান্তে আছে।)
অ্যান্ড্রু কুনস

1
@ জনডভোরাক: ভালো কথা। এটি বিবেচনা করে, ব্যাখ্যার জন্য ধন্যবাদ!
অ্যান্ড্রু কুনস

3

সি ++

এটি শেষ পর্যন্ত আপনাকে একটি বর্গমূল দেবে।

#include <iostream>
#include <float.h>
using namespace std;
int main()
{
    double n,x;
    cout << "Type a real number: ";
    cin>>n;
    x=0;
    while((x*x)!=n)
    {
        x+=DBL_EPSILON;
    }
    cout << x << endl;
    return 0;
}

প্রশ্নটি আরও ভালভাবে প্রতিবিম্বিত করার জন্য আমি কোড সংশোধন করেছি। আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ ... কোড আপডেট হয়েছে।


যেহেতু আপনি ইতোমধ্যে মেশিন অ্যাপসিলন দ্বারা সীমাবদ্ধ, তাই কেন ব্যবহার x+=1e-16করবেন না ?
কাইল কানোজ

1
@ কাইলিকানোস বা আরও সঠিকভাবে DBL_EPSILON,।
কোল জনসন

3

পাইথন

এই সমাধান:

  1. অ-সংঘবদ্ধ এবং আনুমানিক উত্তর দেয়
  2. ও (এন) এবং কম ধীর এমনকি কম এন
  3. একটি অস্পষ্ট গাণিতিক সম্পর্কের উপর নির্ভর করে

ভক্ষক:

সমষ্টি এন স্বতন্ত্র ইউনিফর্ম [-৫, .৫] এলোমেলো ভেরিয়েবল। পরম মানগুলির গড় গ্রহণ করে স্ট্যান্ডার্ড বিচ্যুতিটি অনুমান করুন। এটি হ'ল, আদর্শ বিচ্যুতি স্কোরটি (এন) এর সাথে আনুপাতিক - এন -> \ ইনফটি। 139 এবং 2.71828 কেবলমাত্র স্কেল ফ্যাক্টর যা নির্ভুলতা নিয়ন্ত্রণ করে এবং এগুলিকে রহস্যময়ী দেখানোর জন্য বেছে নেওয়া হয়েছিল।

কোড:

import math
import random
import sys

def oo(q, j):
    for k in range(j):
        t = -q/2.
        for n in range(q):
            t += random.random()
        yield t

if __name__ == "__main__":
    p = 139 # must be prime
    e = math.exp(1) # a very natural number
    for a in sys.argv[1:]:
        s = int(a)
        m = 0
        for z in oo(p*s, p):
            m += abs(z)
        m /= p
        print("trollsqrt={}, real={}".format(m/e, math.sqrt(s)))

3

সি ++

আপনার প্রশ্নটি সংকলন করে না কারণ আপনি একটি রেখেছেন! শেষে. সি ++ পছন্দ করেন না!
সংকলকটির জন্য এখানে সঠিক প্রশ্ন:

Hi guys, for my class I need to make a number square root but it doesnt work !!HELLPP

ওহ .. এবং মেক ফাইল।

CXX_FLAGS=-std=c++11 -include 26317.def 
LD_FLAGS=-lstdc++ -lm

all: 26317.cpp
  gcc -include math.h -include iostream  $(CXX_FLAGS) $(LD_FLAGS) $^  -o sqrt

এবং 26317.def। এটি ইতিমধ্যে আপনার সংকলক উপস্থিত থাকতে হবে

#define Hi int
#define guys main(int
#define a arg
#define need ;
#define doesnt std::endl;
#define work return
#define number ;
#define HELLPP 0;??>
#define it <<
#define my ??<
#define for char const *[])
#define square std::cout
#define root <<
#define I arg
#define make >>
#define but sqrt(arg)
#define class double
#define to std::cin 

হ্যাঁ, কেউ সঠিক প্রস্তুতির উত্তর আউটপুট করতে -E ব্যবহার করতে পারেন, তবে আপনি যদি জানেন তবে আপনি কীভাবে বর্গক্ষেত্র করতে হয় তাও জানেন। : পি এখানে কিছু সংশোধন। খুব দুর্বল ন্যূনতম সমাধান, কোনও বাউন্ড চেক, কোনও প্রম্পট। টিআইএল যে ট্রিগ্রেফ প্রিপ্রোসেসড হয়।

# 1 "26317.cpp"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "./26317.def" 1
# 1 "<command-line>" 2
# 1 "26317.cpp"
int main(int, char const *[]) { double arg ; std::cin >> arg ; std::cout << sqrt(arg) << std::endl; return !!0;}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.