ক্ষুদ্রতম পূর্ণাঙ্গ ডিস্ক


23

এই চ্যালেঞ্জটি সর্বনিম্ন ডিস্কের সন্ধান করা যা প্রদত্ত কিছু পয়েন্ট রয়েছে। এটিকে কিছুটা জটিল করে তোলা হয়েছে, যদিও এই চ্যালেঞ্জের মধ্যে ডিস্কের স্থানাঙ্ক এবং ব্যাসার্ধ উভয়ই পূর্ণসংখ্যার হতে হবে।

আপনার ইনপুটটি পূর্ণসংখ্যা স্থানাঙ্ক xএবং এর সাথে পয়েন্টগুলির একটি তালিকা হবে y। আপনি এটি টিপলগুলির তালিকা, তালিকার একটি তালিকা বা জোড়া সংগ্রহের উপস্থাপনের অন্য কোনও উপায় হিসাবে নিতে পারেন। xএবং yউভয়ই (সম্ভবত নেতিবাচক) পূর্ণসংখ্যার হবে। প্রতিটি পয়েন্টটি অনন্য হওয়ার গ্যারান্টিযুক্ত এবং কমপক্ষে একটি পয়েন্ট থাকবে।

আপনার আউটপুট তিনটি সংখ্যা, আকারে একটি ডিস্ক হতে হবে X, Yএবং RX, Yএবং Rসমস্ত পূর্ণসংখ্যা Xএবং Yডিস্কের কেন্দ্রকে Rউপস্থাপন করে এবং এর ব্যাসার্ধকে উপস্থাপন করে। প্রতিটি প্রদত্ত পয়েন্ট এবং কেন্দ্রের মধ্যকার দূরত্ব অবশ্যই কম বা সমান হতে Rহবে এবং একটি ছোট সহ এমন ডিস্কের অস্তিত্ব থাকতে হবে Rযা এই শর্তটিকেও সন্তুষ্ট করে।

এটি দেওয়া সম্ভব যে কোনও প্রদত্ত ইনপুটটির জন্য একাধিক সম্ভাব্য সমাধান হবে, আপনার কোডকে অবশ্যই এই ক্ষেত্রে কমপক্ষে একটির আউটপুট আউট করতে হবে।

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

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

Input   (Possible) Output(s)
(x,y)   (X,Y,R)
-------------------------
(0,0)   (0,0,0)
-------------------------
(0,1)   (0,0,1)
(1,0)   (1,1,1)
-------------------------
(1,4)   (4,4,3)
(3,2)
(4,1)
(4,5)
(5,2)
(7,4)
-------------------------
(-1,0)  (0,0,2)
(2,0)   (1,0,2)
-------------------------
(-1,0)  (1,0,2)
(2,1)   (0,1,2)
-------------------------
(0,0)   (1,0,1)
(1,1)   (0,1,1)

সবচেয়ে কম বাইট জেতা



একটি দম্পতি টাইপস পাওয়া, যদি আপনি আমাকে তাদের ইশারা কিছু মনে না করেন: "এই কিছুটা তৈরি করা হয় রত আমি Er ..."; "... ডিস্কের কেন্দ্রকে উপস্থাপন করে এবং আর আই টি এস ব্যাসার্ধকে উপস্থাপন করে ..."; "... এবং এ জাতীয় ডিস্কের অবশ্যই উপস্থিত থাকতে হবে না ..."
জে স্যালা

2
সাধারণত জিনিসগুলি পূর্ণসংখ্যায় তৈরি করা কোড-গল্ফকে আরও সহজ করে তোলে।
ব্যবহারকারী 202729

@ কেভিন ক্রুইজসেন এটি কাকতালীয়ভাবে। ইনপুট যে কোনও ক্রমে হতে পারে।
পাভেল

1
@ পাভেল ইনপুটটি কোনও ক্রমে থাকতে পারে , বা আমরা কোনও ক্রমে ইনপুট নিতে পারি ? যেমনটি রয়েছে, ইনপুটটি কোনও ক্রমে থাকতে পারে এবং আমাদের সমাধানে প্রথমে আমাদের ম্যানুয়ালি বাছাই করা উচিত, বা আমরা ইতিমধ্যে ইনপুটটিকে প্রাক-বাছাই করা নিতে পারি?
কেভিন ক্রুইজসেন

উত্তর:


6

জেলি , 25 24 22 21 20 18 বাইট

«/r»/Œpµ³_²§½ṀĊ,)Ṃ

আমাকে )1 বাইট সংরক্ষণ সম্পর্কে আমাকে জানানোর জন্য @ এরিকথ আউটগলফারকে ধন্যবাদ

2 বাইট সংরক্ষণ করার জন্য @ ডেনিসকে ধন্যবাদ

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

ব্যাখ্যা

«/r»/Œpµ³_²§½ṀĊ,)Ṃ      Main link. Arg: points
                        e.g. [[1,4],[3,2],[3,1]]
«/                      Find minimums by coordinate
                        e.g. [1,1]
   »/                   Find maximums by coordinate
                        e.g. [3,4]
  r                     Inclusive ranges by coordinate
                        e.g. [[1,2,3],[1,2,3,4]]
     Œp                 Cartesian product of the x and y ranges
                        e.g. [[1,1],[1,2],[1,3],[1,4],...,[3,4]]
       µ                    Chain, arg: center
                            e.g. [1,3]
        ³                   Get the original points
                            e.g. [[1,4],[3,2],[3,1]]
         _                  Subtract the center from each
                            e.g. [[0,1],[2,-1],[2,-2]]
          ²                 Square each number
                            e.g. [[0,1],[4,1],[4,4]]
           §                Sum each sublist
                            e.g. [1,5,8]
            ½               Square root of each number
                            e.g. [1,2.24,2.83]
             Ṁ              Find the maximum
                            e.g. 2.83
              Ċ             Round up
                            e.g. 3
               ,            Pair with the center point
                            e.g. [3,[1,3]]
                )       Do the above for all points
                        e.g. [[3,[1,1]],[3,[1,2]],[3,[1,3]],...,[3,[3,4]]]
                 Ṃ      Find the lexicographically smallest pair
                        e.g. [3,[1,1]]

@ ডেনিস ধন্যবাদ! জেলি এর ভেক্টরাইজেশন কখন থেকে সংক্ষিপ্ত তালিকার পুনরাবৃত্তি করেছিল, বা আমি অপসারণের ভুল ব্যাখ্যা দিচ্ছি ?
পূর্বকুডারী

গভীরতা মেলে প্রথমে। আপনি যদি একটি জুড়ি এবং জোড়গুলির একটি অ্যারে রাখেন তবে জুটি সমস্ত জুটির সাথে মিলবে।
ডেনিস

8

ব্র্যাচল্যাগ ভি 2, 19 বাইট

;Az{\-ᵐ~√ᵐ+}ᵐ≤ᵛ√;A≜

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

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

এটি একটি ফাংশন জমা। ইনপুটটি ফর্ম্যাটের বাম আর্গুমেন্ট থেকে ফাংশনে [[x,y],[x,y],…], ফর্মের ডান আর্গুমেন্ট থেকে আউটপুট [r,[[x,y]]]। (আপনি যদি ইনপুটটিতে নেতিবাচক সংখ্যা চেষ্টা করতে চান তবে মনে রাখবেন যে ব্র্যাচল্যাগ _বিয়োগ চিহ্নের জন্য ব্যবহার করে, এটি নয় -। এটি বিভ্রান্তিকর কারণ ফাংশনটির সম্পূর্ণ প্রোগ্রামের মোড়ক যা ব্র্যাচলাগ কমান্ড-লাইন আর্গুমেন্টের সাহায্যে অনুরোধ করে Z, negativeণাত্মক সংখ্যা উপস্থাপন করবে) মধ্যে আউটপুট একটি নিয়মিত বিয়োগ চিহ্ন যান।)

ব্যাখ্যা

;Az{\-ᵐ~√ᵐ+}ᵐ≤ᵛ√;A≜
;A                   Append something
  z                    to every element of the input
   {       }ᵐ        such that for each resulting element:
     -                 Subtracting
    \ ᵐ                  corresponding elements {of the (input, appended) element}
       ~√              and un-squarerooting
         ᵐ               {the result of} each {subtraction}
          +            and summing {the resulting square numbers}
             ≤       {lets us find} a number at least as large as
              ᵛ        every element {of the list of sums}
               √     which can be square-rooted;
                ;A   append the same list as initially to it.
                  ≜  Find the first integer solution to the above, lexicographically.

এটি আকর্ষণীয় যে আমরা ব্র্যাচল্যাগকে কিছু নির্দিষ্ট বৈশিষ্ট্যের মান জানতে বলছি (এই ক্ষেত্রে, একটি ডিস্কের ব্যাসার্ধটি বিন্দুতে কেন্দ্র করে Aযা সমস্ত ইনপুট পয়েন্টগুলিতে ফিট করে) তবে খুব কমই এর উপর প্রয়োজনীয়তা রাখি (আমাদের যা যা প্রয়োজন তা হ'ল) যে ব্যাসার্ধটি একটি সংখ্যা)। যাইহোক, ব্র্যাচল্যাগটি কংক্রিট সংখ্যাগুলি ব্যবহার করার চেষ্টা করার চেয়ে প্রশ্নটির মধ্যে ব্যাসার্ধকে অভ্যন্তরীণভাবে গণনা করবে, সুতরাং চূড়ান্ত পৌঁছে গেলে এটি একবারে দুটি জিনিস সম্পাদন করে: প্রথমত, এটি নিশ্চিত করে যে কেবল Aব্যাসার্ধের ব্যাসার্ধের জন্য এবং ব্যাসার্ধের জন্য ব্যবহৃত হবে (বর্গাকার ব্যাসার্ধটি একটি বর্গাকার সংখ্যা হিসাবে বাধ্য করা, এবং এর ব্যবহারের ব্যাখ্যা দিয়ে≤ᵛ একটি "সর্বাধিক বা তার চেয়ে বড়" ); দ্বিতীয়ত, এটি ক্ষুদ্রতম সম্ভাব্য व्यवहार्य ব্যাসার্ধের সন্ধান করে (যেমন ব্যাসার্ধটি প্রথম আউটপুটে আসে)।

একটি বিষয় যা প্রোগ্রামে নির্দিষ্টভাবে উল্লেখ করা হয়নি তা হ'ল সমস্ত পয়েন্টগুলি একটি ডিস্কের একই কেন্দ্রের বিপরীতে পরিমাপ করা হয়; লিখিত হিসাবে, এখানে প্রতিবন্ধকতা নেই যা আমরা প্রতিটি পয়েন্টের জন্য আলাদা কেন্দ্র ব্যবহার করি না। যাইহোক, টাইব্রেক আদেশ (যা এই ক্ষেত্রে তৃতীয় দ্বারা নির্ধারিত হয় , এবং যা কাঠামোর সীমাবদ্ধতার দ্বারা বর্ণিত মান সীমাবদ্ধতার আগে মূল্যায়ন করা হবে ) Aযতটা সম্ভব সংক্ষিপ্ত হতে চায় (অর্থাত্ একটি একক উপাদান, তাই আমরা একই ব্যবহার করি) প্রতিটি সময় কেন্দ্র করে; এটি Aপ্রথমে শূন্য দৈর্ঘ্যের চেষ্টা করে তবে স্পষ্টতই এটি কাজ করে না, সুতরাং এটি পরবর্তী একটি সিঙ্গলটন তালিকা চেষ্টা করে)। ফলস্বরূপ, আমরা একটি দরকারী বাধা পেয়ে শেষ করি (আমাদের কাছে কেবল একটি ডিস্ক রয়েছে) "বিনামূল্যে"।

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


3

পার্ল 6 , 81 বাইট

{min [X]([Z]($^p)>>.minmax).map:{$p.map({(@_ Z-$_)>>².sum**.5}).max.ceiling,$_}}

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

2-উপাদানগুলির তালিকা হিসাবে পয়েন্টগুলির একটি তালিকা নেয় ((X1, Y1), (X2, Y2), ...)। একটি তালিকা ফেরত দেয় (R, (X, Y))। Pietu1998 এর জেলি উত্তর হিসাবে একই পন্থা ব্যবহার করে:

[X]([Z]($^p)>>.minmax)  # All possible centers within the bounding box
.map:{ ... }            # mapped to
$p.map({(@_ Z-$_)>>².sum**.5}).max  # maximum distance from any point
.ceiling                # rounded up,
,$_                     # paired with center.
min                     # Find minimum by distance.

minmaxপদ্ধতি হিসাবে একটি ফেরৎ এখানে দরকারী Range। ব্যাপ্তির কার্টেসিয়ান পণ্য সরাসরি সংখ্যার সাথে সমস্ত পয়েন্ট উপার্জন করে।


2

05 এ বি 1 ই , 26 বাইট

øεWsàŸ}`âεUIεX-nOt}àîX‚}{н

@ Pietu1998 এর জেলি উত্তরটির বন্দর ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ø                    # Zip the (implicit) input, swapping the rows and column
                     #  i.e. [[1,4],[3,2],[3,1]] → [[1,3,3],[4,2,1]]
 ε    }              # Map each to:
  W                  #  Push the smallest value (without popping the list)
                     #   i.e. [[1,3,3],[4,2,1]] → [1,1]
   s                 #  Swap so the list is at the top of the stack again
    à                #  Pop the list and push the largest value
                     #   i.e. [[1,3,3],[4,2,1]] → [3,4]
     Ÿ               #  Take the inclusive range of the min and max
                     #   i.e. [[1,2,3],[1,2,3,4]]
`                    # After the map, push both lists separated to the stack
 â                   # And take the cartesian product of the two lists
                     #  i.e. [[1,2,3],[1,2,3,4]]
                     #   → [[1,1],[1,2],[1,3],[1,4],[2,1],[2,2],[2,3],[2,4],[3,1],[3,2],[3,3],[3,4]]
  ε             }    # Map each pair to:
   U                 #  Pop and store the current value in variable `X`
    I                #  Push the input
     ε     }         #  Map each pair in the input to:
      X              #   Push variable `X`
       -             #   Subtract it from the current pair
                     #    i.e. [3,2] - [1,3] → [2,-1]
        n            #   Take the square of each
                     #    i.e. [2,-1] → [4,1]
         O           #   Sum the lists
                     #    i.e. [4,1] → 5
          t          #   Take the square-root of each
                     #    i.e. 5 → 2.23606797749979
            à        #  Pop the converted list, and push its largest value
                     #   i.e. [[3.0,2.23606797749979,2.0],[2.0,2.0,2.23606797749979],...,[2.0,2.0,3.0]]
                     #    → [3.0,2.23606797749979,...,3.0]
             î       #  Round it up
                     #   i.e. [3.0,2.23606797749979,...,3.0] → [3.0,3.0,3.0,4.0,4.0,3.0,3.0,4.0,4.0,3.0,3.0,3.0]
              X     #  Pair it with variable `X`
                     #   i.e. [[3.0,[1,1]],[3.0,[1,2]],...,[3.0,[3,4]]]
                 {   # After the map, sort the list
                  н  # And take the first item (which is output implicitly)
                     #  i.e. [[3.0,[1,1]],[3.0,[1,2]],...,[3.0,[3,4]]] → [3.0,[1,1]]

2

মতলব, 73 বাইট

function g(x);[r,~,d]=fminimax(@(a)pdist2(x,a),[0 0]);[round(r) ceil(d)]

কেবলমাত্র সর্বাধিকতম সমাধান (ভাসমান পয়েন্ট) এবং নিকটতম বিন্দু থেকে বৃত্তাকার এবং সীমা ব্যাসার্ধ (মিনিম্যাক্স সমস্যার জন্য সবচেয়ে খারাপ ক্ষেত্রে) সন্ধান করুন। আমি নিশ্চিতভাবে জানি না যে এটি যদি সম্ভাব্য সকল ক্ষেত্রে (যথাযথতার মধ্যে) সঠিক সমাধান দেয় তবে পরীক্ষার ক্ষেত্রে এটি কাজ করা উচিত (যদি আমি টাইপিংয়ের ত্রুটি না করি)।

সাথে কল করুন

g([1 4;3 2;4 1;4 5;5 2;7 4])

(0,0),(1,1)fminimax(0.5,0.5)(1,1)2/21(0,0)

আপনি সঠিক, তবে ফিনিমিক্সের আউটপুট [0.500000211699422 0.499999788525202], সুতরাং এটি সঠিকভাবে গোল হয়। সুতরাং আমি এখানে ভাগ্যবান। আমি বর্তমানে ভাবছি কীভাবে এই সমস্যাটিকে পাশ কাটাবেন (কারণ এটি কেবল খাঁটি ভাগ্যের সাহায্যে কাজ করে)।
জোনাস

2

পাইথ , 34 33 বাইট

hSm+.EeSm@s^R2-Vdk2Qd*Fm}FhM_BSdC

আউটপুট ফর্ম হয় [R,x,y]

এটি এখানে অনলাইনে চেষ্টা করুন , বা এখানে সমস্ত পরীক্ষার কেস একবারে যাচাই করুন

hSm+.EeSm@s^R2-Vdk2Qd*Fm}FhM_BSdCQ   Implicit: Q=eval(input())
                                     Trailing Q inferred
                                CQ   Transpose (group x and y coordinates separately)
                       m             Map each in the above, as d, using:
                              Sd       Sort d
                            _B         Pair with its own reverse
                          hM           Take the first element of each, yielding [min, max]
                        }F             Generate inclusive range
                     *F              Cartesian product of the above two lists, yielding all coordinates in range
  m                                  Map each coordinate in the above, as d, using:
        m          Q                   Map each coordinate in input, as k, using:
              -Vdk                       Take the difference between x and y coordinates in d and k
           ^R2                           Square each
          s                              Sum
         @        2                      Take the square root
      eS                               Take the largest of the result
    .E                                 Rounded up
   +                d                  Prepend to d
 S                                   Sort the result, first element as most significant
h                                    Take first element

সম্পাদনা: আউটপুট ফর্ম্যাটটি, পূর্ববর্তী সংস্করণটিকে পুনরায় সাজিয়ে একটি বাইট সংরক্ষণ করা হয়েছে:

heDm+d.EeSm@s^R2-Vdk2Q*Fm}FhM_BSdC


2

ওল্ফ্রাম ভাষা (গণিত) , 66 বাইট

এখানে একটি নিষ্ঠুর শক্তি পদ্ধতির। আমি অনেক খাটো BoundingRegion[#,"MinDisk"]&ফাংশন বিবেচনা করেছি তবে পূর্ণসংখ্যার স্থানাঙ্ক এবং ব্যাসার্ধকে জোর করার কোনও উপায় নেই।

Minimize[{r,RegionWithin[{x,y}~Disk~r,Point@#]},{x,y,r},Integers]&

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


খুশী হলাম। কিন্তু, কীভাবে {Round@#[[1]], Ceiling@#[[2]]} &@BoundingRegion[#, "MinDisk"]&?
ডেভিডসি

@ ডেভিডসি, কেন্দ্রের বৃত্তাকার এটি স্ক্রার্ট [2] /2=.707 অবধি সরিয়ে ফেলতে পারে তবে সিলিংটি গ্রহণ করা এটিকে মোকাবেলা করার জন্য ব্যাসার্ধের পর্যাপ্ত দৈর্ঘ্য যোগ করবে না। আমি মনে করি যে ব্যর্থতার একটি উদাহরণ কেবল দুটি পয়েন্ট হবে {{0,0}, {11,11}
কেলি লোডার

আমি বুঝছি তুমি কি বলতে চাও!
ডেভিডসি

2

জাভা 10, 283 279 277 257 বাইট

C->{int M=1<<31,m=M,X=M,Y=M,x=M-1,y=x,t,a,b,r[]={x};for(var c:C){x=(t=c[0])<x?t:x;X=t>X?t:X;y=(t=c[1])<y?t:y;Y=t>Y?t:Y;}for(;y<=Y;y++)for(t=x;t<=X;r=m<r[0]?new int[]{m,t,y}:r,m=M,t++)for(var c:C){a=c[0]-t;b=c[1]-y;a*=a;m=(a=(int)Math.ceil(Math.sqrt(a+=b*=b)))>m?a:m;}return r;}

-20 বাইট ব্যবহার করার জন্য @ নেলহোফের টিপকে ধন্যবাদ জানায় Math.hypot

ফলাফল-অ্যারে ক্রম হয় [R,X,Y]

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

ব্যাখ্যা:

C->{                  // Method with 2D int-array as parameter & int-array as return-type
  int M=1<<31,        //  Minimum `M`, starting at -2,147,483,648
      m=M,            //  Temp integer, starting at -2,147,483,648 as well
      X=M,            //  Largest X coordinate, starting at -2,147,483,648 as well
      Y=M,            //  Largest Y coordinate, starting at -2,147,483,648 as well
      x=M-1,          //  Smallest X coordinate, starting at 2,147,483,647
      y=x,            //  Smallest Y coordinate, starting at 2,147,483,647 as well
      t,a,            //  Temp integers, starting uninitialized
      r[]={x};        //  Result-array, starting at one 2,147,483,647
  for(var c:C){       //  Loop over the input-coordinates
    x=(t=c[0])<x?t:x; //   If the X coordinate is smaller than `x`, change it
    X=t>X?t:X;        //   If the X coordinate is larger than `X`, change it
    y=(t=c[1])<y?t:y; //   If the Y coordinate is smaller than `y`, change it
    Y=t>Y?t:Y;}       //   If the Y coordinate is larger than `Y`, change it
 for(;y<=Y;y++)       //  Loop `y` in the range [`y`,`Y`]:
   for(t=x;t<=X       //   Inner loop `t` in the range [`x`,`X`]:
          ;           //     After every iteration:
           r=m<r[0]?  //      If `m` is smaller than the first value:
              new int[]{m,t,y}
                      //       Replace the result with `m,t,y`
             :        //      Else:
              r,      //       Leave `r` unchanged
           m=M,       //      Reset `m` to -2,147,483,648 for the next iteration
           t++)       //      And increase `t` by 1
     for(var c:C)     //    Inner loop over the input-coordinates
       m=(a=(int)Math.ceil(Math.hypot(c[0]-t,c[1]-y)))
                      //     Subtract `t` from the X coordinate;
                      //     subtract `y` from the Y coordinate;
                      //     take the hypot (<- sqrt(x*x+y*y)) of those
                      //     ceil it
                      //     And set `a` to this value
          >m?         //     If `a` is larger than `m`:
           a          //      Set `m` to `a`
          :           //     Else:
           m;         //      Leave `m` unchanged
  return r;}          //  Return the result `r`

1
এর মাধ্যমে আপনি কমপক্ষে 8 বাইট সংরক্ষণ করতে পারেন Math.hypot
nwellnhof

@ ননহ্নহোফ আহ, সম্পূর্ণরূপে ভুলে গেছেন Math.hypot, যা এই চ্যালেঞ্জের জন্য উপযুক্ত! -20 বাইট এখনই। ধন্যবাদ। :)
কেভিন ক্রুইজসেন

1

জাভাস্ক্রিপ্ট, 245 বাইট

a=>{[b,c,d,e]=a.reduce(([j,k,l,m],[h,i])=>[j>h?j:h,k<h?k:h,l>i?l:i,m<i?m:i],[,,,,]);for(f=c;f<b;f++){for(g=e;g<d;g++){s=a.reduce((o,[p,q])=>o>(r=(p-f)**2+(q-g)**2)?o:r);n=n?n[2]>s?[f,g,s]:n:[f,g,s]}}return [n[0],n[1],Math.ceil(Math.sqrt(n[2]))]}

(কিছুটা) আরও পঠনযোগ্য সংস্করণ:

a=>{
    [b,c,d,e]=a.reduce(([j,k,l,m],[h,i])=>[j>h?j:h,k<h?k:h,l>i?l:i,m<i?m:i],[,,,,]);
    for(f=c;f<b;f++){
        for(g=e;g<d;g++){
            s=a.reduce((o,[p,q])=>o>(r=(p-f)**2+(q-g)**2)?o:r);
            n=n?n[2]>s?[f,g,s]:n:[f,g,s]
        }
    }
    return [n[0],n[1],Math.ceil(Math.sqrt(n[2]))]
}

কেবল বাউন্ডিং বাক্সটি সন্ধান করে এবং সেই বাক্সে প্রতিটি সমন্বয় পরীক্ষা করে এটি সেরা কিনা তা পরীক্ষা করে।

প্রতিস্থাপন করে আমি একটি আনুমানিক উত্তর দিয়ে 8 বাইট সংরক্ষণ করতে পারি:

Math.ceil(Math.sqrt(n[2])) সঙ্গে ~~(n[2]+1-1e-9)


গল্ফ করার জন্য আরও কিছু নিশ্চিত আছে তবে জেএস আমার শক্তিশালী স্যুট নয়। এখনও, আপনি গলফ পারেন for(f=c;f<b;f++){for(g=e;g<d;g++){s=a.reduce((o,[p,q])=>o>(r=(p-f)**2+(q-g)**2)?o:r);n=n?n[2]>s?[f,g,s]:n:[f,g,s]}}করতে for(f=c;f<b;f++)for(g=e;g<d;n=n?n[2]>s?[f,g,s]:n:[f,g,s],g++)s=a.reduce((o,[p,q])=>o>(r=(p-f)**2+(q-g)**2)?o:r);। এবং আমি নিশ্চিত যে আপনি স্থানটি সরাতে পারবেন return[
কেভিন ক্রুইজসেন

1
আপনি সম্ভবত কয়েকটি বাইট ব্যবহার করে সংরক্ষণ করতে পারেন Math.hypot
nwellnhof


1

কাঠকয়লা , 65 বাইট

≔Eθ§ι¹ζ≔Eθ§ι⁰ηF…·⌊η⌈ηF…·⌊ζ⌈ζ⊞υ⟦ικ⟧≔Eυ⌈EθΣEιX⁻§λξν²ηI§υ⌕η⌊ηI⌈X⌊η·⁵

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔Eθ§ι¹ζ

এতে Y- স্থানাঙ্কগুলি পান z

≔Eθ§ι⁰η

এর মধ্যে এক্স-কোঅর্ডিনেটস পান h

F…·⌊η⌈ηF…·⌊ζ⌈ζ⊞υ⟦ικ⟧

অন্তর্ভুক্ত সর্বনিম্ন থেকে সর্বোচ্চ পর্যন্ত সর্বোচ্চ অন্তর্ভুক্ত hএবং zসমস্ত সম্ভাব্য ডিস্ক কেন্দ্রের তালিকা তৈরি করে Lo

≔Eυ⌈EθΣEιX⁻§λξν²η

সমস্ত ডিস্ক কেন্দ্রের উপর লুপ করুন, তারপরে সমস্ত মূল পয়েন্টের উপর লুপ করুন, তারপরে উভয় স্থানাঙ্ক, বিয়োগ, বর্গ, যোগফলের উপর লুপ করুন, সর্বাধিক নিন এবং ফলাফলের তালিকাটি সংরক্ষণ করুন।

I§υ⌕η⌊η

সর্বনিম্ন সর্বোচ্চ ব্যাসের অবস্থান সন্ধান করুন এবং সংশ্লিষ্ট ডিস্ক কেন্দ্রটি মুদ্রণ করুন।

I⌈X⌊η·⁵

সর্বনিম্ন সর্বাধিক ব্যাসটি মুদ্রণ করুন, তবে পরবর্তী পূর্ণসংখ্যার জন্য এটি বৃত্তাকার করুন।

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