রেস্টরুমে শ্রদ্ধাশীল হন


35

অবশ্যই, এসআর নেটওয়ার্কটি কীভাবে রেস্টরুমে শ্রদ্ধাশীল হওয়া যায় তা সম্পর্কে খুব জ্ঞাত, তবে আপনারা যাদের পুনরুদ্ধার করতে চান, শ্রদ্ধাশীল হওয়ার অর্থ টয়লেট ফ্লাশ করা ইত্যাদি Most সবচেয়ে গুরুত্বপূর্ণ, যদিও এটি স্টলটি ব্যবহার করা এতদূর দূরে অন্যের কাছ থেকে সম্ভব।

চ্যালেঞ্জ

স্ট্রিংগুলির মধ্যে একটি স্টলগুলির একটি ব্লুপ্রিন্ট দেওয়া হয়েছে যাগুলি স্ট্রিং হিসাবে ব্যবহৃত হচ্ছে তার ইঙ্গিত সহ, আপনাকে অবশ্যই কোনও ফাংশন বা প্রোগ্রাম থেকে ফিরে বা মুদ্রণ করতে হবে যেখানে আপনার ব্যবসায়ের সবচেয়ে সম্মানজনক জায়গা।

ইনপুট

 0 1 2 3 4 5    <- The stall number which is not actually visible in the input. 
| | |-| |-|-|   <- the stalls

বাম থেকে ডানে বর্ধমান ক্রমে স্টলগুলি সংখ্যাযুক্ত। সর্বদা কমপক্ষে একটি খালি স্টল থাকবে। একটি ইনপুটে 50 টি স্টল থাকতে পারে। আপনি যদি এটিকে পছন্দ করেন তবে আপনি ইনপুটটিকে 0এস এবং 1এস বা বুলিয়ানগুলির একটি অ্যারে বা স্ট্রিং হিসাবেও নিতে পারেন।

ব্যবহৃত স্টলগুলিতে -সেগুলি রয়েছে (পাইপের মধ্যে)।

আউটপুট

যাওয়ার জন্য সবচেয়ে সম্মানজনক স্টলটি হ'ল এটি যা ব্যবহারের তুলনায় গড়ে সবচেয়ে বেশি দূরে। দুটি স্টলের মধ্যে দূরত্ব হ'ল উপরের সংখ্যাগুলির পার্থক্যের নিখুঁত মান।

কেবল পরিষ্কার করে বলা: আপনি সমস্ত স্টল থেকে গড় দূরত্ব খুঁজে পাচ্ছেন - কেবল প্রতিবেশী নয় —

আপনাকে অবশ্যই সবচেয়ে সম্মানজনক স্টলটি খালি দেখতে যেতে আউটপুট করতে হবে ।

উদাহরণ

Input:
|-| |-| OR 101
Output:
1

Input:
| | |-| |-|-| OR 001011
Output:
0

Input:
|-| |-| | | | |-|-| OR 101000011
Output:
1

Input: 
|-| | | | | |-|-| | | | | OR 100000110000
Output:
11

Input:
|-|-|-|-| | | | | | |-| OR 11110000001
Output:
9

Input:
|-| | OR 10
Output:
1

Input:
|-| | |-| OR 1001
Output:
1

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!

আপনি আপনার উত্তরে 0 বা 1 ভিত্তিক সূচক ব্যবহার করতে পারেন - আপনি যাকে পছন্দ করেন; আপনি যদি 1 ভিত্তিক সূচক ব্যবহার করেন তবে অবশ্যই আপনার উত্তরে অবশ্যই তা স্পষ্টভাবে বলতে হবে।


35
" অবশ্যই, এসআর নেটওয়ার্কটি কীভাবে রেস্টরুমে শ্রদ্ধাশীল হওয়া যায় সে সম্পর্কে খুব জ্ঞাত " [উদ্ধৃতি আবশ্যক]
অ্যালেক্স এ।

7
@ অ্যালেক্সা .: এসই নেটওয়ার্কের শিক্ষার স্তর (বা নিজেকে শিক্ষিত করতে) মূল্যায়ন করতে ট্র্যাভেল স্টাটেক্সেক্সচেঞ্জের টয়লেট প্রশ্ন এবং উত্তরগুলি দেখুন ।
জোনাস

30
তবে সকলেই জানেন যে শ্রদ্ধার মানদণ্ডটি ন্যূনতম দূরত্বকে সর্বাধিক করে তোলা , গড় হিসাবে নয় :-)
লুইস মেন্ডো

2
@ ডুপ্প আপনার [1,0,0,1]পরীক্ষার কেস হিসাবে যুক্ত করা উচিত । বন্ধনগুলি সঠিকভাবে ভাঙ্গলে বর্তমান পরীক্ষার কোনওটিই যাচাই করে না।
ডেনিস

8
কেন 1010000111 (4 বা 5 এর পরিবর্তে) ফেরত আসবে?
আমানী কিলুমঙ্গ

উত্তর:


11

জেলি , 10 9 বাইট

JạþTS׬MḢ

1-ভিত্তিক সূচক ব্যবহার করে। এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

JạþTS׬MḢ  Main link. Argument: A (array of Booleans)

J          Yield all indices of A.
   T       Yield all truthy indices of A.
 ạþ        Compute the table of absolute differences.
    S      Compute the sums of all columns.
           For each index, this yields the sum of all distances to occupied stalls.
     ׬    Multiply each sum by the logical NOT of the corresponding Boolean in A.
           This zeroes sums that correspond to occupied stalls.
       M   Maximal; yield an array of all indices of maximal sums.
        Ḣ  Head; extract the first index.

আমি বিশ্বাস করি এটি 9 বাইট নয় 9 অক্ষর characters
রেনি নিফেনিগার

জেলি একটি কাস্টম কোড পৃষ্ঠা ব্যবহার করে যা কেবলমাত্র অক্ষরগুলিকে এনকোড করে এটি প্রতিটি একক বাইট হিসাবে বোঝে। শিরোনামের বাইটস লিঙ্কটি এটিতে ইঙ্গিত করে।
ডেনিস

আমি এই সম্পর্কে অজানা ছিলাম ... এটি নির্দেশ করার জন্য ধন্যবাদ।
রেনেনিফেনিগার

@ ডেনিস আপনি কী একটি স্ব-মন্তব্য ব্যবহারকারী স্ক্রিপ্ট তৈরি করেছেন যাতে আপনি কেবল "জেলি বাইট মন্তব্য" ক্লিক করতে পারেন এবং এটি পোস্ট করবে?
NoOneIsHere

@ ননওআইনি এখানে আমার কাছে সেই ইউজারস্ক্রিপ্ট আছে ( আমার নয় ) তবে আমি এটি এখনও যোগ করি নি। আমার সম্ভবত হওয়া উচিত ...
ডেনিস

6

সুইফ্ট, 158, 157, 128, 100 বাইট

Array<Bool>পরিবর্তনশীল থেকে ইনপুট নেয় i, সর্বশেষ এক্সপ্রেশন থেকে উত্তর দেয় returns

let e=i.characters.map{$0>"0"}.enumerate()
e.flatMap{$1 ?nil:$0}.map{a in(a,e.flatMap{$1 ?$0:nil}.map{abs(a-$0)}.reduce(0){$0+$1})}.maxElement{$0.1 < $1.1}!.0

সম্পাদনা 1:

স্ট্রিং তুলনার মাধ্যমে বিলে রূপান্তর করে একটি বাইট সংরক্ষণ করা হয়েছে

let e=i.characters.map{$0=="1"}.enumerate()
e.flatMap{$1 ?nil:$0}.map{a in(a,e.flatMap{$1 ?$0:nil}.map{abs(a-$0)}.reduce(0){$0+$1})}.maxElement{$0.1 < $1.1}!.0

সম্পাদনা 2:

আমার অ্যালগরিদম পুনরায় কাজ:

let e=i.characters.map{$0=="1"}.enumerate()
e.map{x in(x.0,x.1 ?0:e.reduce(0){$1.1 ?$0+abs(x.0-$1.0):$0})}.max{$0.1<$1.1}!.0

সম্পাদনা 3:

নতুন নিয়মের সুবিধা নিয়েছে যা বুলিয়ান অ্যারে থেকে সরাসরি ইনপুট নিতে দেয়।

let e=i.enumerated()
e.map{x in(x.0,x.1 ?0:e.reduce(0){$1.1 ?$0+abs(x.0-$1.0):$0})}.max{$0.1<$1.1}!.0

Ungolfed:

// for the sake of easier copy/pasting of input, take it as string
let s = "100000110000"

// convert input to true for taken, false for free
// this is the input the golfed version actually uses
let input = s.characters.map{$0>"0"}

// Returns an array of tuples storing the array values (vacancy of the stall) and their index (their location)
let valueIndexPairs = bools.enumerated()

// Returns an array of pairs of locations and their avg distance to others
let locationDistancePairs = valueIndexPairs.map{(valueIndexPair: (Int, Bool)) -> (Int, Int) in

    let averageDistance = valueIndexPairs.reduce(0) {partialSum, otherStall in

        let otherStallIsTaken = otherStall.1

        if otherStallIsTaken {
            //don't let other stalls effect average if they're taken
            return partialSum
        }
        else {
            let thisStallLocation = valueIndexPair.0
            let otherStallLocation = otherStall.0
            let distanceToOtherStall = abs(thisStallLocation - otherStallLocation)
            return partialSum + distanceToOtherStall 
        }       
    }

    //if this stall is taken, treat its average distance to others as 0
    let thisStallsLocation = valueIndexPair.0
    let isThisStallTaken = valueIndexPair.1
    return (thisStallsLocation, isThisStallTaken ? 0 : averageDistance)
}

//find location where average distance is maxiumum
let bestLocationIndexPair = locationDistancePairs.max{$0.1 < $1.1}!

let bestLocation = bestLocationIndexPair.0

print(bestLocation)

2
আমি দ্রুত উত্তরগুলি চাই
ডাউনরেপ_নেশন

এটি শিখতে মজাদার :) যদিও এটি গল্ফের জন্য বেশ বেদনাদায়ক ভাষা বলে মনে হয়। স্ট্যান্ডার্ড লাইব্রেরিটি সত্যই ন্যূনতম (আপনি বেশিরভাগ সময় ফাউন্ডেশনটি ব্যবহার করার উদ্দেশ্যে রেখেছেন), ভাষাটি খুব ভাববাদী হতে বোঝায় এবং এটি স্ট্যাটিকালি টাইপ করা হয়। ক্লোজার সিনট্যাক্সটি যদিও সত্যিই ভাল
আলেকজান্ডার - মনিকা

আমার সম্ভবত এই কোডটি কীভাবে
লল

1
@ ডাউনরেপ_নেশন আপনার আগ্রহের ক্ষেত্রে আমি অবারিত ভেরিসন যুক্ত করেছি
আলেকজান্ডার - মনিকা

আপনার যদি প্রয়োজন হয় বা না হয় তবে "লেট" আইডিকে সরিয়ে সম্ভবত 3 বাইট সংরক্ষণ করুন, তবে আমি যা বুঝতে পারি তার থেকে আপনার "লেট" লাগবে না যা কেবল ধ্রুবক মানের একটি সূচক হিসাবে কাজ করে
রোহান ঝুনঝুনওয়ালা

5

জেলি , 13 বাইট

1-ইন্ডেক্স।

³Tạ⁸S
JUÇÞḟTṪ

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

অ্যালগরিদম

প্রশ্নের নিষ্প্রভ বাস্তবায়ন।


আমার উত্তর +1 এর চেয়ে 16 গুণ কম লোল! (1! == 1)
রোহান ঝুনঝুনওয়ালা

@ রোহানঝুনঝুনওয়ালা আপনি কি বললেন?
লিকি নুন

মূলত জাভা কখনই জেলি দেখার উত্তরগুলির সাথে প্রতিদ্বন্দ্বিতা করতে পারে না যেগুলি 12 বাইট দীর্ঘ (কোনও সম্ভাব্য জাভা প্রোগ্রামের চেয়ে সংক্ষিপ্ত) হাসিখুশি। তাই উপভোগ করুন ..
রোহান ঝুনঝুনওয়ালা

ডি: @LeakyNun তোমার গলফ মিস
রোহান Jhunjhunwala

2
1001 আউটপুট 3 যখন এটি 2 ফিরে আসবে
ড্যানিয়েল

5

জাভা "কেবল" 270 200 196 187 196 138 148 146 বাইট!

4 13 অগনিত বাইট সংরক্ষণ করেছেন লিকি নুনকে ধন্যবাদ! মাইকেল গল্ফডকে 1 বাইট ধন্যবাদ

int m(boolean[]b){int r=0,l=b.length,i,j,k=0,z=r;for(i=0;i<l;i++){if(b[i])for(j=0,k=0;j<l;j++)if(!b[j])k+=i>j?i-j:j-i;if(k>z){r=i;z=k;}}return r;}

Ungolfed

int m(int[] s) {
        int l=s.length,i,j=0,k=0;
    boolean[] b = new boolean[l];
    int[] a = new int[l];
    //see what stalls are open
    for (i = 0; i < s.length; i++) {
        if (s[i] == 0){
            b[i] = true;
        }
    }
    //assign the sum of distance to the a[]
    for (i = 0; i < l; i++) {
        if (b[i]) {
            for (j = 0; j < l; j++) {
                if (!b[j]) {
                    a[i]+= Math.abs(i - j);
                }
            }
        }
    }
    //find the stall the greatest distance away breaking ties based on the furthest left
    for (i = 0; i < l; i++) {
        if (b[i] && (a[i] > k || k == 0)) {
            k = a[i];
            j=i;
        }
    }
    //return the index
    return j;
}

বুলিয়ান অ্যারে হিসাবে ইনপুট যেখানে সত্য একটি খোলা স্টল বোঝায়।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
অ্যালেক্স এ।

আপনার অ্যারে লাগবে না a
ফাঁস নুন


এক পুনরাবৃত্তির সর্বনিম্ন সন্ধান করে (লুপগুলির জন্য বাহ্যকে একত্রিত করুন)
লিকি নুন

ওহ @ লিকিউন আজ আমি ফিরে এলে তা করবে
রোহান ঝুনঝুনওয়ালা

4

রুবি, 79 78 76 + nপতাকা = 77 বাইট

আউটপুট 0-ভিত্তিক সূচক হয়। ইনপুটটি 0 এবং 1 এর এসটিডিএন লাইন।

p (r=0...~/$/).max_by{|i|k=0;$_[i]>?0?0:r.map{|j|k+=$_[j]<?1?0:(j-i).abs};k}

1
0...~/$/একটি দুর্দান্ত কৌশল। 👍🏻
জর্দান

2

এমএটিএল , 14 বাইট

~ftGf!-|Xs&X>)

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

আউটপুটটি 1-ভিত্তিক।

ব্যাখ্যা

~f     % Implicitly take input. Compute row vector with indices of zeros
t      % Duplicate that
Gf!    % Push input again. Compute column vector of indices of ones
-|     % Absolute differences with broadcast. Gives 2D array with all combinations
Xs     % Sum of each column
&X>    % Arg max. Gives the index of the first maximizer if there are several
)      % Index into row vector of indices of zeros. Implictly display

2

পার্ল 84 + 3 ( -alpপতাকা) = 87 বাইট

for$i(0..$#F){$t=0;map{$t+=abs($i-$_)*$F[$_]}0..$#F;($m,$_)=($t,$i)if$m<$t&&!$F[$i]}

-alpচালানোর জন্য পতাকা দরকার । ইনপুট হিসাবে স্পেস দ্বারা পৃথক করা 1 এবং 0 এর স্ট্রিং নেয়। এই ক্ষেত্রে :

perl -alpe '$m=0;for$i(0..$#F){$t=0;map{$t+=abs($i-$_)*$F[$_]}0..$#F;($m,$_)=($t,$i)if$m<$t&&!$F[$i]}' <<< "1 0 1
0 0 1 0 1 1
1 0 1 0 0 0 0 1 1
1 0 0 0 0 0 1 1 0 0 0 0
1 1 1 1 0 0 0 0 0 0 1
1 0"

নোট করুন যে আমি $m=0শুরুতে যোগ করেছি , তবে এটি কেবল একাধিক এন্ট্রি পরীক্ষার জন্য।


আমি গণনা +7: F'' alp-গুলি গণনা করা হয় না
NoOneIsHere

@ ননওআইনি এখানে হুম, আসলেই আমার খারাপ লাগবে। ধন্যবাদ
দাদা

2

মতলব, 87 বাইট

n=input('');k=numel(n);[a b]=ndgrid(1:k);[x y]=max(sum(abs(a-b).*repmat(n,k,1)').*~n);y

একক এবং শূন্যের অ্যারে নেয়; 1-ভিত্তিক সূচক ব্যবহার করে।
অন্যান্য উত্তরগুলির মতো মোট গড় দূরত্ব নয়।
সম্ভবত আরও কিছু গল্ফ সম্ভব ...


2

জাভাস্ক্রিপ্ট (ES6), 87 86 82 75 বাইট

a=>a.map((u,i)=>u||(a.map((v,j)=>u+=v*(i>j?i-j:j-i)),u>x&&(x=d,r=i)),x=0)|r

বুলিয়ান অ্যারে নেয় (সত্য / মিথ্যা বা 1/0) তারা সকলেই একই সাধারণ ফ্যাক্টরটি ব্যবহার করছেন বলে গড় দূরত্বের গণনা করার কোনও বিন্দু নেই, তাই কেবলমাত্র প্রতিটি স্টলের জন্য মোট দূরত্ব গণনা করুন এবং সর্বোচ্চটির প্রথম সূচকটি সন্ধান করুন। সম্পাদনা: ব্যবহার করে 1 বাইট সংরক্ষণ করা হয়েছে* পরিবর্তে&& । @ ডেনড্রোবিয়ামের একটি মন্তব্যের ভিত্তিতে ম্যানুয়ালি সর্বোচ্চ দূরত্ব সন্ধান করে 5 বাইট সংরক্ষণ করা হয়েছে। u@ এডসি 65 এর মন্তব্যের ভিত্তিতে সিউডো-হ্রাস সংযোজক হিসাবে পুনরায় ব্যবহার করে 7 বাইট সংরক্ষণ করা হয়েছে।


79 বাইট:a=>(x=0,a.map((o,i)=>x<(t=a.reduce((r,u,j)=>r+(b=i-j)*b*u*!o,0))&&(x=t,r=i)),r)
ডেনড্রোবিয়াম

@ ডেনড্রোবিয়াম প্রশ্নটি নিখুঁত দূরত্ব চেয়েছে; আপনি আরএমএস দূরত্ব গণনা করছেন বলে মনে হচ্ছে।
নীল

1
ইনপুট হিসাবে একটি অ্যারে ব্যবহার করা - ভাল ধারণা। গড়ের পরিবর্তে মোট গণনা করা - ভাল ধারণা। ব্যবহার reduceপরিবর্তে mapMMMM -
edc65

75:s=>s.map((u,i)=>u||(s.map((w,j)=>u-=w*Math.abs(j-i)),u<x&&(x=u,r=i)),x=0)|r
edc65

@ নীল যথেষ্ট আরএমএস নয়, কেবল বর্গক্ষেত্রের দূরত্ব যা সমাধানের ফলাফলকে প্রভাবিত করবে না যতক্ষণ না সংমিশ্রিত ইনপুটগুলির সম্পূর্ণ দূরত্বগুলির মধ্যে 1100011101সম্পর্ক থাকে (উদাহরণস্বরূপ 2এবং 8যখন পরম ব্যবহারের সময় বন্ধন 8ব্যবহার করা হয়, স্কোয়ার ব্যবহার করার পরে) এটি গুরুত্বপূর্ণ নয় মনে হচ্ছে নিয়মগুলি স্পষ্ট হয়েছে এবং বাঁদিকের সবচেয়ে স্টলের সাথে সম্পর্কগুলি এখন সমাধান হয়েছে ...
ডেন্ড্রোবিয়াম


1

রুবি, 87 76 বাইট

এই প্রথম খসড়াটি দ্রুত একসাথে ছুঁড়ে ফেলেছে , কিন্তু ইতিমধ্যে মান কালি ইতিমধ্যে একটি 80 বাইট রুবি উত্তর পোস্ট করেছে ...

সম্পাদনা: মান কালি থেকে সহায়তা নিয়ে কিছু বাইট বন্ধ করে দিয়েছে:

->a{(r=0...a.size).max_by{|i|a[i]?0:r.map{|j|a[j]?(i-j).abs: 0}.reduce(:+)}}

এটি একটি বেনাম ফাংশন যা সত্যের / মিথ্যা মানগুলির অ্যারে নেয়, উদাহরণস্বরূপ যেমন:

f=->->a{(r=0...a.size).max_by{|i|a[i]?0:r.map{|j|a[j]?(i-j).abs: 0}.reduce(:+)}}
# Test case number 5:
p f[[1, 1, 1, 1, nil, nil, nil, nil, nil, nil, 1]] # => 9

1
একটি পরিবর্তনশীল প্রাথমিক পরিসর ধার্য (r=0...a.size)এবং তারপর যে পরিবর্তে ব্যবহার মানচিত্র with_index: r.map{|j|a[j]?(i-j).abs: 0}। এটি আপনাকে 78 বাইট পেতে হবে।
মান কালি

@ ভালুআইঙ্ক আশ্চর্যজনক, ধন্যবাদ! কেবল ফাংশন
দিয়েই

1

গণিত, 53 বাইট

MaximalBy[a=PositionIndex@#;a@0,Tr@Abs[#-a@1]&][[1]]&

1-ভিত্তিক সূচক ব্যবহার করে এবং 0 এবং 1 এর তালিকা হিসাবে ইনপুট নেয়।


0

জাভাস্ক্রিপ্ট ES6 - 98 95 91 86 84 88 বাইট

সম্পাদনা: মনে হচ্ছে টাইয়ের ক্ষেত্রে বামেতম-স্টলটি ব্যবহার করা উচিত। স্কোয়ার দূরত্বগুলি আর কাজ করে না, পরম দূরত্বে ফিরে আসে।

(r,x=0,f=g=>r.reduce(g,0))=>f((p,o,i)=>x<(o=f((p,c,j)=>p+c*!o*Math.abs(i-j)))?(x=o,i):p)

Ungolfed:

(r,                            // string input
 x=0,                          // current max distance
 f=g=>r.reduce(g,0))=>         // iterator function
   f((p,o,i)=>                 // for each stall
     x<(o=f((p,c,j)=>          // iterate through all stalls and
       p+c*!o*Math.abs(i-j)))? //   calculate sum of distances from current stall
     (x=o,i):                  // if total dist is greater than x, update x, return index
     p)                        //   else return previous max index

টেস্ট রান:

f=(r,x=0,f=g=>r.reduce(g,0))=>f((p,c,i)=>x<(c=+c?0:f((p,c,j)=>p+c*Math.abs(i-j)))?(x=c,i):p)
f([1,0,1])                   // 1
f([0,0,1,0,1,1])             // 0
f([1,0,1,0,0,0,0,1,1])       // 1
f([1,0,0,0,0,0,1,1,0,0,0,0]) // 11
f([1,1,1,1,0,0,0,0,0,0,1])   // 9
f([1,0])                     // 1

0

লুয়া, 165 150 বাই

n=arg[1]n=n:gsub("%|%-","1"):gsub("%| ","0")i=0 for s in n:gmatch("0+")do i=(i<#s)and(#s)or(i)end n,l=n:find(("0"):rep(i))print(n+math.floor((l-n)/2))

এটি সাধারণভাবে, লুয়া কোনও কমান্ড লাইনের ইনপুট যুক্ত আর্গ নামক একটি টেবিলটি পাস করে এই সত্যটি ব্যবহার করে কিছুটা প্রতারণা করে।

আমি কিছুটা হতাশ হয়েছি যে আমি লুপের জন্য একটি ব্যবহার করেছি, তবে এটিকে বন্ধ করার কোনও ছোট উপায় সম্পর্কে আমি ভাবতে পারি না।

এছাড়াও, কারণ লুয়া, 1 ভিত্তিক সূচক ব্যবহৃত হয়েছিল।

অপ্রয়োজনীয় জিএসব থেকে 15 বাইট স্নিপ করুন।


0

সি #, 127 বাইট

public int G(char[]s){int i=0;var l=s.ToLookup(b=>b,b=>i++);return l['0'].OrderBy(j=>l['1'].Average(p=>Math.Abs(p-j))).Last();}

টেস্ট বিছানা

public static void Main() {
    var respectful = new Respectful();
    foreach (var kvp in testCases) {
        $"{kvp.Key}: Expected {kvp.Value} Actual {respectful.G(kvp.Key.ToCharArray())}".Dump();
    }
}

public static readonly List<KeyValuePair<string, int>> testCases = new List<KeyValuePair<string, int>> {
    new KeyValuePair<string, int>("101", 1),
    new KeyValuePair<string, int>("001011", 0),
    new KeyValuePair<string, int>("101000011", 1),
    new KeyValuePair<string, int>("100000110000", 11),
    new KeyValuePair<string, int>("11110000001", 9),
    new KeyValuePair<string, int>("10", 1),
    new KeyValuePair<string, int>("1001", 1),
};

public class Respectful {
    public int G(char[]s){int i=0;var l=s.ToLookup(b=>b,b=>i++);return l['0'].OrderBy(j=>l['1'].Average(p=>Math.Abs(p-j))).Last();}
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.