আমাকে সাগরে হারিয়েছি আমাকে সাহায্য করুন!


11

ভূমিকা

আজ আমি আমার ক্যানো নিয়ে একা মাছ ধরতে গিয়েছিলাম, দুর্ভাগ্যক্রমে আমি ঘুমিয়ে পড়েছিলাম এবং স্রোত আমাকে দূরে সরিয়ে নিয়েছে, আমি আমার ওয়ারস হারিয়েছি, এখন রাত হয়ে গেছে এবং আমি সমুদ্রের কাছে হারিয়ে গিয়েছি! উপকূল দেখতে পাচ্ছি না তাই আমাকে অবশ্যই অনেক দূরে থাকতে হবে!

আমার কাছে আমার সেল ফোন আছে কিন্তু ত্রুটিযুক্ত কারণ এটি নোনতা পানিতে ভিজে গেছে, মাইক এবং ফোনের স্পিকারটি নষ্ট হয়ে যাওয়ার কারণে আমি কিছু বলতে বা শুনতে পাচ্ছি না, তবে উপকূলের সৈকতে থাকা আমার বন্ধুকে আমি এসএমএস পাঠাতে পারি!

আমার বন্ধুর খুব শক্তিশালী মশাল রয়েছে এবং তিনি আমাকে সঠিক দিকটি দেখানোর জন্য বাঁশের বেতের উপরে এটি উত্থাপন করেছিলেন, তবে আমার কোনও ওয়ার নেই বলে আমি সারি করতে পারছি না, তাই আমি তাকে অবশ্যই বলতে পারি যে তিনি কাউকে পাঠাতে পারেন তাই আমি তাকে বলতে পারি আমাকে ধর!

আমার বন্ধু আমাকে বলেছিল যে তিনি মশালটি সমুদ্রপৃষ্ঠের ১১.৫০ মিটার দূরে রাখছেন, এবং আমি ঠিক দিগন্তের উপরে আলো দেখতে পাচ্ছি। এখন আমি কেবল স্কুল থেকে মনে করেছি যে পৃথিবীর ব্যাসার্ধটি সমুদ্রপৃষ্ঠে 63৩71১ কিলোমিটার হওয়া উচিত এবং আমি আমার ক্যানোতে বসে আছি যাতে আপনি ধরে নিতে পারেন যে আমার চোখও সমুদ্রের স্তরে রয়েছে।

কার্য

যেহেতু স্রোতগুলি মুহুর্তে আমাকে সরিয়ে নিয়েছে, আমার বন্ধু সময়ে সময়ে টর্চ বাড়িয়ে তুলছে (এখন এটি 12.30 মিটার), দয়া করে একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন যা আমার বন্ধুর অবস্থান থেকে দূরত্ব গণনা করতে সহায়তা করবে!

এখানে একটি চিত্র রয়েছে (স্কেল নয়):

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

কমলা বিন্দু লেবেলযুক্ত Mআমি, লাল পয়েন্ট লেবেলযুক্ত Tমশাল। সবুজ রেখাটি এর মধ্যে Mএবং লিনিয়ার দূরত্ব isT

ইনপুট

hসমুদ্রের স্তরে মিটারের মঞ্চের স্ট্যান্ডার্ড ইনপুট থেকে নিন , যা আমি দিগন্তের শীর্ষে দেখতে পাই, দুটি দশমিকের যথাযথতার (1 সেন্টিমিটার বা 0.01 মিটার নির্ভুলতার সাথে) ভাসমান পয়েন্ট সংখ্যা আকারে 0 থেকে 100 পর্যন্ত অন্তর্ভুক্ত।

আউটপুট

আপনার 1 সেন্টিমিটার যথার্থতার সাথে সবুজ লাইনের ইউক্যালিডিয়ান দৈর্ঘ্যটি ফিরিয়ে আনতে হবে। উদাহরণস্বরূপ, যদি আপনি মিটারে আউটপুট নেন তবে দুটি দশমিকের সাথে থাকতে হবে (কমপক্ষে)। আউটপুটটি মিটার বা কিলোমিটার হতে পারে তবে যথার্থতার সম্মান করে।

পরীক্ষার কেস:

মিটারে সমস্ত মান।

11.5 > 12105.08
13.8 > 13260.45

বিধি

সংক্ষিপ্ততম কোড জিতেছে।


ফলাফলটি কি গাণিতিকভাবে সঠিক হতে হবে বা প্রথম 2 দশমিক ঠিক আছে যদি তা ঠিক হয়? আমি বোঝাতে চাইছি যে 2xRxh এর তুলনায় এইচএক্সএইচ ছোট এবং ছোট দূরত্বে অবহেলিত হতে পারে। (আরবি পৃথিবীর ব্যাসার্ধ এবং h টর্চের উচ্চতা)।
11:58 এ কার্যকরযোগ্য

@ সম্ভাব্য প্রথম 2 দশমিকটি ঠিক আছে যদি আপনি মিটারে আউটপুট নেন
মারিও

ইনপুট পরিসীমা কি?
27

@ সম্ভাব্য আপনি ইনপুটটিকে 0 থেকে 100 পর্যন্ত বিবেচনা করতে পারেন (এই ক্ষেত্রে প্রয়োজনীয় / সম্ভবের চেয়েও অনেক বেশি)।
মারিও

1
আপনার কোস্টগার্ড স্ট্যাক এক্সচেঞ্জটি চেষ্টা করা উচিত ছিল - কোড গল্ফার্স আপনাকে মহাসাগর থেকে বেরিয়ে আসতে সহায়তা করতে পারে না, মানুষ!
কর্সিকা

উত্তর:


4

05AB1E ,13 12 10 বাইট

Emigna ধন্যবাদ 2 বাইট সংরক্ষণ করা।

যেহেতু পৃথিবীতে স্থানীয়ভাবে একটি বিমান রয়েছে বলে ওপির ধারণাটি ব্যবহার করে কল করার জন্য কোনও ত্রিকোণমিতিক ফাংশন নেই, তাই এটি একটি 05AB1E সমাধান করা সম্ভব হয়।

•1#oC•+¹*t

           For understanding purposes input is referred to as 'h'
•1#oC•     Push 12742000 [ = 2*R, where R is the radius of earth]
      +    Compute 2*R+h
       ¹*  Multiply by h. Result is (2*R*+h)*h
         t Take the square root of it and implicitly display it

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


1
12742000হিসেবে লেখা যেতে পারে•1#oC•
Emigna

: অবগতির জন্য, 9 বাইট হত •1#oC•+*tমধ্যে 2sable
Emigna

একটি স্ট্রিং কি একটি ... বেস 214 সংখ্যা চিত্রিত করে? 05AB1E কখনও কখনও কখনও এই জাতীয় বিশেষ ফাংশনে ডকুমেন্টেশনের অভাব ভোগ করে। ভাল 2sable উত্তর। কিছুদিন আগে আমি এটি সম্পর্কে জানতে পেরেছি তবে এই প্রশ্নের জন্য এটি ব্যবহার করার বিষয়ে আমি ভাবি নি।
কার্যকর

সঠিক। এটা একটা বেস 10 নম্বর বেস 214. মধ্যে এনকোড করা আছে
Emigna

ফলাফলটি ত্রিকোণমিতির মাধ্যমেও অর্জন করা যায় তবে সম্ভবত এটি দীর্ঘতর।
মারিও

4

পাইথন, 34 26 বাইট:

( -8 বাইটস ওস্যাবলকে ধন্যবাদ! )

lambda i:(i*(i+12742))**.5

একটি বেনামে ল্যাম্বদা ফাংশন। কিলোমিটারে ইনপুট নেয় এবং কিলোমিটারে আউটপুট নেয়। হিসাবে আহ্বান print(<Function Name>(<Input>))


lambda i:(i*(i+12742))**.5আরও খাটো হবে।
11:30 এ কার্যকরযোগ্য

পছন্দ করুন! আমি ঠিক এটি করতে যাচ্ছিলাম। :)
আর কাপ,

তাহলে আছে গাণিতিক সহনশীলতা মধ্যে অমিল দেওয়া iএবং 12742 প্রকাশের সংক্ষিপ্ত করা যাবে, সুতরাং:(i*12742)**.5
Osable

ফলাফলগুলি ভুল। 11.5 মিটার -> 12km ডলার পরিবর্তে ~ 380km
জিবি

@ জিবি প্রোগ্রামটি এর ইনপুটটি কিলোমিটার হিসাবে পড়ছে।
কার্যকরযোগ্য

4

পিএইচপি, 34 বাইট

<?=sqrt((12742e3+$h=$argv[1])*$h);

ভাঙ্গন

   r^2+x^2=(r+h)^2      # Pythagoras base
   r^2+x^2=r^2+2rh+h^2  # right term distributed
       x^2=    2rh+h^2  # -r^2
       x =sqrt(2rh+h^2) # sqrt

এখনও অবধি, এটি পুরানো গণিতের উত্তরের মতো

sqrt(2*6371e3*$h+$h*$h) # to PHP
sqrt(14742e3*$h+$h+$h)  # constants combined
sqrt((14742e3+$h)*$h)   # conjugation to save a byte
((14742e3+$h)*$h)**.5   # same size

এখন যা করা বাকি তা হ'ল ইনপুট =$argv[1]এবং আউটপুট যুক্ত করা <?=- সম্পন্ন


4

ডিসি, 16 11 বাইট:

?d12742+*vp

কিলোমিটারে কমান্ড লাইনের মাধ্যমে ইনপুট দেওয়ার জন্য অনুরোধ জানায় এবং তারপরে কিলোমিটারে দূরত্বকে আউটপুট করে।

ব্যাখ্যা

?           # Prompt for input
 d          # Duplicate the top-of-stack value
  12742     # Push 12,742 onto the stack
       +    # Pop the top 2 values of the stack and push their sum
        *   # Pop top 2 values of the stack and push their product
         v  # Pop the remaining value and push the square root
          p # Output the result to STDOUT

এটি নিম্নলিখিত সুবিধা গ্রহণ করে:

((6371+h)**2-6371**2)**.5 
=> ((6371**2+12742h+h**2)-6371**2)**0.5 
=> (h**2+12742h)**0.5 
=> (h*(h+12742))**0.5


4

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

d h=sqrt$h*(h+12742e3)

ব্যবহার:

Prelude> d 11.5
12105.087040166212

পয়েন্টফ্রি: (২৩ বাইট)

sqrt.((*)=<<(+12742e3))


2

গণিত, 16 বাইট

এর মধ্যে উভয়ই কিলোমিটারে ইনপুট এবং আউটপুট উভয়ের জন্য কাজ করে:

(12742#+#*#)^.5&
((12742+#)#)^.5&

এটি পাইথাগোরাসের একটি সহজ অ্যাপ্লিকেশন problem

   x*x + R*R = (R+h)*(R+h)
=> x*x = (R+h)*(R+h) - R*R
       = R*R + 2*R*h + h*h - R*R
       = 2*R*h + h*h
=>   x = √(2*R*h + h*h)

2

জেলি, জেলির কোড পৃষ্ঠাতে 9 বাইট

আমি একটি গল্ফ ভাষাতে প্রোগ্রাম লিখতে যেতে সিদ্ধান্ত নিয়েছে। অন্যান্য ব্যক্তিরা যেভাবে ব্যবহার করছেন তার চেয়ে আমি কার্যত একটি কার্যকর অ্যালগরিদম পেয়েছি (প্রশ্নটির মতো কমপক্ষে স্বল্প দূরত্বের চেয়ে বেশি) তবে এটির জন্য আক্ষরিক ভাসমান-পয়েন্ট সংখ্যা প্রয়োজন যা জেলি সংক্ষেপে সক্ষম হতে পারে বলে মনে হয় না, তাই পাইথাগোরাস এইটা.

+“Ȯịż’×µ½

ব্যাখ্যা:

 “Ȯịż’     12742000, compressed base-250
+          add to argument
      ×    multiply with original argument
       µ   separator to avoid what would otherwise be a parsing ambiguity
        ½  square root everything seen so far
           implicit output at EOF

প্রয়োজন µবিভাজকের আমাকে উদাসীন করে, তবে আমি মনে করি এটি অনিবার্য নয়; জেলি ইতিমধ্যে 05AB1E এর উপরে একটি বাইট সংরক্ষণ করেছে যাতে কমান্ডগুলির মধ্যে অনেকগুলি কী যুক্তিগুলির প্রয়োজন তা অনুমান করতে সক্ষম হয় তবে এই ক্ষেত্রে এটি শেষ পর্যন্ত সঠিকভাবে অনুমান করতে পারে না, তাই আমার এটির একটি ইঙ্গিত দেওয়ার দরকার ছিল।

জেলি, জেলির কোড পৃষ্ঠাতে 7 বাইট

דȮịż’½

যেমনটি আমি আমার অন্য উত্তরে ব্যাখ্যা করেছি , পাইথাগোরাস সমীকরণের সিরিজটি প্রকৃতপক্ষে প্রশ্নের অন্তর্ভুক্ত দৈর্ঘ্যের তুলনায় আরও ভাল ফলাফল দেয় (কমপক্ষে, তারা উদাহরণের ফলাফলগুলির নিকটবর্তী হয়), এবং এর একটি সংক্ষিপ্ত সূত্রও রয়েছে। আমি এটি লিখতে গিয়ে বুঝতে পেরেছিলাম যে 12742000 এর বর্গমূল আগে থেকে গণনা করার পরিবর্তে আমি প্রথমে 12742000 দ্বারা সংখ্যাটি এবং তারপর একই সময়ে উভয় বর্গমূল করতে পারি ly এটি মূলত সংযোজন ব্যতীত অন্য সূত্রের সমতুল্য এবং এর মতো এটি পূর্ববর্তী প্রোগ্রাম থেকে এটি যোগ করে অপসারণের মাধ্যমে উত্পাদিত হতে পারে। এই দুটি বাইট সংরক্ষণ করে, যেমন এখন unambiguously parses এবং তাই আমরা একটি প্রয়োজন হবে না µকোন।


আমি এই অপ্টিমাইজেশনটি ব্যবহার না করার সিদ্ধান্ত নিয়েছি কারণ আপনি সেন্টিমিটারের (সিএফ। অনুরোধিত আউটপুট) h এর পরিসীমা দেখলে এটি একই মান অর্জন করে না। এটি 05AB1E এ 2 বাইট সাশ্রয় করবে।

অপ্টিমাইজেশনের সাথে, আমি 12105.081577585506 এবং 13260.452480967608 এর আউটপুট পাই; এগুলি পরীক্ষার কেসের আউটপুটটির খুব কাছাকাছি এবং তাদের চারপাশে। ছাড়াই, আমি 12105.087040166212 এবং 13260.459661716106 পেয়েছি, যা আরও দূরে রয়েছে (এবং পরবর্তীটি সেন্টিমিটারে ভুল, 13260.46 এর সাথে গোল করে)। অন্য উত্তরে যেমন বলা হয়েছে, অপ্টিমাইজেশানটি অপ্টিমাইজড কোডের চেয়ে সঠিক মানের কাছাকাছি হওয়ার কারণ ঘটে কারণ এতে দুটি ত্রুটি রয়েছে যা একে অপরকে বাতিল করে দেয়, কেবল এটির বাতিল করার মতো কিছুই নেই।

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

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

1
অনুরোধ করা আউটপুট মিটারে 2 দশমিক। সুতরাং নির্ভুলতা 1 সেন্টিমিটার হতে পারে বলে আশা করা হচ্ছে। প্রশ্নের মন্তব্যে ওপি বলেছেন যে এইচ 100 এর উপরে যেতে পারে।
ব্যবহারযোগ্য


1

টিসিএল, 49 বাইট:

set A [get stdin];puts [expr ($A*($A+12742))**.5]

ঠিক আছে, আমি টিসিএলে একেবারে নতুন, তাই এটিকে গল্ফ করার জন্য কোনও পরামর্শ খুব প্রশংসাযোগ্য। আমার অন্যান্য উত্তরের মত, কিলোমিটারে কমান্ড লাইন ইনপুট এবং কিলোমিটারের আউটপুটগুলির অনুরোধ জানায়। মূলত আমার বিদ্যমান dcএবং pythonউত্তরগুলির একটি টিসিএল অভিযোজন ।


আছে একটি গুলি উপর পেতে অনুপস্থিত গুলি
sergiol

1

x86_64 + এসএসই মেশিন কোড, 16 বাইট

প্রোগ্রামটির বাইটগুলি বাম দিকে রয়েছে (হেক্সাডেসিমালে), এটি পড়তে কিছুটা সহজ করার জন্য ডানদিকে একটি বিচ্ছিন্নতা রয়েছে। এটি এমন একটি ফাংশন যা একক নির্ভুলতা ভাসমান পয়েন্ট সংখ্যাটি গ্রহণ এবং ফিরিয়ে আনার জন্য সাধারণ x86_64 কনভেনশন অনুসরণ করে (এটি% xmm0 এ যুক্তিটি গ্রহণ করে এবং একই রেজিস্টারে তার উত্তর প্রদান করে, এবং% xmm1 এবং% eax অস্থায়ী হিসাবে ব্যবহার করে; কোনও সি প্রোগ্রামগুলি একই কলিং কনভেনশনগুলি ব্যবহার করবে এবং যেমন আপনি কোনও সি প্রোগ্রাম থেকে সরাসরি ফাংশনটি কল করতে পারেন, এটিই আমি এটি পরীক্ষা করেছি)

b8 80 19 5f 45          mov    $0x455f1980,%eax
66 0f 6e c8             movd   %eax,%xmm1
0f 51 c0                sqrtps %xmm0,%xmm0
0f 59 c1                mulps  %xmm1,%xmm0
c3                      retq

এমনকি একটি বিচ্ছিন্নতা সহ, যদিও, এটি এখনও একটি ব্যাখ্যা প্রয়োজন। প্রথমত, সূত্রটি নিয়ে আলোচনা করা মূল্যবান। বেশিরভাগ মানুষ পৃথিবীর বক্রতা উপেক্ষা করছে এবং দূরত্ব পরিমাপ করতে পাইথাগোরাস সূত্র ব্যবহার করছে। আমি এটিও করছি, তবে আমি ধারাবাহিক সম্প্রসারণের আনুমানিক ব্যবহার করছি; আমি কেবল ইনপুটটির প্রথম শক্তির সাথে সম্পর্কিত শব্দটি গ্রহণ করছি এবং তৃতীয়, পঞ্চম, সপ্তম ইত্যাদি শক্তিগুলিকে অগ্রাহ্য করছি যা এই অল্প দূরত্বে সকলের খুব কম প্রভাব ফেলে। (তদতিরিক্ত, পাইথাগোরাস আনুমানিকতা একটি কম মান দেয়, যেখানে সিরিজ সম্প্রসারণের পরবর্তী শর্তগুলি মান হ্রাস করতে সাহায্য করে; যেমন, একটি ছোটখাটো কারণকে উপেক্ষা করে যা কাছাকাছিটিকে ভুল দিকে ঠেলে দেবে, আমি আসলে পাই কম নির্ভুল সূত্র ব্যবহার করে আরও নির্ভুল ফলাফল)) সূত্রটি 7412742000 × √h পরিণত হয়েছে;0x455f1980

পরের জিনিসটি যা মানুষকে বিভ্রান্ত করতে পারে আমি হ'ল কেন আমি বর্গক্ষেত্র এবং গুণকের জন্য ভেক্টর নির্দেশাবলী ব্যবহার করছি; %xmm0এবং %xmm1প্রতিটি চারটি একক নির্ভুলতা ভাসমান পয়েন্ট সংখ্যা রাখতে পারে এবং আমি চারটি উপর অপারেটিং করছি। এখানে যুক্তিটি সত্যই সহজ: তাদের এনকোডিং সম্পর্কিত স্কেলারের নির্দেশাবলীর চেয়ে এক বাইট ছোট orter তাই আমি নিজেকে দুটি বাইট বাঁচানোর জন্য এফপিইউ অতিরিক্ত কাজ স্কোয়ার-রুটিং এবং বহুগুণিত শূন্যগুলির একগুচ্ছ করতে পারি, এমন একটি পদ্ধতিতে যা সাধারণত গল্ফিং ভাষার অ্যালগরিদমের খুব স্মরণীয়। (আমি x86 এসেম্বলবারকে আড্ডারদের গল্ফিং ভাষাটি কিছুক্ষণ আগে আড্ডায় ডেকেছিলাম এবং আমি এখনও সে বিষয়ে আমার মন পরিবর্তন করি নি))

সেখানে থেকে, অ্যালগরিদম খুব সহজ আছে: লোড %xmm1মাধ্যমে √12742000 সঙ্গে %eaxযুক্তি (এবং তিন শূণ্যসমূহ), স্কয়ার রুট সংখ্যাবৃদ্ধি সংশ্লিষ্ট উপাদান (যা মেমরি থেকে এটা লোড হবে চেয়ে বাইট পরিপ্রেক্ষিতে খাটো) %xmm1এবং %xmm0(আমরা শুধুমাত্র যত্ন প্রথম উপাদানটি সম্পর্কে), তারপরে ফিরে আসুন।


1

মিনকোলং v0.15, 22 বাইট

ndd*$r'12742000'*+1MN.

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

n                               gets input in the form of a number
 dd                             duplicates it twice
   *                            multiplies 2 of the duplicates with each other
                                STACK: [h, h*h]
    $r                          swap top two stack values
                                STACK: [h*h, h]
      '12742000'*               push this number and multiply the original input by it
                                STACK: [h*h, h*12742000]
                 +1M            adds the two values and takes their square root
                                STACK: [sqrt(h*h+h*12742000)]
                    N.          output as a number and end program

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