শতাংশ খুঁজে


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]


3
অ-পূর্ণসংখ্যাগুলি কীভাবে অ্যানারি / গির্জার সংখ্যা হিসাবে আউটপুট হতে পারে?
ডুরকনব

1
@ ডুরকনব সম্ভবত একটি অবিচ্ছিন্ন নম্বর, বিন্দু এবং অন্য একটি আনারি নম্বর?
হাইলি রেডিওঅ্যাকটিভ

যেহেতু আউটপুটটি দুটি দশমিক স্থানে গোল করা যায়, তাই 100 গুণ গোল করে আউটপুট দেওয়াও বৈধ?
অসম্পূর্ণ স্ট্রিং

1
পরীক্ষা ক্ষেত্রে 4 20/2410 হওয়া উচিত
attinat

উত্তর:


6

এপিএল (ডায়ালগ ইউনিকোড) , 9 বাইট এসবিসিএস

বেনামে টাসিট ইনফিক্স ফাংশন। বাম আর্গুমেন্ট হিসাবে সূচী নেয় এবং ডান যুক্তি হিসাবে তালিকাবদ্ধ করে।

100×⌷÷1⊥⊢

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

100 একশত

× বার

 সূচক উপাদান

÷ দ্বারা বিভক্ত

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

5

05AB1E , 6 বাইট

è²O/т*

সূচকে তালিকাভুক্তির পরে একটি সম্পূর্ণ প্রোগ্রাম। 0-ইনডেক্সিং ব্যবহার করে।

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

কিভাবে?

è²O/т*
è      - index (input 1) into (input 2)
 ²     - push 2nd input
  O    - sum
   /   - divide
    т  - push 100
     * - multiply
       - print top of stack

4

আর 28 বাইট

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

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


আমি আর জানি না, কিন্তু এই দেখাচ্ছে না মত এটি কাজ করে (কীভাবে করবেন নিশ্চিত নন নির্বিচারে অ্যারে সঙ্গে Tio তে এটি পরীক্ষা করার জন্য), হিসাবে আপনি উপাদান পুনরুদ্ধার করতে অনুমিত হয় lসূচিতে nদ্বারা, শুধু ডিভাইড n(দেখুন [7, 3, 19], 1testcase )
কেয়ার্ড কইনিরিংহিংহ সেটিং

@ কায়ারডকোইনারিংআহিং আমার খারাপ, একটি টাইপো ছিল ( l[]চারপাশে ভুলে গিয়েছিল n)
নিকো

টিআইও লিঙ্ক পৃষ্ঠায় একটি জিনিস রয়েছে যা এটি আপনার জন্য ফর্ম্যাট করতে পারে।
এসএস আন

4

সি (জিসিসি) , 64 বাইট

0-ইন্ডেক্স। একমাত্র মজাদার বিটটি ছিল উপলব্ধি যা 1e2একটি double, একটি বাইট ওভার সঞ্চয় করা100. !

float f(v,n,t)int*v;{n=v[n];for(t=0;*v;t+=*v++);return n*1e2/t;}

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


এটি অনলাইন চেষ্টা করুন! 59 সি (ঝনঝন) ব্যবহার করে
আজ্টটেকো

4

জাভা (জেডিকে) , 47 বাইট

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

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


কেন আপনি লিখেছেন হয়নি 1e2পরিবর্তে 100? এটি কি কারণ 100পূর্ণসংখ্যা এবং 1e2ভাসমান পয়েন্ট সংখ্যা হিসাবে বিবেচিত হয়?
ইসমাইল মিগুয়েল

1
@ ইসমাইল মিগুয়েল হ্যাঁ: 1e2দ্বৈত প্রকার বহন করে, যা a[i]এবং যোগফলটি নয়। যেহেতু চ্যালেঞ্জটির জন্য ভাসমান পয়েন্ট সংখ্যাগুলি ফিরতে হবে, আমি এটি ব্যবহার করতে পারি can
অলিভিয়ার গ্রাগোয়ার

এটি একটি BiFunction <int- এ [], পূর্ণসংখ্যা, ডাবল> এ পরিবর্তন করুন এবং আপনি এই সঙ্গে 10 বাইট সংরক্ষণ করতে পারেন: (a,i)->1e2*a[i]/IntStream.of(a).sum()। সম্পাদনা:> :( আমার দরিদ্র লাম্বদা তীর
আভি

@ অভি আমদানি এখনও প্রয়োজনীয়, তাই আমাকে লিখতে হবে: (a,i)->1e2*a[i]/java.util.stream.IntStream.of(a).sum()যা 54 বাইট দীর্ঘ। আমার বর্তমান উত্তরটি কেবল 47 বাইট দীর্ঘ। এছাড়াও, a->i->এক বাইট চেয়ে কম (a,i)->
অলিভিয়ের গ্রাগোয়ার

1
@ আভি হ্যাঁ, এগুলি প্রয়োজনীয় , এবং সাধারণত আমদানির পরিবর্তে পুরো শ্রেণীর নাম লিখতে আরও ছোট হয়, তাই আমি এখানে যা করি
অলিভিয়ার গ্রাগোয়ার








2

লাল , 31 29 বাইট

-২ বাইটস এরিকএফকে ধন্যবাদ

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

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


1
(-2 বাইট) এর 1e2পরিবর্তে ব্যবহারের পরামর্শ দেয় 100.0: অনলাইনে চেষ্টা করে দেখুন! । কতটা ভাষা এই কৌশলটি ব্যবহার করতে পারে তা বেশ ঝরঝরে!
এরিকএফ

@ এরিকএফ আপনাকে ধন্যবাদ! আমি এটি তাত্ত্বিকভাবে জানি, তবে যেমনটি মনে হয়, আমি এটি ব্যবহার করতে ভুলে গিয়েছিলাম :)
গ্যালেন ইভানভ


2

স্ক্র্যাচ 3.0 24 23 ব্লক / 239 228 বাইট

-11 বাইটস @ জোকিংকে ধন্যবাদ

বিকল্পভাবে এসবি সিনট্যাক্সে

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 জন বাইট সংরক্ষণ করেছেন @ জোকিংকে ধন্যবাদ

স্ক্র্যাচ এ চেষ্টা করুন

উত্তর ইতিহাস

ওহ স্ক্র্যাচব্লকস, এতক্ষণ কেন?

বিকল্পভাবে এসবি সিনট্যাক্সে

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?
জো কিং

না, কারণ আমি যদি করি তবে এটি শেষ আইটেমটিকে টালাইবে না।
লিক্সাল

ঠিক আছে, আপনি যদি delete n of mআমার মতামতটি সরিয়ে ফেলেন তবে তা হবে
জো কিং

2

পাইথ , 13 বাইট

c*100@hQeQshQ

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

পাইথ ব্যবহার করার সময় প্রথম তাই এখানে বেশ কয়েকটি বড় বড় অপটিমাইজেশন রয়েছে তবে তারা কোথায় আছে তা আমি জানি না ...

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}

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

সহজ সমাধান, যেহেতু আমি প্যারামিটারটিকে সূচকযুক্ত করে ক্যারিড পরামিতিগুলি ব্যবহার করতে পারি না $brotateপরিবর্তে ফাংশনটি ব্যবহার করে দুটি পরামিতি পরিচালনা করতে হবে না এমন একটি মজাদার সমাধান :

{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 বার দ্বিভড সম্পাদন করুন। ( %পাটিগণিত অপারেটরের ব্যাচের বিশেষ অর্থ রয়েছে এবং সাধারণত দ্বিগুণ হওয়া callদরকার তবে ততক্ষণে আরও দ্বিগুণ হওয়া প্রয়োজন requires)

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

ফলাফল এবং দশমিক স্থানগুলি আউটপুট দেয়।

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