यूनिट्स को डिलीवर करें


10

चुनौती

एसआई आधार इकाइयों की सूची, समीकरणों की सूची और लक्ष्य को देखते हुए, आपको केवल आधार इकाइयों का उपयोग करके लक्ष्य की इकाइयों को प्राप्त करना होगा।

व्युत्पन्न इकाइयाँ

विकिपीडिया से:

इंटरनेशनल सिस्टम ऑफ़ यूनिट्स (SI) सात आधार इकाइयों का एक सेट निर्दिष्ट करता है जहाँ से माप की अन्य सभी SI इकाइयाँ व्युत्पन्न होती हैं। इनमें से प्रत्येक अन्य इकाइयाँ (SI व्युत्पन्न इकाइयाँ) या तो आयाम रहित हैं या जिन्हें आधार इकाइयों की एक या अधिक शक्तियों के उत्पाद के रूप में व्यक्त किया जा सकता है।

उदाहरण के लिए, क्षेत्र की SI व्युत्पन्न इकाई वर्ग मीटर (m 2 ) है, और घनत्व की SI व्युत्पन्न इकाई किलोग्राम प्रति घन मीटर (किलो / मी 3 या किलो मीटर ) 3 ) है।

सात SI बेस इकाइयाँ हैं:

  • एम्पीयर,
  • कैंडेला, सी.डी.
  • केल्विन, के
  • किलोग्राम, किग्रा
  • मीटर, मी
  • तिल, मोल
  • दूसरा, एस

उदाहरण

इनपुट

आधार इकाइयाँ:

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

जावास्क्रिप्ट (ईएस 6), 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])
)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.