ইউনিটগুলি আবিষ্কার করুন


10

চ্যালেঞ্জ

এসআই বেস ইউনিটগুলির একটি তালিকা, সমীকরণের একটি তালিকা এবং একটি লক্ষ্য প্রদত্ত, আপনাকে অবশ্যই কেবল বেস ইউনিটগুলি ব্যবহার করে লক্ষ্যগুলির এককগুলি অর্জন করতে হবে।

উদ্ভূত ইউনিট

উইকিপিডিয়া থেকে:

আন্তর্জাতিক ইউনিটস অফ ইউনিটস (এসআই) সাতটি বেস ইউনিটগুলির একটি সেট নির্দিষ্ট করে যা থেকে পরিমাপের অন্যান্য এসআই ইউনিটগুলি প্রাপ্ত। এই অন্যান্য ইউনিটগুলির প্রত্যেকটি (এসআই উদ্ভূত ইউনিট) হয় মাত্রাবিহীন বা এক বা একাধিক বেস ইউনিটের ক্ষমতার পণ্য হিসাবে প্রকাশ করা যেতে পারে।

উদাহরণস্বরূপ, এসআই প্রাপ্ত ক্ষেত্রের এককটি বর্গমিটার (মি 2 ) এবং ঘনত্বের এসআই উত্পন্ন এককটি প্রতি ঘনমিটার (কেজি / এম 3 বা কেজি এম m3 ) প্রতি কেজি হয় ।

সাতটি এসআই বেস ইউনিট হ'ল:

  • অ্যাম্পিয়ার,
  • ক্যান্ডেলা, সিডি
  • কেলভিন, কে
  • কিলোগ্রাম, কেজি
  • মিটার, মি
  • মোল, মোল
  • দ্বিতীয়, এস

উদাহরণ

ইনপুট

বেস ইউনিট:

d [m]
m [kg]
t [s]

সমীকরণ:

v = d/t
a = v/t
F = m*a
E = F*d

টার্গেট:

E

আউটপুট

E [kg*m*m/s/s]

ইনপুট

বেস ইউনিট:

G [cd]
L [m]
y [A]
a [K]

সমীকরণ:

T = y*y/L
A = T*G

টার্গেট:

A

আউটপুট

A [cd*A*A/m]

বিধি

ইউনিট সর্বদা ফর্ম দেওয়া হবে

a [b]

যেখানে aএকক বড় হাতের অক্ষর বা ছোট বর্ণমালার বর্ণ থাকবে এবং bএটি একটি ইউনিট (এক বা একাধিক অক্ষর) হবে।

সমীকরণটি ফর্মে থাকবে

a = c

কোথায় cএমন অভিব্যক্তি হবে যা কেবল কখনও পূর্বনির্ধারিত ইউনিট এবং অপারেটর *এবং ব্যবহার করবে /

শক্তি প্রসারিত করতে হবে। উদাহরণস্বরূপ, এলাকার ইউনিট আনুষ্ঠানিকভাবে হয় m^2, কিন্তু আপনি এই উপস্থাপিত করে m*m। একই (যেমন গতি নেতিবাচক ক্ষমতা প্রযোজ্য m*s^-1) যা একটি বিভাগ হিসাবে প্রতিনিধিত্ব করা উচিত: m/s। একইভাবে, ত্বরণের জন্য ইউনিটগুলি m/s^2বা m*s^-2, হিসাবে উপস্থাপন করা উচিত m/s/s

আপনাকে কোনও বাতিল করার দরকার নেই। উদাহরণস্বরূপ, একটি আউটপুট C*s/kg/sবৈধ হয় যদিও এটি নিচে বাতিল করা যায় C/kg

সেখানে গুণ জন্য কোন নির্দিষ্ট অনুক্রম হল: kg*s/m, s/m*kg, s*kg/mসকল বৈধ হয় (কিন্তু /m*s*kgঅবৈধ)।

দ্রষ্টব্য: আপনাকে কখনই কোনও উত্পন্ন ইউনিট দ্বারা ভাগ করতে হবে না।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী



ইনপুট (আউটপুট) স্ট্রিং হিসাবে গ্রহণের (দেওয়া) দরকার, বা অন্যান্য ধরণের / কাঠামো, যেমন প্রতীকগুলি গ্রহণযোগ্য?
জুলিয়ান ওল্ফ

@ জুলিয়ানওল্ফ নং, আমি / হে স্ট্রিং হিসাবে থাকতে হবে
বিটা ডেকে

উত্তর:


12

রেটিনা , 50 48 বাইট

 =

+`((.) (.+)\D*)\2(?!\w*])
$1$3
A-2`
](.).
$1

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

ব্যাখ্যা

 =

সমস্ত সামনের চিহ্নগুলি তাদের সামনে স্থান সহ একসাথে সরান। যাহাদের যাহাই হউক না কেন ...

+`((.) (.+)\D*)\2(?!\w*])
$1$3

এটি জ্ঞাত পরিমাণের বিকল্পগুলি সম্পাদন করে। এটি বারবার একটি সংখ্যার সংজ্ঞাটির সাথে মিলে যায় (পরিমাণটি কোনও স্থানের সামনে কোনও অক্ষর এবং তার পরে সংজ্ঞাটি স্ট্রিং), সেই সংখ্যার পরে যেখানে সেই পরিমাণটি ব্যবহৃত হয়, এবং ব্যবহারের জন্য সংজ্ঞাটি সন্নিবেশ করায়। আমরা (যে কোন নিশ্চিত করে সেই ম্যাচ থেকে ইউনিট অগ্রাহ্য ]খেলা শেষে), যাতে আমরা প্রতিস্থাপন না [m]সঙ্গে [[kg]]উদাহরণস্বরূপ। এই প্রতিস্থাপনটির পুনরাবৃত্তি করা হবে যতক্ষণ না রেজেক্স আর মেলে না (যার অর্থ কোনও পরিমাণের ব্যবহার বাকি নেই, এবং সমস্ত লাইন একক হিসাবে প্রকাশিত হয়েছে)।

A-2`

শেষ লাইন বাদে সমস্ত ত্যাগ করুন।

](.).
$1

অবশেষে, বহির্মুখী বর্গাকার বন্ধনীগুলি সরান। মূলত, আমরা প্রথম [এবং শেষটি রাখতে চাই ]তবে অন্য সমস্তটিকে বাতিল করে দিন। যারা অন্যরা সর্বদা মাঝখানে অপারেটরের সাথে উপস্থিত হয়, তাই হয় হয় ]*[বা হিসাবে হয় ]/[। তবে আরও বড় কথা, এগুলি কেবলমাত্র এমন ]দুটি ক্ষেত্রেই অনুসরণ করে যা একটি আরও দুটি চরিত্র অনুসরণ করে। সুতরাং আমরা সমস্ত ]দুটি তার পরে দুটি অক্ষরের সাথে মেলে এবং অপারেটর ধরে রাখতে তিনটি অক্ষরের দ্বিতীয়টির সাথে এটি প্রতিস্থাপন করি।


1

জাভাস্ক্রিপ্ট (ES6), 155 153 152 বাইট

(U,E,T)=>(u={},U.map(x=>u[x[0]]=x.slice(3,-1)),e={},E.map(x=>e[x[0]]=x.slice(4)).map(_=>s=s.replace(r=/[A-z]/g,m=>e[m]||m),s=e[T]),s.replace(r,m=>u[m]))

বেস ইউনিট এবং সমীকরণগুলিকে স্ট্রিংয়ের অ্যারে হিসাবে গ্রহণ করে।

ব্যাখ্যা

// Base Units, Equations, Target
(U,E,T)=>(
    // Map variable names to SI units
    u={},
    U.map(x=>u[x[0]]=x.slice(3,-1)), // x[0] is the variable name,
                                     // x.slice(3,-1) is the unit

    // Map variable names to equations
    e={},
    E.map(x=>e[x[0]]=x.slice(4)) // x[0] is the variable name,
                                 // x.slice(4) is the unit

    // (Initialize return string to the target variable's equation
    // using the (useless) second argument to .map() below)
    // s=e[T]

    // For as many times as there are equations (chained from above),
    .map(_=>
        // Substitute each variable with its equivalent expression
        // if there is one.
        s=s.replace(
            r=/[A-z]/g, // Save this regex for final step.
            m=>e[m]||m
        ),

        // The working string variable is initialized here.
        s=e[T]
    ),

    // Substitute remaining variables with SI units and return. 
    s.replace(r,m=>u[m])
)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.