एक त्रिकोण के पहलू अनुपात का मूल्यांकन करें


35

एक त्रिभुज के तीन साइडेलों को देखते हुए, इसके पहलू अनुपात का मूल्यांकन करें। AR ने निम्नलिखित सूत्र दिए हैं:

यहाँ छवि विवरण दर्ज करें

कहा पे

यहाँ छवि विवरण दर्ज करें

समबाहु एक त्रिभुज के करीब है, 1इसके पहलू अनुपात के करीब है। पहलू अनुपात बड़ा या बराबर है1वैध त्रिकोण के लिए ।

इनपुट

इनपुट तीन वास्तविक पॉजिटिव नंबर होते हैं जिन्हें लिस्ट में इनकैप्सुलेट किया जा सकता है या जरूरत पड़ने पर कुछ भी इसी तरह से।

आपके प्रोग्राम को समान मूल्य का उत्पादन करना चाहिए, चाहे वह कोई भी क्रम क्यों न हो जिसमें तीन साइडलेंग्थ इनपुट हैं।

उन तीन संख्याओं को हमेशा एक त्रिकोण के वैध साइडलॉग्स (साइडलाइन के साथ एक की तरह पतित त्रिकोण 1, 1और 2इनपुट के रूप में नहीं दिया जाएगा) होगा। आपको फ़्लोटिंग पॉइंट अशुद्धियों के बारे में चिंता करने की ज़रूरत नहीं है जब मान एक पतित त्रिकोण के बहुत करीब हो जाते हैं (जैसे यह स्वीकार्य है कि आपका प्रोग्राम division by 0इनपुट के लिए त्रुटि करेगा[1, 1, 1.9999999999999999] )।

इनपुट के माध्यम से दिया जा सकता है STDIN, फ़ंक्शन तर्क के रूप में, या समान कुछ भी।

आउटपुट

आउटपुट एक वास्तविक संख्या है 1जो मानक सटीकता के साथ बड़ी या बराबर है जो आपकी भाषा में स्वीकार्य है।

आउटपुट मुद्रित किया जा सकता है STDOUT, किसी फ़ंक्शन से लौटाया जा सकता है , या समान कुछ भी।

परीक्षण के मामलों

Inputs                   Output

  1      1      1         1
  3      4      5         1.25
 42     42   3.14         ≈ 6.9476
 14      6     12         1.575
  6     12     14         1.575
0.5    0.6    0.7         ≈ 1.09375

स्कोरिंग

यह , इसलिए बाइट्स में सबसे कम उत्तर जीतता है।


चाहिए रों हो (ए + बी + ग) / 3 ?
16

3
@ कॉस्ट्रोम नहीं, सूत्र सही है। s त्रिभुज का सेमीपाइमीटर है । आपका सूत्र एक समबाहु त्रिभुज के लिए अपरिभाषित होगा।
घातक

क्या मुझे सिर्फ इनपुट के लिए फ़्लोट्स मिल सकते हैं या क्या मुझे पूर्णांक भी प्राप्त करने की आवश्यकता है?
निकोलग्राफ

@ ErikGolfer エ リ fer fer fer fer fer fer is 42.0इसके बजाय इनपुट करने के लिए स्वीकार्य है 42
घातक

@ भाग्य का शुक्रिया। इसके अलावा, क्या इनपुट सभी हो सकते हैं 0?
निकोलग्राफ

जवाबों:


19

जेली , 6 बाइट्स

यह जवाब Emigna के 05AB1E उत्तर पर आधारित है । डेनिस और लिन को बहुत धन्यवाद इस उत्तर का पता लगाने में उनकी मदद के लिए। गोल्फ सुझाव आपका स्वागत है! इसे ऑनलाइन आज़माएं!

S_Ḥ⁸÷P

Ungolfing

           Implicit argument [a, b, c].
S          Take the sum, a+b+c or 2*s
  Ḥ        Take the double, [2*a, 2*b, 2*c].
 _         Vectorized subtract, giving us [2*(s-a), 2*(s-b), 2*(s-c)].
   ⁸÷      Vectorized divide the initial left argument, the input [a, b, c],
             by [2*(s-a), 2*(s-b), 2*(s-c)].
     P     Take the product giving us the aspect ratio, abc/8(s-a)(s-b)(s-c).

4
6 बाइट्स और आप अभी भी गोल्फ सुझाव चाहते हैं? :
लुइस मेंडो

1
@LuisMendo यदि यह सब संभव है, तो निश्चित है: D
शर्लक

1
"पुश" काफी सही शब्दावली नहीं है; जेली स्टैक-आधारित नहीं है। बल्कि, ⁸÷एक इकाई के रूप में श्रृंखला से बहुत दूर हो जाता है, और इसे इस या कुछ के द्वारा प्रारंभिक बाएं तर्क को विभाजित करने के रूप में पढ़ा जाना चाहिए ।
लिन

1
@ लीन मैं अब कई महीनों से वास्तव में गोल्फ खेल रहा हूं। स्टैक-आधारित शब्दावली दृढ़ता से मेरे मस्तिष्क में है: डी को अब ठीक किया जाना चाहिए।
शरलॉक

56

जेली , 7 बाइट्स

SH_÷@HP

इसे ऑनलाइन आज़माएं!

व्याख्या

यहाँ छवि विवरण दर्ज करें

आइये पढ़ते हैं यह श्रृंखला:

  • निहित तर्क एक सूची है [a, b, c]

  • पहले हम पढ़ते हैं S। यह योग लेता है a + b + c:।

  • फिर, हम पढ़ते हैं H। यह इसे आधा कर देता है (a + b + c)/2:। (यह है s।)

  • फिर, हम एक रंजक _(घटाना) पढ़ते हैं , उसके बाद एक अन्य रंजक। यह एक हुक है : इसमें एक सही तर्क का अभाव है, इसलिए यह इस श्रृंखला को तर्क [a, b, c]देता है, हमें देता है [s-a, s-b, s-c]। (यह यहाँ तालिका में पाँचवीं श्रृंखला पैटर्न है )

  • फिर, हमने डेड-मोनाड जोड़ी को पढ़ा ÷@H। यह एक कांटा है : ÷@तर्क के साथ विभाजन फ़्लिप किया गया है, और Hआधा किया गया है, इसलिए हमारे कार्य मान Hको इस श्रृंखला के तर्क को ÷इसके द्वारा बदल दिया जाता है। यह वेक्टर करता है; हम साथ रह गए [(a/2)/(s-a), (b/2)/(s-b), (c/2)/(s-c)]। (यह यहां तालिका में दूसरा श्रृंखला पैटर्न है ।)

  • अंत में, हम उत्पाद Pप्राप्त कर रहे हैं, हमें प्राप्त कर रहे हैं abc/(8(s-a)(s-b)(s-c))

एक पेड़ जैसा ग्राफ देखें कि लिंक एक साथ कैसे फिट होते हैं।


8
चित्र बहुत अच्छे लग रहे हैं! अच्छा स्पर्श!
डेविड नोव

2
मैंने शीर्ष छवि को खुद से छोटा कर दिया, और दूसरे को एक कड़ी में बदल दिया (जिसका कोई उद्देश्य नहीं था)।
लिन

मैंने छवि देखी और तुरंत सोचा, "अच्छा है, लिन!" इसे पोस्ट करने से पहले ;-)
ETHproductions

7
सबसे अच्छा स्पष्टीकरण मैंने एक जेली कार्यक्रम के बारे में देखा है। मुझे अभी भी समझ में नहीं आया, लेकिन करीब!
स्पर्स

मैंने परीक्षण-केस ´6.0,12.0,14.0` के खिलाफ नमूना चलाया और इसने 1.575 के बजाय `-0.888888888888888888 दिया, जैसा कि परीक्षण-मामलों में दिखाया गया है। क्या यह परीक्षण-मामलों या आपके कोड की समस्या है?
MBaas

13

जेली , 6 बाइट्स

S÷_2Pİ

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

S÷_2Pİ  Main link. Argument: [a, b, c]

S       Sum; compute 2s := a + b + c.
 ÷      Divide; yield [2s ÷ a, 2s ÷ b, 2s ÷ c].
  _2    Subtract 2; yield [2s ÷ a - 2, 2s ÷ b - 2, 2s ÷ c - 2].
    P   Product; yield (2s ÷ a - 2)(2s ÷ b - 2)(2s ÷ c - 2).
     İ  Invert; yield 1 ÷ (2s ÷ a - 2)(2s ÷ b - 2)(2s ÷ c - 2).

आह, और मैंने ³⁴⁵तर्कों के रूप में उपयोग करने की कोशिश की ...
एरिक आउटगोल्फर

11

जावास्क्रिप्ट, 38 बाइट्स

यह एक ( करी गई ) लंबा है:

a=>b=>c=>a*b*c/(b+c-a)/(a+c-b)/(a+b-c)

(यदि आप इसे एक चर पर निर्दिष्ट करते हैं, तो आपको इसे fकॉल करना होगा f(3)(4)(5))


मुझे इसे कुछ सेकंड के लिए मारो :) मन यह समझाते हुए कि प्रश्न द्वारा प्रदान किए गए सूत्र के समान कैसे काम करता है?
कृति लिथोस

@KritiiLithos बस s = 1/2(a+b+c)सूत्र में प्लग करें और सरलीकृत करें: D (जैसे s-a = .5*b+.5*c-.5*a, और .5रद्द करने के तीन कारक 8)
त्रुटी

5
(a,b,c)=>एक ही लंबाई है, और कॉल करने के लिए कम बाइट्स का खर्च;)
ETHproductions

4
लेकिन मुझे करी से प्यार है: D
त्रुटी


8

MATL , 8 7 बाइट्स

tsGE-/p

इसे ऑनलाइन आज़माएं!

व्याख्या

[3 4 5]उदाहरण के रूप में इनपुट का उपयोग करते हैं

t    % Take input implicitly. Duplicate
     % STACK: [3 4 5], [3 4 5]
s    % Sum of array
     % STACK: [3 4 5], 12
G    % Push input again
     % STACK: [3 4 5], 12, [3 4 5]
E    % Multiply by 2, element-wise
     % STACK: [3 4 5], 12, [6 8 10]
-    % Subtract, element-wise
     % STACK: [3 4 5], [6 4 2]
/    % Divide, element-wise
     % STACK: [0.5 1 2.5]
p    % Product of array. Implicitly display
     % STACK: 1.25

8

आर, 34 29 बाइट्स

x=scan();prod(x/(sum(x)-2*x))

स्टड से इनपुट पढ़ता है और आर-वेक्टर के रूप में स्टोर करता है x। फिर हर के आर बनाने के लिए आर के वैश्वीकरण का उपयोग करें।


7

हास्केल, 36 बाइट्स

यह फ़ंक्शन को परिभाषित करता है #जो तीन तर्क लेता है।

(a#b)c=a*b*c/(b+c-a)/(a+c-b)/(a+b-c)

आपको इसे निम्नानुसार कॉल करना होगा: (3#4)5

थोड़ा लंबा लेकिन शायद अधिक गोल्फ:

p=product
f v=p v/p((sum v-).(2*)<$>v)

6

MATLAB, 64 38 25 बाइट्स

यह एक सामयिक कार्य है जो प्रदान किए गए सूत्र को लागू करता है:

@(v)prod(v./(sum(v)-2*v))

यह इनपुट को तीन मानों की एक सूची के रूप में मानता है [3,4,5]। इस उदाहरण का उपयोग निम्नलिखित स्पष्टीकरण में किया गया है:

             sum(v)        = 3+4+5 = 12
             sum(v)-2*v    = 12 - 2*[3,4,5] = 12 - [6,8,10] = [6,4,2]
         v./(sum(v)-2*v))  = [3,4,5] ./ [6,4,2] = [0.5,1,2.5]
    prod(v./(sum(v)-2*v))  = 0.5 * 1 * 2.5 = 1.25

6

गणितज्ञ, 20 बाइट्स

1##&@@(#/(Tr@#-2#))&

इनपुट को तीन मानों की सूची के रूप में लेता है, जिसे #फ़ंक्शन के अंदर संदर्भित किया जाता है। Tr@किसी सूची को प्राप्त करने का सबसे छोटा तरीका है (प्राप्त करने के लिए 2s) और इसके 1##&@@(...)लिए तीन कारकों i/(2s-2i)को गुणा करता हैi हैa, b, c

यदि इनपुट पूर्णांक या परिमेय संख्याएँ हैं, तो आपको एक सटीक परिणाम मिलेगा।



5

OCaml, 51 बाइट्स

fun a b c->a*.b*.c/.(b+.c-.a)/.(a+.c-.b)/.(a+.b-.c)

हाँ, फ़्लोट के लिए अलग ऑपरेटर ...


5

आश्चर्य है , 48 बाइट्स

@@@prod[#0#1#2/1- +#1#0#2/1- +#2#0#1/1- +#2#1#0]

आरआईपी

उपयोग:

(((@@@prod[#0#1#2/1* * - +#1#0#2- +#2#0#1- +#2#1#0])3)4)5

व्याख्या

अन्य भाषाओं में infix ऑपरेटरों की तुलना में फंक्शन कॉल्स वंडर में महंगे हैं। इस वजह से, मैंने सभी शब्दों को एक सरणी में समाहित किया और हर एक शब्द को गुणा करने के बजाय परिणाम का उत्पाद प्राप्त किया। कोड कुछ इस तरह होगा:

(a,b,c)=>product([a,b,c,1/(b+c-a),1/(a+c-b),1/(a+b-c)])

1
हम्म, "आरआईपी" क्यों?
लुइस मेंडू

यह जरूरत से ज्यादा लंबा है / अपेक्षित है
मामा फन रोल

5

दरअसल , 10 8 बाइट्स

यह उत्तर डेनिस के उत्कृष्ट जेली उत्तर पर आधारित है । गोल्फ सुझाव आपका स्वागत है! इसे ऑनलाइन आज़माएं!

;Σ♀/♂¬πì

Ungolfing

     Implicit input [a, b, c].
;    Duplicate [a, b, c].
Σ    sum() to get twice the semiperimeter, 2*s.
♀/   Vectorized divide 2*s by [a, b, c] to get [2*s/a, 2*s/b, 2*s/c].
♂¬   Vectorized subtract 2 to get [2*s/a-2, 2*s/b-2, 2*s/c-2].
π    Get the product of the above to get 8*(s/a-1)*(s/b-1)*(s/c-1).
     This is the same as 8(s-a)(s-b)(s-c)/abc.
ì    Invert to get the aspect ratio, abc/8(s-a)(s-b)(s-c).
     Implicit return.

5

Minecraft 1.8, 1607 बाइट्स + 85 ब्लॉक = 1692 बाइट्स

चेतावनी: गोल्फ नहीं । Golfed अप करने के लिए ले जाएगा 1 / 3 कम blytes।

यहाँ एक टिप्पणी स्क्रीनशॉट है:

यहाँ छवि विवरण दर्ज करें

  • इनपुट हैं a, bऔर c, और आउटपुट हैfin

  • fin, और Minecraft में अन्य सभी चर पूर्णांक हैं, इसलिए मानक Minecraft सटीकता 0 दशमलव अंक है

  • हरे रंग की सीमा: बाईं ओर कमांड ब्लॉक दाईं ओर वाले लोगों के बाद सक्रिय हो जाएंगे, जो सिर्फ चर आरंभीकरण हैं।

  • लीवर (नीचे दाईं ओर ग्रे-ब्राउन आयत) गर्भनिरोधक ट्रिगर है

  • जिस तरह से Minecraft वेरिएबल्स को हैंडल करता है, उसके कारण यह बहुत अधिक लेता है । एक बहुत ही सरलीकृत अवलोकन:

    • /scoreboard objectives add name dummy" name" नामक एक नया चर बनाता है

    • /scoreboard players set @p name numberचर सेट करता nameहै number। संख्या एक वास्तविक संख्या होनी चाहिए, एक चर नहीं।

    • /scoreboard players operation @p name += @p name2nameद्वारा वेतन वृद्धि name2name2एक चर होना चाहिए, एक संख्या नहीं।

      • -=, /=, *=, =और अधिक उपयोग किया जा सकता +=घटती, गुणा, विभाजन, आदि के लिए
  • मैं यहाँ सभी 43 कमांड पोस्ट नहीं करने जा रहा हूँ। यह इस गोल्फिंग में मदद करेगा, लेकिन यह भी मुझे पागल copypasting ड्राइव मदद मिलेगी

  • यदि 1.9 कमांड ब्लॉक का उपयोग किया जाएगा, तो समाधान (कम से कम) 42 ब्लॉकों का कम उपयोग करेगा। यदि एक-अक्षर वाले चर का उपयोग किया जाएगा, तो लगभग 200 बाइट्स बचाए जाएंगे।


4

जावा, 38 बाइट्स

(a,b,c)->a*b*c/(b+c-a)/(a-b+c)/(a+b-c)

परीक्षण और अपुष्ट

public class Pcg101234 {
  interface F {
    double f(double a, double b, double c);
  }
  public static void main(String[] args) {
    F f = (a,b,c)->a*b*c/(b+c-a)/(a-b+c)/(a+b-c);

    System.out.println(f.f(1,1,1));
    System.out.println(f.f(3,4,5));
    System.out.println(f.f(42,42,3.14));
    System.out.println(f.f(14,6,12));
    System.out.println(f.f(6,12,14));
    System.out.println(f.f(0.5,0.6,0.7));
  }
}

झसे आज़माओ!

उत्पादन

1.0
1.25
6.947606226693615
1.575
1.575
1.09375

मुझे लगता है कि (a,b,c)यहाँ थोड़े धोखा है, क्योंकि इसमें किसी प्रकार की जानकारी नहीं है। IMO अंतर्निहित लैंबडा इंटरफेस (आपके मामले में F) को कुल बाइट राशि में गिना जाना चाहिए।
एफ जॉर्ज

4
@ mEQ5aNLrK3lqs3kfSa5HbvsTWe0nIu लैंबडास की भारी सिफारिश की जाती है। इसके अलावा, अधिकांश जावा 8 प्रविष्टियाँ बिना किसी टिप्पणी के इस तरह से काम करती हैं। यदि आप असहमत हैं और मुझे धोखा मानते हैं, तो मैं आपको मेटा में औपचारिक रूप से यह पूछने के लिए आमंत्रित करता हूं कि क्या यह स्वीकार किया जाता है या नहीं। इस बीच, मैंने पिछले जावा 8 उत्तरों पर संरेखित किया।
ओलिवियर ग्रेजायर

4

जेलिफ़िश , 17 16 बाइट्स

1 बाइट बचाने के लिए ज़गरब को धन्यवाद।

p%/*-)/+i
    2%

इसे ऑनलाइन आज़माएं!

व्याख्या

यह डेनिस के उत्तर के समान पारस्परिक सूत्र पर आधारित है ।

अधिक पारंपरिक कार्यात्मक संकेतन में, उपरोक्त कार्यक्रम इस प्रकार है:

print(
  1 / fold(
    multiply,
    fold(add, i) / i - 2
  )
)

iइनपुट सूची कहां है ध्यान दें कि fold(multiply, ...)सिर्फ उत्पाद और fold(add, ...)योग की गणना करता है , इसलिए हम इसे और सरल कर सकते हैं:

print(1 / product(sum(i) / i - 2))

sum(i) / iहुक के माध्यम से कार्यान्वित किया जाता है )/+जो एक बार में दोनों चरणों करने के लिए एक नया एकल समारोह को परिभाषित करता है।


एक हुक के साथ एक बाइट बचाओ ।
ज़गारब

4

Dyalog एपीएल , 10 9 बाइट्स

×/⊢÷+/-+⍨

यह एक अनाम फ़ंक्शन ट्रेन है (कांटे के कांटे का एक भाग), जिसका अर्थ है कि प्रत्येक उप-फ़ंक्शन को निम्न संरचना के अंदर तर्क पर लागू किया जाता है:

 ┌─┴─┐          
×/ ┌─┼───┐      
    ÷ ┌─┼──┐  
      +/ - +⍨

TryAPL ऑनलाइन!

×/ का उत्पाद

तर्क

÷ द्वारा विभाजित

+/ तर्कों का योग

- ऋण

+⍨ तर्कों को दोगुना किया गया (प्रकाशित किया गया)

गणितीय पृष्ठभूमि।

ngn ने बाइट का मुंडन कर दिया।


हाय एडम, pls। अगर मैं इसे भूल जाऊं तो अगले हफ्ते if के बारे में आपसे पूछना याद दिलाता है :-)
MBaas

मुझे पता नहीं है कि "पृष्ठभूमि" लिंक माना जाता है कि इस उत्तर से संबंधित है क्योंकि मुझे वहां कोई एल्गोरिथ्म दिखाई नहीं देता है। इसके अलावा, आप संचालन के आदेश के बारे में कुछ जानकारी जोड़ सकते हैं? मैंने कुछ अलग-अलग भाषाओं में इस उत्तर को संचालन के अलग-अलग क्रम के साथ पुन: पेश करने की कोशिश की है, लेकिन मुझे हमेशा इस प्रश्न से अलग उत्तर मिलता है।
बिल्ली 13

@ ठीक है, यह एल्गोरिथ्म देने का इरादा नहीं था, केवल यह बताने के लिए कि पहलू अनुपात क्या है, क्योंकि विकिपीडिया पर ऐसा कोई पृष्ठ नहीं है। एपीएल दाएं-से-बाएं है, जिसका अर्थ है कि प्रत्येक फ़ंक्शन तर्क के रूप में अपने दाईं ओर जो कुछ भी लेता है। इसलिए, इसे स्पष्टीकरण के रूप में बाएं से दाएं पढ़ा जा सकता है।
Adám


3

डीसी, 49 बाइट्स

5k?dsa?dsb?dsc++2/sslalblc**lsla-lslb-lslc-8***/p

दिए गए सूत्र का प्रत्यक्ष कार्यान्वयन। तीन अलग-अलग लाइनों पर मंगलाचरण पर तीन आदानों के लिए संकेत और अगली पंक्ति के लिए दशमलव बिंदु के बाद 5 अंकों के साथ एक फ्लोटिंग-पॉइंट मान को आउटपुट करता है।

व्याख्या

5k                                                # Set the output precision to 5 digits after the decimal
  ?dsa                                            # Prompt for first input value on first line, duplicate it, and then store it in register `a`
      ?dsb                                        # Prompt for second input, duplicate it, and store it in register `b`
          ?dsc                                    # Prompt for third input, duplicate it, and store it in register `c`
              ++2/ss                              # Sum up the 3 values on the main stack, then divide sum by 2 and store the result in register `s`
                    lalblc**                      # Copy all three values from registers `a`,`b`,`c` onto the main stack, find their product, and push result to top of main stack
                            lsla-                 # Copy value from register `s` onto main stack, subtract register `a`'s value from it, and push result to main stack
                                 lslb-            # Copy value from register `s` onto main stack, subtract register `b`'s value from it, and push result to main stack
                                      lslc-       # Copy value from register `s` onto main stack, subtract register `c`'s value from it, and push result to main stack
                                           8***   # Find the product of the top three values and 8 and then push the result to main stack
                                               /p # Divide the second to top value (a*b*c) by the top of stack value (8*(s-a)*(s-b)*(s-c)), push the result to the main stack, and then output the result to STDOUT

3

टीआई-बेसिक, 11 बाइट्स

इनपुट एक सूची के रूप में होना चाहिए, जैसे {A B C}

prod(Ans)/prod(sum(Ans)-2Ans

शायद यह दृश्य मदद करेगा (याद रखें 2s = a+b+c):

      एबीसी एबीसी एबीसी ठेस (Ans)
---------------- = --------------------- = ----------- -------- = -------------------
8 (sa) (sb) (sc) (2s-2a) (2s-2b) (2s-2c) (a + b + c) (1-2 {a, b, c}) ठेस (राशि) (Ans) -2Ans)



2

फोर्थ, 83 बाइट्स

फ्लोटिंग पॉइंट पैरामीटर मान लेते हैं जो फ्लोटिंग पॉइंट स्टैक पर शुरू होता है। फ्लोटिंग पॉइंट स्टैक पर परिणाम छोड़ता है। Params / लौटने के लिए स्टैक का उपयोग करना Forth के लिए मानक है।

: p 3 fpick ;
: T p p p ;
: f 0 s>f T f- f+ f- T f+ f- f* T f- f- f* 1/f f* f* f* ;

इसे ऑनलाइन आज़माएं - इसमें सभी परीक्षण मामले शामिल हैं

सूत्र का उपयोग करता है a*b*c * 1/ ( -(a+b-c) * -(b+c-a) * (a+c-b) )। बहुत ज्यादा पूरा कार्यक्रम केवल फ्लोटिंग पॉइंट स्टैक का उपयोग कर रहा है। अपवाद नहीं है 3में 3 fpick। इस कार्यक्रम के लिए एक दुभाषिया की आवश्यकता है जो समर्थन करता हैfpick (Ideone काम करता है, repl.it नहीं करता है)।

स्पष्टीकरण: थोड़ा कम गोल्फ वाला

\ 3 fpick takes the 3rd element (0-indexed) and pushes a copy
\ Used to copy parameters on the stack over another number 'x' ( a b c x -> a b c x a b c )
: f3p 3 fpick 3 fpick 3 fpick ;

: f                     \ define a function f
0 s>f f3p f- f+ f-      \ push a zero, copy params, compute 0-(a+b-c)
                        \ the zero allows me to copy (I need an 'x' to jump over)
f3p f+ f- f*            \ copy params and compute -(b+c-a), multiply by previous result
                        \ the negatives miraculously cancel
f3p f- f- f*            \ copy and compute (a+c-b), multiply by previous result
1/f f* f* f* ;          \ take the reciprocal and multiply by a*b*c
                        \ the result is left on the floating point stack

2

ised : 19 बाइट्स

@*$1/@*{@+$1-2.*$1}

के रूप में बुलाओ ised --l 'inputfile.txt' '@*$1/@*{@+$1-2.*$1}' जहां inputfile.txtअंतरिक्ष अलग सरणी के साथ एक फ़ाइल हो सकती है, या- पाइप / स्टड से प्राप्त करने के लिए।

यूनिकोड संस्करण (एक ही बायटेकाउंट लेकिन 3 चार्ट कम):

Π$1/Π{Σ$1-2.*$1}

दुर्भाग्य से, isedइसके इनपुट तर्क वाक्यविन्यास के लिए बहुत सारे वर्णों को बर्बाद करता है।


2

vba, 76

Function r(a,b,c)
s=(a+b+c)/2:r=(a*b*c)/(8*(s-a)*(s-b)*(s-c))
End Function

के साथ बुलाना

? आर (3,4,5)

या के साथ उत्कृष्टता में

= R (5,12,13)


आप @ SuperJedi224 के एल्गोरिथ्म के साथ 6 बाइट्स बचाएंगे:Public Function r(a,b,c):r=a*b*c/(b+c-a)/(a-b+c)/(a+b-c):End Function
steenbergh

2

सी #, 82 बाइट्स

void ar(double a,double b,double c)=>Console.Write(a*b*c/(b+c-a)/(a+c-b)/(a+b-c));

उपयोग:

ar(42, 42, 3.14);


2

k, 19 बाइट्स

{(*/x)%8*/-x-+/x%2}

बाएं से दाएं का मूल्यांकन करता है - सूची x को 2 से विभाजित करें, परिणाम का योग करें और इसे मूल x से घटाएं। उत्तर को नकारात्मक करें और परिणाम का उत्पाद प्राप्त करें और 8. परिणाम भाजक है, अंश सूची का उत्पाद है।


1

लुआ, 45 बाइट्स

a,b,c=...print(a*b*c/(b+c-a)/(a+c-b)/(a+b-c))

भारी जावास्क्रिप्ट के जवाब पर आधारित है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.