সংখ্যার নিকটতম মানটি পান


16

এই কোড গল্ফে, আপনাকে তালিকার অন্য একটি থেকে নিকটতম নম্বরটি পাওয়া উচিত।

আউটপুট ইনপুটটির নিকটতম নম্বর হতে পারে।

উদাহরণ:

value: (Input) 5 --- [1,2,3] --- 3

এবং, প্রোগ্রামটি নেতিবাচক সংখ্যাগুলির সাথে কাজ করতে পারে।

উদাহরণ:

value: (Input) 0 --- [-1,3,5] --- -1


value: (Input) 2 --- [1, 5, 3] --- 1 (Because it gives priority to lower numbers)

নিয়মাবলী:

পূর্বে উল্লিখিত হিসাবে, এটি নেতিবাচক সংখ্যা নিয়ে কাজ করতে হবে।

যদি দুটি উত্তর থাকে (উদাহরণ: 0 - [5, -5]), প্রোগ্রামটি সর্বনিম্ন সংখ্যাকে অগ্রাধিকার দেয়। (-5)

এটি কোড গল্ফ তাই সংক্ষিপ্ততম কোড জিতে!


6
এটি নিম্ন সংখ্যাগুলিকে অগ্রাধিকার দেয় যা নিয়মে উল্লেখ করা উচিত।
ডেনিস

যদি তালিকায় লক্ষ্য নম্বর উপস্থিত থাকে তবে আউটপুটটি কি সেই নম্বর বা তালিকা থেকে নিকটতম অন্যান্য নম্বর হওয়া উচিত?
ট্রাইকোপলাক্স

আমি জানি, গৃহীত উত্তরটি অস্থায়ী।
আলেকজিনএফ

4
@ অ্যালেক্স 82২ অবশ্যই, আপনি জানেন যে কোনও ভাল উত্তর এলে আপনি গ্রহণযোগ্য উত্তরটি পরিবর্তন করতে পারবেন তবে কিছু লোক ইতিমধ্যে চ্যালেঞ্জের মুখোমুখি হয়ে গেছে যা ইতিমধ্যে স্বীকৃত উত্তর রয়েছে, কারণ দুর্ভাগ্যক্রমে প্রতিটি চ্যালেঞ্জ লেখক দেরী উত্তরগুলির প্রতি মনোযোগী নয়। সুতরাং তাড়াতাড়ি গ্রহণ করা আসলে খারাপ কিনা তা সম্পর্কে কম কিন্তু লোকেরা ভুল ধারণাটি পাবে কিনা সে সম্পর্কে এটি কম।
মার্টিন এন্ডার

1
ইনপুট সংখ্যাগুলি পূর্ণসংখ্যা হয়?
এলোমেলো

উত্তর:


6

পাইথ, 6 বাইট

haDQSE

পরীক্ষা স্যুট

STDIN এ নিম্নলিখিত ফর্মটি ইনপুট করুন:

num
array

ব্যাখ্যা:

haDQSE
          Implicit: Q = eval(input()) (num)
     E    Evaluate input (array)
    S     Sort (smaller values to the front)
 aDQ      Sort by absolute difference with Q.
h         Take the first element of the sorted list, the min.
          Print implicitly.

6

রুবি, 34 বাইট

->n,a{a.sort.min_by{|x|(n-x).abs}}
a.sort       min_by tiebreaks by position in array, so put smaller numbers 1st
.min_by{|x|  select the element which returns the smallest val for predicate...
(n-x).abs}   (absolute) difference between input num and element

1
আমি মনে করি আপনার # সোর্টের দরকার নেই, যেহেতু মিনি_বায়ি এটি ইতিমধ্যে কমপক্ষে সর্বোচ্চ থেকে সর্বাধিক করে সাজিয়ে রাখবে। সুতরাং, এটি আরও খাটো হতে পারে:->n,a{a.min_by{|x|(n-x).abs}}
টিআইসার

4

গণিত, 12 বাইট

Min@*Nearest

বিল্ট-ইনস এফটিডাব্লু! বুয়েটনার ব্যাখ্যা: "ম্যাথামেটিকার জন্য এটি অন্তর্নির্মিত রয়েছে Nearestতবে এটি সমস্ত বাঁধা সংখ্যার একটি তালিকা ফেরত দেয় Hence তাই, Minটাইটি ভাঙার জন্য আমাদের এটি রচনা করা দরকার ।"


7
ব্যাখ্যাটি লেখার জন্য এটিই আমি পেয়েছি ...
মার্টিন এেন্ডার

1
আপনি কি "অনলাইনে চেষ্টা করে দেখুন" যোগ করতে পারেন?
আলেকজিনএফ

1
@ অ্যালেক্স 82২ গণিতের (যা মালিকানাধীন) অসম্ভব বলে মনে হচ্ছে।
মার্টিন এন্ডার

@ অ্যালেক্স ৮৮ এখানে এটি পরীক্ষা করুন: ল্যাব.ওপেন.ওলফ্রামক্লাউড
অ্যাপ


2

জাভাস্ক্রিপ্ট ES6, 64 56 54 বাইট

(i,a)=>a.sort((a,b)=>s(i-a)-s(i-b)||a-b,s=Math.abs)[0]

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

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

পরীক্ষার স্নিপেট:

f=(i,a)=>a.sort((a,b)=>s(i-a)-s(i-b)||a-b,s=Math.abs)[0];

[
  [5, [1, 2, 3]],
  [2, [3, 5, 1]],
  [2, [1, 3, 5]],
  [0, [-1, 2, 3]],
  [5, [1, 2, 3]]
].map(v=>O.textContent+=JSON.stringify(v)+": "+f.apply(null,v)+"\n")
<pre id=O></pre>


বাছাইগুলিকে একত্রিত করে 2 বাইট সংরক্ষণ করুন:(i,a)=>a.sort((a,b)=>s(i-a)-s(i-b)||a-b,s=Math.abs)[0]
নিল

আপনি আপনার ফাংশনটি কারি করে একটি বাইট সংরক্ষণ করতে পারেন : i=>a=>...তারপরে f(i)(a)আপনি এটি কীভাবে ডাকবেন।
প্যাট্রিক রবার্টস

@ পেট্রিকরোবার্টস এই ক্ষেত্রে আমি না বলব, কারণ ওপি একটি ফাংশন (বা সিমুলিয়ার) চেয়েছে যা মানকে নেয়: inputএবং একটি তালিকা / অ্যারে / ... পূর্ণসংখ্যা হিসাবে
andlrc

2

জেলি, 7 6 বাইট

ạżṛỤḢị

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

কিভাবে এটা কাজ করে

ạżṛỤḢị Main link. Left input: n (number). Right input: A (list)

ạ      Take the asbolute difference of n and the items of A.
  ṛ    Yield the right argument, A.
 ż     Zip the left result with the right one.
       This pairing causes ties in absolute value to be broken by initial value.
   Ụ   Grade up; sort the indices of the resulting list by their associated values.
    Ḣ  Retrieve the first index, which corresponds to the smallest value.
     ị Retrieve the item of A at that index.


1

পাইথন 2, 56 বাইট

a=input()
print sorted(input(),key=lambda x:abs(a-x))[0]

প্রথমে লক্ষ্য নম্বরটি পায় a=input()- এটি একটি ভেরিয়েবলে সংরক্ষণ করতে হবে।

এরপরে এটি lambda x:abs(a-x)প্রয়োগ করা ফাংশনটির সাথে ইনপুটটি সাজায় (মনে করুন map(lambda x:abs(a-x), input()))

এটি তখন কোনও সদৃশ মানগুলির ক্ষেত্রে সর্বনিম্ন মান নেয়


0

টিস্ক্রিপ্ট, 10 বাইট

T#(y-l)a)░

টিস্ক্রিপ্ট অ্যারের ইনপুটটিকে সমর্থন করে না তাই কনসোল চালানোর জন্য: TeaScript("T#y-la)░", [[1, 2, 3], 1], {}, TEASCRIPT_PROPS)রুঁথিস।

ব্যাখ্যা

T#  // Sort input by...
  (y-l)a // absolute difference with input
)░  // First item in array


0

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

e#l=snd$minimum$(zip=<<map(abs.(e-)))l

ব্যবহারের উদাহরণ: 2 # [1,5,3]-> 1

ইনপুট তালিকার প্রতিটি উপাদানের জন্য lইনপুট নম্বর eএবং উপাদানটির সাথে উপাদানটির পরম পার্থক্যটির একটি জুড়ি তৈরি করুন , যেমন e=2, l=[1,5,3]-> [(1,1),(3,5),(1,3)]। সর্বনিম্ন সন্ধান করুন এবং পার্থক্যটি বাতিল করুন।


0

zsh, 75 73 71 70 67 বাইট

for n in ${@:2};{echo "$[$1-n]    $n"}|tr -d -|sort -n|head -1|cut -f2

কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট আশা করে।

নোট করুন যে চারটি স্পেসটি echoআসলে একটি ট্যাব হওয়ার কথা, তবে স্ট্যাক এক্সচেঞ্জ ট্যাবগুলিকে সমস্ত পোস্টের ফাঁকে স্থানান্তরিত করে।

for সিনট্যাক্সের কারণে বাশ-সামঞ্জস্যপূর্ণ নয় ।

for n in ${@:2};      for each argument except the first...
{echo "$[$1-n]\t$n"}  output the difference from the first argument
                        and then the original number
|tr -d -              poor man's abs()
|sort -n              sort by first num (difference), tiebreaking by second num
                        (original value)
|head -1              take the thing that sorted first
|cut -f2              print field 2 (aka discard the difference)

2 বাইটের জন্য দেব-নালকে ধন্যবাদ !


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