प्रतिशत ज्ञात करें


15

हमारे पास कुछ समय में अच्छी, आसान चुनौतियाँ नहीं थीं, इसलिए यहाँ हम चलते हैं।

पूर्णांकों की एक सूची से प्रत्येक अधिक से अधिक देखते हुए 0 और इनपुट के रूप में एक सूचकांक, उत्पादन सूची के कुल योग के दिए गए इंडेक्स पर आइटम का प्रतिशत।

आउटपुट होना चाहिए जो आपकी भाषा में तैरता / पूर्णांक के लिए प्राकृतिक प्रतिनिधित्व है (यूनरी, दशमलव, चर्च अंक आदि)। यदि आप किसी भी तरह से आउटपुट को गोल करना चाहते हैं, तो इसका न्यूनतम 2 दशमलव स्थानों पर होना चाहिए (जब उचित हो। 1.2 को गोल करने की आवश्यकता नहीं है , लेकिन 1.20 भी पूरी तरह से स्वीकार्य है)।

अनुक्रमणिका या तो 1-अनुक्रमित या 0-अनुक्रमित हो सकती है, और हमेशा सरणी की सीमा के भीतर होगी।

यह , इसलिए बाइट्स में सबसे छोटा कोड जीतता है!

उदाहरण

1-अनुक्रमित और 2 डीपी तक गोल का उपयोग करना

list, index                    =>         output
[1, 2, 3, 4, 5], 5             => 5 / 15    => 33.33
[7, 3, 19], 1                  => 7 / 29    => 24.14
[1, 1, 1, 1, 1, 1, 1, 1, 1], 6 => 1 / 9     => 11.11
[20, 176, 194, 2017, 3], 1     => 20 / 2410 => 0.83
[712], 1                       => 712 / 712 => 100

या, तीन सूचियों के रूप में:

[[1, 2, 3, 4, 5], [7, 3, 19], [1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 176, 194, 2017, 3], [712]]
[5, 1, 6, 1, 1]
[33.33, 24.14, 11.11, 0.83, 100]

सैंडबॉक्स पोस्ट (अब हटा दिया गया)
caird coinheringaahing

3
गैर-पूर्णांकों को वास्तव में एकात्मक / चर्च अंकों के रूप में कैसे आउटपुट किया जा सकता है?
दरवाज़े

1
@Doorknob शायद एक यूनेरी नंबर, डॉट और एक और अनार्य संख्या है?
HighlyRadioactive

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

1
टेस्ट केस 4 20/2410 होना चाहिए
'

जवाबों:


6

एपीएल (Dyalog यूनिकोड) , 9 बाइट्स SBCS

बेनामी tacit infix फ़ंक्शन। सूचकांक को बाएं तर्क के रूप में और सही तर्क के रूप में सूचीबद्ध करता है।

100×⌷÷1⊥⊢

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

100 एक सौ

× बार

 अनुक्रमित तत्व

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

1⊥ राशि (आधार -1 मूल्यांकन) जलाया

 सही तर्क




5

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

ị÷S}ȷ2×

एक डायडिक लिंक जो एक पूर्णांक, बाईं ओर एक-आधारित सूचकांक और दाईं ओर संख्याओं की एक सूची को स्वीकार करता है जो प्रतिशत प्राप्त करता है।

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

कैसे?

ị÷S}ȷ2× - Link: integer, i; list, L
ị       - (i) index into (L)
   }    - use right argument:
  S     -   sum (L)
 ÷      - divide
    ȷ2  - literal 10^2 = 100
      × - multiply

1
अच्छा! उस बाइट के लिए बाइट जो मेरे पास थी: P
caird coinheringaahing


4

आर 28 बाइट्स

function(n,l)100*l[n]/sum(l)

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


मुझे आर नहीं पता है, लेकिन यह ऐसा नहीं दिखता है कि यह काम करता है (यह सुनिश्चित नहीं है कि यह कैसे मनमाने ढंग से सरणियों के साथ टीआईओ पर परीक्षण करना है), जैसा कि आप lइंडेक्स के तत्व को प्राप्त करने वाले हैं n, न कि केवल विभाजित करके n( [7, 3, 19], 1टेस्टकेस देखें) )
caird coinheringaahing

@cairdcoinheringaahing मेरा बुरा, एक टाइपो था ( l[]चारों ओर भूल गया n)
niko

TIO लिंक पेज पर एक चीज है जो आपके लिए इसे प्रारूपित कर सकती है।
एसएस ऐनी


4

जावा (JDK) , 47 बाइट्स

a->i->1e2*a[i]/java.util.Arrays.stream(a).sum()

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


आपने 1e2इसके बजाय क्यों लिखा 100? क्या ऐसा इसलिए 100है क्योंकि पूर्णांक है और 1e2इसे एक फ्लोटिंग पॉइंट नंबर माना जाता है?
इस्माइल मिगुएल

1
@IsmaelMiguel हाँ: 1e2दोहरे प्रकार का वहन करता है, जो a[i]और राशि नहीं है। चूंकि चुनौती के लिए फ़्लोटिंग पॉइंट नंबर वापस करने की आवश्यकता होती है, इसलिए मैं इसका उपयोग कर सकता हूं।
ओलिवियर ग्रेगोइरे

इसे एक BiFunction में बदलें <int [], Integer, Double> और आप इसके साथ 10 बाइट्स बचा सकते हैं (a,i)->1e2*a[i]/IntStream.of(a).sum():। संपादित करें:> :( मेरा गरीब भेड़ का बच्चा तीर
AVI

@Avi अभी भी आयात की आवश्यकता है, इसलिए मुझे लिखना होगा:, (a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()जो 54 बाइट लंबा है। मेरा वर्तमान उत्तर केवल 47 बाइट्स लंबा है। इसके अलावा, a->i->एक बाइट से कम है (a,i)->
ओलिवियर ग्रेगोइरे

1
@ हां, वे आवश्यक हैं , और आम तौर पर आयात के बजाय पूरी कक्षा का नाम लिखना कम होता है, इसलिए मैं यहां क्या करता हूं
ओलिवियर ग्रेजायर








2

लाल , 31 29 बाइट्स

-2 बाइट्स ErikF को धन्यवाद

func[b i][1e2 * b/:i / sum b]

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


1
(-2 बाइट्स) 1e2इसके बजाय उपयोग करने का सुझाव दें 100.0: इसे ऑनलाइन आज़माएं! । यह बहुत साफ है कि कितनी भाषाएं इस ट्रिक का उपयोग कर सकती हैं!
एरिकएफ

@ErikF धन्यवाद! मैं इसे सिद्धांत रूप में जानता हूं, लेकिन जैसा कि लगता है, मैं इसका इस्तेमाल करना भूल गया :)
गैलेन इवानोव


2

स्क्रैच 3.0 24 23 ब्लॉक / 239 228 बाइट्स

-11 बाइट्स @JoKing की बदौलत

वैकल्पिक रूप से एसबी सिंटैक्स में

when gf clicked
set[s v]to(0
ask()and wait
repeat until<(answer)=(
add(answer)to[m v
ask()and wait
end
set[n v]to(item(length of(n))of(m
repeat(length of((m)-(1
change[s v]by(item(1)of[m v
delete (1)of[m v
end
say(((n)/(s))*(100

11 बाइट्स @JoKing की बदौलत सहेजे गए

इसे खरोंच पर आज़माएं

उत्तर इतिहास

अरे स्क्रैचब्लॉक, इतनी देर क्यों?

वैकल्पिक रूप से एसबी सिंटैक्स में

when gf clicked
set[s v]to(0
ask()and wait
repeat until<(answer)=(
add(answer)to[m v
ask()and wait
end
set[n v]to(item(length of(n))of(m
delete(n)of[m v
repeat(length of(m
change[s v]by(item(1)of[m v
delete (1)of[m v
end
say(((n)/(s))*(100

इसे खरोंच पर आज़माएं

इनपुट के रूप में है:

item1
item2
...
itemN
index

मुझे वास्तव में खुद को ऐसा करना बंद कर देना चाहिए। लेकिन यह है बहुत मज़ा!


आप बदल सकते हैं repeat length of mकरने के लिए length of m-1और अपने आप को बचाने delete n?
जो किंग

नहीं, क्योंकि अगर मैंने किया, तो यह अंतिम आइटम नहीं होगा।
Lyxal

ठीक है, अगर आप delete n of mमेरे द्वारा सुझाए गए तरीके को हटा देते हैं तो यह होगा
जो किंग

2

पायथ , 13 बाइट्स

c*100@hQeQshQ

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

पहली बार Pyth का उपयोग करने से शायद यहाँ कुछ बहुत बड़ी अनुकूलन हो, लेकिन मुझे नहीं पता कि वे कहाँ हैं ...

0-इंडेक्स, इनपुट के रूप में लेता है list, index




1

टीआई-बेसिक , 12 बाइट्स (12 टोकन)

Prompt X
Ans(X)E2/sum(Ans

1 अनुक्रमित

सूची को सूची में ले जाता है Ansऔर उपयोगकर्ता को सूचकांक के लिए संकेत देता है

उदाहरण चलाते हैं

स्पष्टीकरण:

Prompt X         # Prompt the user for the index
Ans(X)E2/sum(Ans
Ans(X)           # The value at the Xth index in the list
      E2         # times 100
        /sum(Ans # Divided by the sum of the list
                 # The result of the last expression in a program is implicitly returned

1

रेटिना 0.8.2 , 102 बाइट्स

\d+
$*
^(1)+((?<-1>.(1+))+)
$3$2
,

\G1
10000$*
;(1+)\1
$1;$1$1
r`.*(\2)*;(1+)
$#1
+`^..?$
0$&
..$
.$&

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण के मामले शामिल हैं। के रूप में इनपुट लेता है index;list,...। स्पष्टीकरण:

\d+
$*

यूनीरी में बदलें।

^(1)+((?<-1>.(1+))+)
$3$2

सूची में सूचकांक।

,

सूची में शामिल हों।

\G1
10000$*
;(1+)\1
$1;$1$1
r`.*(\2)*;(1+)
$#1

10000 से वांछित मूल्य गुणा करें और पहले योग के आधे भाग को जोड़कर गोलाई से विभाजित करें।

+`^..?$
0$&

सुनिश्चित करें कि परिणाम में कम से कम तीन अंक हों।

..$
.$&

दूसरी अंतिम स्थिति में एक दशमलव बिंदु सम्मिलित करें।



1

पर्ल 6 , 21 बाइट्स

{100*@^a[$^b]/@a.sum}

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

सरल समाधान, क्योंकि मैं $bपैरामीटर को अनुक्रमित किए जाने के साथ करी पैरामीटर का उपयोग नहीं कर सकता । rotateइसके बजाय फ़ंक्शन का उपयोग करके एक फ़ननर समाधान, जिसे दो मापदंडों को संभालने की आवश्यकता नहीं है :

{100*.[0]/.sum}o&rotate

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

लेकिन यह दुर्भाग्य से दो बाइट्स लंबा है



1

मठगोल्फ , 7 6 बाइट्स

§\Σ/♀*

0-आधारित अनुक्रमण।

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

स्पष्टीकरण:

§       # Index the (implicit) second input-integer into the first (implicit) input-list,
        # which apparently doesn't pop the list
 \      # Swap so this list is at the top of the stack now
  Σ     # Take the sum of that list
   /    # Divide the earlier number we indexed by this sum
    ♀*  # Multiply it by 100
        # (after which the entire stack joined together is output implicitly as result)

1

आइकन , 53 बाइट्स

procedure f(L,i)
s:=0;s+:=!L&\z
return 1e2*L[i]/s
end

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

यहाँ केवल दिलचस्प बात यह है कि राशि मिल रही है। आइकॉन जेनरेटर रखने वाली पहली भाषाओं में से एक थी। !सूची के सभी मूल्यों को उत्पन्न करता है जो Lकि संचित होते हैं s। आम तौर पर हमें लिखने की आवश्यकता होती है every s+:=!L, लेकिन मैंने बैकट्रैकिंग का उपयोग किया &\z, जो यह जांचता है कि गैर-मौजूद zचर है non-null, जो नहीं है, और थकावट तक सूची से अगले मूल्य को निकालता है।



1

बैच, 111 बाइट्स

@shift
@set s=%*
@call set/as=%s: =+%-%0,s=(%%%0*10000+s/2)/s,h=s%%%%10,t=s/10%%%%10,s/=100
@echo %s%.%t%%h%

सूचकांक के रूप में इनपुट लेता है और कमांड-लाइन तर्कों के रूप में सूचीबद्ध करता है। नोट: केवल से सूचकांक मूल्यों के लिए काम करता है 1के लिए 9बैच की सीमाओं के कारण; एक 0-अनुक्रमित संस्करण लिखा जा सकता है जो पहले 10 तत्वों को अनुक्रमित करने में सक्षम होगा। स्पष्टीकरण:

@shift

सूचकांक को %0और सूची को %1... %9(या कम) पर शिफ्ट करें । हालांकि ध्यान दें कि बैच shiftप्रभावित नहीं करता है %*

@set s=%*

सभी मापदंडों, अंतरिक्ष अलग हो जाओ।

@call set/as=%s: =+%-%0,s=(%%%0*10000+s/2)/s,h=s%%%%10,t=s/10%%%%10,s/=100

स्थान बदलने के लिए +और अंकगणितीय रूप से मूल्यांकन करें, इस प्रकार योग लेते हुए, लेकिन सूचकांक घटाएं। फिर सूची में सूचकांक, 10000 से गुणा करें, योग का आधा जोड़ दें, और योग से विभाजित करें। दशमलव स्थानों को उत्पन्न करने के लिए अंत में 10 बार divmod करें। ( %अंकगणित ऑपरेटर का बैच में विशेष अर्थ है और सामान्य रूप से इसे दोगुना करने की आवश्यकता है, लेकिन callतब एक और दोहरीकरण की आवश्यकता होती है।)

@echo %s%.%t%%h%

परिणाम और दशमलव स्थानों को आउटपुट करें।

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