গাণিতিক অপারেটরগুলি *, /, +, -, a কোনও শূন্য সংখ্যাটি 1 এ রূপান্তর করতে ব্যবহার করা যেতে পারে?


118

আমি সফ্টওয়্যার (ওরাকল Siebel) যে শুধুমাত্র অপারেটরদের সঙ্গে জাভাস্ক্রিপ্ট এক্সপ্রেশন সংখ্যাবৃদ্ধি সমর্থন করে, বিভক্ত করা, বিয়োগ, যোগ দিয়ে কাজ করছি, এবং XOR যাও ( *, /, -, +, ^)। আমার কাছে অন্য অপারেটর যেমন নেই !বা ? :উপলভ্য নয়।

উপরোক্ত অপারেটরগুলি ব্যবহার করে, কোনও সংখ্যাটি যদি শূন্য নন তবে এটি 1-তে রূপান্তর করা এবং যদি এটি ইতিমধ্যে শূন্য থাকে তবে এটি 0 ছেড়ে দেওয়া সম্ভব? সংখ্যাটি ইতিবাচক, শূন্য বা নেতিবাচক হতে পারে।

উদাহরণ:

var c = 55;

var d;  // d needs to set as 1

আমি চেষ্টা c / c, কিন্তু এটা মূল্যায়ণ NaNযখন c0. dচাহিদা যখন 0 হতে c0।

সি একটি মুদ্রার মান এবং এটিতে সর্বোচ্চ দুটি পেছনের অঙ্ক এবং 12 টি শীর্ষস্থানীয় অঙ্ক থাকবে।

আমি ifএকটি সংখ্যাটি বুলিয়ান 0 বা 1 তে রূপান্তর করে এবং তারপরে এক্সপ্রেশনটির অন্যান্য অংশগুলিকে গুণ করে একটি শর্ত অনুকরণ করার চেষ্টা করছি ।


3
মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
স্যামুয়েল লিউ

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


2
@ ডেরিকমোলার মনে হয় সিয়েবল ভিবি এবং সিয়েবেল ইস্ক্রিপ্টের মধ্যে একটি পার্থক্য রয়েছে। পরবর্তীকালে, এটি খানিকটা জোরযুক্ত । আমি নিশ্চিত না যে এখানে দুজনের মধ্যে কোনটি প্রয়োগ হয়।
ক্রিস

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

উত্তর:


149

c / (c + 5e-324)কাজ করা উচিত. (ধ্রুবকটি 5e-324হ'ল Number.MIN_VALUE, ক্ষুদ্রতম প্রতিনিধিত্বমূলক ধনাত্মক সংখ্যা)) x যদি 0 হয়, তবে ঠিক 0, এবং x যদি ননজারো হয় (প্রযুক্তিগতভাবে, x কমপক্ষে 4.45014771701440252e-308, যা ক্ষুদ্রতম অ-শূন্য সংখ্যাটি অনুমোদিত প্রশ্ন, ০.০১, হ'ল), জাভাস্ক্রিপ্টের ভাসমান-পয়েন্ট গণিতটি উত্তরটির চেয়ে 1 টির চেয়ে আলাদা হওয়ার পক্ষে খুব অপ্রয়োজনীয়, তাই এটি ঠিক 1 হিসাবে প্রকাশিত হবে।


1
আপনাকে প্রথমে এক্সপ্রেশনটি বোলে রূপান্তর করতে হবে, যেহেতু ওপি 0 এবং 1 এর সাথে other parts of the expressionc / (c + 5e-324) * some_expression
গুণন

28
একটি বাগ নিয়ে সেখানে
সেটিকে

1
@ মিডিনোক হ্যাঁ, তবে প্রশ্নটি আরও বলেছে যে দশমিক পয়েন্টের পরে কখনই 2 টির বেশি হবে না এবং 324 2
জোসেফ সিবল-রিইনস্টেট মনিকা

1
এটি আকর্ষণীয় এবং এটি ওপির পক্ষে কাজ করতে পারে তবে কোনও দলে কাজ করার সময় আমি এই জাতীয় কোডটি দেখতে সত্যিই ঘৃণা করি। খুব কমপক্ষে, এটি ভাল নথিভুক্ত এবং পরীক্ষা করা উচিত।
এরিক ডুমিনিল

1
@ জোসেফসিবল আমি জানি, তবে আপনি যদি সত্যিই সেভাবে নেন তবে সর্বাধিক সুস্পষ্ট উত্তরটি হওয়া উচিত Number(Boolean(n)), যা কোনও অপারেটর ব্যবহার করে না। আমি বলিনি যে এটি ওপি উত্তরটি খুঁজছিল তা নয়, তবে ওপি বর্ণিত প্রশ্নের উত্তর নয়। সম্ভবত প্রশ্নের উন্নতি করা উচিত।
ব্যবহারকারী 5532169

216

এক্সপ্রেশন ব্যবহার করুন n/n^0

যদি nশূন্য না হয়:

 Step    Explanation
------- -------------------------------------------------------------------------------
 n/n^0   Original expression.
 1^0     Any number divided by itself equals 1. Therefore n/n becomes 1.
 1       1 xor 0 equals 1.

যদি nশূন্য হয়:

 Step    Explanation
------- -------------------------------------------------------------------------------
 n/n^0   Original expression.
 0/0^0   Since n is 0, n/n is 0/0.
 NaN^0   Zero divided by zero is mathematically undefined. Therefore 0/0 becomes NaN.
 0^0     In JavaScript, before any bitwise operation occurs, both operands are normalized.
         This means NaN becomes 0.
 0       0 xor 0 equals 0.

আপনি দেখতে পাচ্ছেন, সমস্ত অ-শূন্য মানগুলি 1 তে রূপান্তরিত হয় এবং 0 0 এ থাকে। এটি জাভাস্ক্রিপ্টে NaN^00 হ'ল সত্যটি উপস্থাপন করে ।

ডেমো:

[0, 1, 19575, -1].forEach(n => console.log(`${n} becomes ${n/n^0}.`))


45
টিআইএল: Number.NaN ^ n === nও_ও ( nসীমাবদ্ধ সংখ্যাটি কোথায় )
শুক্রবার

17
দেখে মনে হচ্ছে যখন বিটওয়াইজ অপারেন্ড হিসাবে ব্যবহার করা NaNহয় তখন স্বাচ্ছন্দ্যে শূন্যে রূপান্তরিত হয়। দেখুন: অ-সংখ্যাগুলিতে
বিটওয়াস

3
@ জারকিমস সম্ভবত ~~NaN === 0আরও প্রাকৃতিক বলে মনে হচ্ছে
বার্গি

8
@ এনরিকোবোর্বা এটি এক্সপেনশনেশন নয় (যা ব্যবহার করে **), এটি খানিকটা XOR। বিটওয়াইজ অপারেশনগুলির জাভাস্ক্রিপ্টে খুব কম প্রাধান্য রয়েছে তাই বিভাগটি প্রথম ঘটবে।
ক্রিস

3
^বিটওয়াইজ এক্সওর অপারেটর। অন্যান্য সন্দেহভাজন ^অপারেটর যখন অপারেটিং সিস্টেমের মধ্যে বিটওয়াইজ জোর থাকে তবে আমি সন্দেহ করি । এটি সম্ভবত ক্ষয়ক্ষতি অপারেটর ( **জাভাস্ক্রিপ্টে)।
সালমান এ

17

(((c/c)^c) - c) * (((c/c)^c) - c) alwaysণাত্মক এবং ধনাত্মকগুলির জন্য সর্বদা 1 এবং 0 এর জন্য 0 আসবে।

এটি নির্বাচিত উত্তর এবং তার চেয়ে দীর্ঘ সময়ের চেয়ে অবশ্যই বিভ্রান্তিকর। তবে আমার মনে হচ্ছে এটি কম হ্যাকি এবং ধ্রুবকগুলির উপর নির্ভর করে না।

সম্পাদনা: @ জোসেফসিবিলে হিসাবে উল্লেখ করা হয়েছে, খনি এবং @ ক্রিসের সংস্করণ যা কমেন্টস ব্যবহার করে না তার একটি আরও কমপ্যাক্ট সংস্করণ হ'ল:

c/c^c-c

ক্রিসের উত্তরটি বেছে নেওয়া হয়নি, জোসেফ সিবল ছিলেন। সমস্ত সততার সাথে আমি পোস্টের পরে পর্যন্ত ক্রিসের উত্তর লক্ষ্য করিনি।
কাইল ওয়ার্ডলে

2
এটি কোনও ধ্রুবক ব্যবহার করে না, কেবলমাত্র অপারেটর এবং প্রদত্ত ভেরিয়েবল।
L3viathan

2
@ জোসেফসিবল c/c^(c-c)ঠিকc
তাভিয়ান বার্নস

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

2
@ টাভিয়ানবার্নস ওপি যা লিখেছেন তা নয়; কেউ প্রশ্ন সম্পাদনা করেছেন। ওপি আসলে যেভাবে জিজ্ঞাসা করেছে আমি তা পুনরুদ্ধার করেছি।
জোসেফ সিবল-রিইনস্টেট মনিকা

2

একটি খুব জটিল উত্তর, তবে একটি যা সীমিত নির্ভুলতার উপর নির্ভর করে না: যদি আপনি x^(2**n)নেন x+2**nতবে এটি সর্বদা x শূন্য x-2**nহলে সমান হবে তবে x এর নবম স্থানে থাকলে এটি সমান হবে । সুতরাং, x = 0 এর জন্য(x^(2**n)-x+2**n)/(2**(n+1) সর্বদা 1 হবে তবে কখনও কখনও এটি x এর জন্য শূন্য হবে! = 0 সুতরাং আপনি যদি (x^(2**n)-x+2**n)/(2**(n+1)সমস্ত এন এর পণ্য গ্রহণ করেন, তবে এক্সওআর 1 এর সাথে আপনি নিজের পছন্দসই ফাংশনটি পাবেন। যদিও আপনাকে প্রতিটি ফ্যাক্টরটি ম্যানুয়ালি কোড করতে হবে। আপনি যদি ভাসমান পয়েন্টগুলি ব্যবহার করেন তবে আপনাকে এটি সংশোধন করতে হবে।

আপনার যদি ==অপারেটর থাকে তবে (x==0)^1কাজ করে।


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