আপনার অবস্থান ত্রিপক্ষীয়


11

ভূমিকা

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

চ্যালেঞ্জ

তাদের জন্য 3 পয়েন্ট এবং আপনার দূরত্ব দেওয়া, আপনার অবস্থানের কর্ডিনেটগুলি আউটপুট দিন।

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

শুরু করার ইঙ্গিত:

ব্যাসার্ধ হিসাবে আপনার দূরত্বের সাথে 3 টি পয়েন্টের প্রত্যেকটির চারদিকে একটি বৃত্ত সম্পর্কে চিন্তা করুন।

বিধি

পরীক্ষার মামলা

এখানে একটি পয়েন্টের জন্য ইনপুট ফর্ম্যাটটি স্থানাঙ্কগুলির [[x,y],d]সাথে xএবং yএটির সাথে এটির dদূরত্ব distance এই পয়েন্টগুলির মধ্যে 3 একটি তালিকায় সাজানো আছে। আউটপুট হবে xএবং তারপরে yএকটি তালিকায়।

[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3]
[[[24.234, -13.902], 31.46], [[12.3242, 234.12], 229.953], [[23.983, 0.321], 25.572]] -> [-1.234, 4.567]
[[[973.23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]

আপনি এই পাইথ প্রোগ্রামের সাহায্যে অতিরিক্ত পরীক্ষার কেস তৈরি করতে পারেন । অবস্থান ইনপুটটির প্রথম লাইনে যায় এবং 3 পয়েন্ট নিম্নলিখিত 3 লাইনে থাকে।

শুভ কোডিং!


যেহেতু এটি একটি দ্বি-মাত্রিক কার্টেসিয়ান বিমানের সাথে ফিট করা দরকার, কোডটি যতটা সম্ভব সংক্ষিপ্ত হওয়া দরকার।
wizzwizz4

আপনি স্পষ্টতই নিখুঁত ফলাফল ব্যবহার করছেন যা এখনও অস্পষ্টতার কারণ হতে পারে, আমাদের কীভাবে এটি পরিচালনা করা উচিত?
flawr

@ ফ্লোয়ার কেবলমাত্র ধরে নিন যে সমস্ত ফলাফল নির্ভুল এবং অনন্য। আপনার প্রোগ্রামটি খুব কম দশমিক জায়গার ক্ষেত্রে কাজ করা উচিত, অস্পষ্টতার বিষয়ে চিন্তা করবেন না। আমি যখন বাসায় আসছি তখন আমি চ্যালেঞ্জটি পরিষ্কার করব।
ডেনকার 20'16

যেহেতু গৃহীত উত্তর কার্যকরভাবে কেবল একটি গ্রাফিকিং ক্যালকুলেটর, তাই আমি উল্লেখ করব যে টিআই-বেসিক (k৮ কে সংস্করণ) -এ একটি 96 বাইট সমাধান রয়েছে। স্পষ্ট করে বলতে কি, solve(তিনটি বৃত্তের সমীকরণ দেওয়া) সমস্যাটিকে তুচ্ছ করা হচ্ছে? আমি ভেবেছিলাম এটি ছিল তবে আপনি যদি এই জাতীয় জিনিসগুলির সাথে ঠিক থাকেন তবে আমি এগিয়ে যাব এবং এটি পোস্ট করব।
ফক্স

উত্তর:


4

ডেসমোস, 122 বাইট

অনলাইন ব্যবহার । প্রতিটি সমীকরণকে একটি সমীকরণ বাক্সে অনুলিপি করুন, প্রতিটি বাক্সের জন্য "সমস্ত যুক্ত করুন" ক্লিক করুন, তার পরে ছেদ বিন্দুতে ক্লিক করুন, তারপরে প্রতিটি মান যথাযথভাবে প্রবেশ করুন। প্রতিটি A, Bএবং Cপয়েন্টের জন্য দূরত্বের হয় (a,b), (c,d)এবং (E,f)যথাক্রমে। মানটিতে একটি বর্গমূল পেতে, sqrtবাক্সে মানটি টাইপ করুন ।

\left(x-a\right)^2+\left(y-b\right)^2=AA
\left(x-c\right)^2+\left(y-d\right)^2=BB
\left(x-E\right)^2+\left(y-f\right)^2=CC

প্রথম পরীক্ষার কেস যাচাই করুন

অথবা আপনি এখানে একবার দেখে নিতে পারেন:

চেনাশোনা!


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

1
@ ডেনারএফে আমি আসলে এই সম্পর্কে আগে মেটাতে একটি প্রশ্ন জিজ্ঞাসা করেছি এবং এটি অবশ্যই গণনা করে।
কনর ও'ব্রায়েন

2
ঠিক আছে, তারপরে আমার উপভোগ করুন :)
ডেনকার

আমি বাইট গণনা বিতর্ক। আপনি নিখরচায় মোড়ে ক্লিক করুন, যা সঠিক বলে মনে হচ্ছে না।
lirtosiast

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

4

সি, 362 348 345 বাইট

ইনপুট stdin স্থান বিভাজিত ভাসে একটা ক্রম হিসেবে দেওয়া হয়: x1 y1 d1 x2 y2 d2 x3 y3 d3। আউটপুট stdout- এ অনুরূপ হল: x y

#define F"%f "
#define G float
#define T(x)(b.x*b.x-a.x*a.x)
typedef struct{G a;G b;G c;}C;G f(C a,C b,G*c){G x=b.b-a.b;*c=(T(a)+T(b)-T(c))/x/2;return(a.a-b.a)/x;}main(){C a,b,c;G x,y,z,t,m;scanf(F F F F F F F F F,&a.a,&a.b,&a.c,&b.a,&b.b,&b.c,&c.a,&c.b,&c.c);x=f(a,a.b==b.b?c:b,&y);z=f(b.b==c.b?a:b,c,&t);m=t-y;m/=x-z;printf(F F"\n",m,x*m+y);}

Cএমন কাঠামোর ধরণ যার সদস্যরা এক্স-কো-অর্ডিনেট a, ওয়াই-কোঅর্ডিনেট bএবং একটি দূরত্ব (ব্যাসার্ধ) c। ফাংশনটি fদুটি Cকাঠামো এবং একটি ভাসমানের দিকে একটি পয়েন্টার নেয় এবং C(বৃত্ত) ছেদ করা রেখাটি নির্ধারণ করে । এই লাইনের ওয়াই-ইন্টারসেপ্টটি পয়েন্ট-টু ফ্লোটে স্থাপন করা হয়েছে এবং slালটি ফিরে আসবে।

প্রোগ্রামটি fদুটি জোড়া চেনাশোনাগুলিতে কল করে, তারপরে উত্পাদিত লাইনের ছেদটি নির্ধারণ করে।


যেহেতু আমরা স্পষ্ট করে দিয়েছি যে ইনপুটগুলি কোলাইনারি নয়, fউত্পাদিত লাইনগুলি কখনও সমান্তরাল হবে না। পরীক্ষাগুলি নিশ্চিত করা হয় যে সেগুলিও উল্লম্ব নয়, যেহেতু আমি স্লোপ-ইন্টারসেপ্ট ফর্মটি ব্যবহার করছি। এইভাবে, সর্বদা ঠিক একটি উত্তর থাকে।
ফক্স

2

পাইথন - 172

ফর্মের টিপলগুলির একটি তালিকা হিসাবে ইনপুট নেয় (x, y, d)। আপনি যদি আরও আরও গল্ফ করার কোনও উপায় দেখেন তবে আমাকে জানান, আমার মনে হয় অবশ্যই সেখানে থাকতে হবে তবে আমি এটি বুঝতে পারি না!

import numpy as N
def L(P):
    Z=[p[2]**2-p[0]**2-p[1]**2 for p in P];return N.linalg.solve([[P[i][0]-P[0][0],P[i][1]-P[0][1]]for i in[1,2]],[(Z[0]-Z[i])*0.5 for i in [1,2]])

আপনি এখানে কিছু সাদা জায়গা বাদ দিতে পারেন। যেমন কিছু উদাহরণ -1 if 1 else 1হতে পারে -1if 1else 1। এটি বন্ধনীগুলির সাথেও কাজ করে here এমন কয়েকটি জায়গা রয়েছে যেখানে আপনি এর সুবিধা নিতে পারবেন। এছাড়াও .5হিসাবে একই 0.5
ডেনকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.