কোন বন্ধু চরিত্রগুলি সত্যই সেরা বন্ধু ছিল?


30

আমেরিকান সিটকম ফ্রেন্ডসের ছয়জন প্রধান কাস্ট সদস্য সকলেই একমত হয়েছেন যে সিরিজটি চলাকালীন সময়ে (কমপক্ষে 2 মরসুমের পরে) তাদের একই বেতন দেওয়া হবে । তবে এর অর্থ এই নয় যে তাদের সকলের বায়ু সময় একই পরিমাণে ছিল বা তারা সকলেই একে অপরের সাথে একই পরিমাণে আন্তঃসংযোগ করেছিলেন।

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

সেটআপ

বন্ধুদের একটি পর্ব বা দৃশ্য দেখার বিষয়ে বিবেচনা করুন এবং প্রতিটি ক্যামেরার শট চলাকালীন কে এবং কতক্ষণ ধরে স্ক্রিনে রয়েছে তা ঠিক লক্ষণীয়।

আমরা প্রতিটি চরিত্রের নাম সংক্ষেপে করব:

তারপরে প্রতিটি ক্যামেরার শটের জন্য (বা প্রতিবার কোনও চরিত্র শটটি প্রবেশ করে / প্রস্থান করে), আমরা কে স্ক্রিনে ছিল তা তালিকা করব। উদাহরণ স্বরূপ:

504 CRS
200 J
345 MP
980
2000 CJMPRS

এটি হচ্ছে যে:

  • 504 মিমের জন্য, চ্যান্ডলার, রাহেল এবং রস পর্দায় ছিল।
  • তারপরে 200 মাইলের জন্য জোই ছিলেন।
  • তারপরে 345 মিমের জন্য, মনিকা এবং ফোবি ছিল।
  • তারপরে 980 মিমি জন্য, 6 টি প্রধান চরিত্রের কোনওই পর্দায় নেই।
  • তারপরে 2 সেকেন্ডের জন্য, তাদের সমস্ত ছিল।

(এটি আসল ক্লিপ থেকে নয়, আমি এটি তৈরি করেছি))

নোট করুন যে নিম্নলিখিতটি সমতুল্য হবে:

504 CRS
1 J
199 J
345 MP
980
2000 CJMPRS

কোন অক্ষরের সংমিশ্রণের স্ক্রিনের সময় সবচেয়ে বেশি ছিল তা বিশ্লেষণ করতে আমরা 6 টি অক্ষরের সমস্ত 64 টি সাবসেটটি দেখেছি এবং স্ক্রিনের সময়টি তাদের মোট ছিল। সাবসেটের সবাই যদি ক্যামেরার শট চলাকালীন পর্দায় উপস্থিত হয়, এমনকি সাবসেটের মধ্যে থাকা ব্যক্তির চেয়ে আরও বেশি অক্ষর থাকলেও , ক্যামেরা শট করার সময়টি সেই সাবসেটের মোট পর্দার সময় যুক্ত হয়।

খালি সাবসেটটির জন্য ব্যতিক্রম রয়েছে - কেবলমাত্র 6 টি মূল চরিত্রের সাথে দৃশ্যগুলি গণনা করা হয় না।

সুতরাং উপরের উদাহরণটির বিশ্লেষণটি হ'ল:

980
2504 C
2200 J
2345 M
2345 P
2504 R
2504 S
2000 CJ
2000 CM
2000 CP
2504 CR
2504 CS
2000 JM
2000 JP
2000 JR
2000 JS
2345 MP
2000 MR
2000 MS
2000 PR
2000 PS
2504 RS
2000 CJM
2000 CJP
2000 CJR
2000 CJS
2000 CMP
2000 CMR
2000 CMS
2000 CPR
2000 CPS
2504 CRS
2000 JMP
2000 JMR
2000 JMS
2000 JPR
2000 JPS
2000 JRS
2000 MPR
2000 MPS
2000 MRS
2000 PRS
2000 CJMP
2000 CJMR
2000 CJMS
2000 CJPR
2000 CJPS
2000 CJRS
2000 CMPR
2000 CMPS
2000 CMRS
2000 CPRS
2000 JMPR
2000 JMPS
2000 JMRS
2000 JPRS
2000 MPRS
2000 CJMPR
2000 CJMPS
2000 CJMRS
2000 CJPRS
2000 CMPRS
2000 JMPRS
2000 CJMPRS

আমরা সেটা দেখতে পারি J (স্রেফ জোই) এর 2200 মিমি স্ক্রিন সময় ছিল কারণ তার 200 জন ছিল এবং প্রত্যেকের সাথে 2000 ছিল।

চ্যালেঞ্জ

একটি স্ট্রিং বা পাঠ্য ফাইলের মতো একটি প্রোগ্রাম লিখুন

504 CRS
200 J
345 MP
980
2000 CJMPRS

যেখানে প্রতিটি লাইনের ফর্ম রয়েছে এবং [time in ms] [characters on screen]পর্দায় ব্যয় করা characters টি অক্ষরের subse৪ টি উপগ্রহের প্রত্যেকের যেখানে মোট লাইনের ফর্ম রয়েছে তার মোট পরিমাণ বেরিয়ে যায়[total time in ms for subset] [characters in subset] (ঠিক ঠিক উপরে)।

ইনপুটটি স্টিন, কমান্ড লাইন বা কোনও ফাংশনে স্ট্রিং হিসাবে নেওয়া যেতে পারে, বা এটি কোনও পাঠ্য ফাইলের নাম হতে পারে যাতে ডেটা থাকে।

  • মিলিসেকেন্ড সংখ্যা সর্বদা ধনাত্মক পূর্ণসংখ্যার হবে।
  • অক্ষর অক্ষর সর্বদা ক্রমে থাকবে CJMPRS (বর্ণানুক্রমিক)।
  • আপনি দৃশ্যে ধরে নিতে পারেন যে দৃশ্যের কোনও অক্ষর নেই (যেমন উদ্যান) 980 ) ।
  • আপনি বৈকল্পিকভাবে ধরে নিতে পারেন যে সেখানে একটি পিছনের নতুন লাইন রয়েছে।
  • ইনপুটটিতে কমপক্ষে 1 টি লাইন থাকবে এবং নির্বিচারে অনেকগুলি থাকতে পারে।

আউটপুটটি string৪ লাইনের স্ট্রিং হিসাবে মুদ্রিত বা ফিরে আসা বা অন্য পাঠ্য ফাইলে লিখতে হবে।

  • লাইনগুলি কোনও ক্রমে হতে পারে।
  • চরিত্রের অক্ষরগুলি ক্রমযুক্ত হওয়ার দরকার নেই CJMPRS
  • 0ms মোট সময় সঙ্গে সাব-সেট নির্বাচন না তালিকাভুক্ত করা প্রয়োজন।
  • খালি সাবসেট মোটের পরে allyচ্ছিকভাবে পিছনের জায়গা থাকতে পারে।
  • Optionচ্ছিকভাবে একটি ট্রেলিং নিউলাইন থাকতে পারে।

(এই সমস্যাটি অবশ্যই আরও চরিত্রগুলিতে সাধারণীকরণ করা যেতে পারে তবে আমরা 6 CJMPRS বন্ধু চরিত্রের সাথে থাকব ।)

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

মনে রাখবেন যে আমি প্রকৃতপক্ষে বন্ধুদের উপভোগ করেছি এবং মনে করি না যে কয়েকটি চরিত্র অন্যদের চেয়ে গুরুত্বপূর্ণ। পরিসংখ্যান যদিও আকর্ষণীয় হবে। ;)


7
আমরা সিরিজটির বিশ্লেষণ পোস্ট করলে কি অনুগ্রহ পেতে পারি? ;)
বিটা ক্ষয়

5
আমি প্রতি পর্বে কয়েকবার দেখেছি এবং নাও থাকতে পারি এবং সমস্ত 10 মরসুমের মালিক হতে পারি ...
অ্যালেক্স এ।

@AlexA। আপনি কী সম্পর্কে কথা বলছেন তা আমি জানি বা নাও জানতে পারি ...
bolov

খালি সেটটি একটি বিশেষ ক্ষেত্রে - এটি "সাবসেটের মধ্যে কেবলমাত্র অক্ষরের চেয়ে আরও বেশি অক্ষর থাকলেও" এটি মানায় না, নাহলে এটি উদাহরণে 4029 স্কোর করবে ( কমপক্ষে মোট সময় যে পরিমাণে না একটি স্ক্রিনে রয়েছে), এবং 980 নয়
হবিস

1
@ বেটাডেকে সম্ভবত বেশ, সম্ভবত!
ক্যালভিনের

উত্তর:


10

পাইথ, 37 বাইট

Vy"CJMPRS"++smvhdf?q@eTNNN!eTcR\ .zdN

অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

  "CJMPRS"                             string with all friends
 y                                     create all subsets
V                                      for loop, N iterates over ^:
                                 .z      all input lines
                             cR\         split each line at spaces
                 f                       filter for lines T, which satisfy:
                  ?      N                 if N != "":
                   q@eTNN                    intersection(T[1],N) == N
                                           else:
                          !eT                T[1] == ""
             m                           map each of the remaining d to:
              vhd                          eval(d[0]) (extract times)
            s                            sum
           +                       d     + " "
          +                         N    + N
                                         implicitly print

আমি যখন আমার সমাধানের একটি লাইন লিখি তখন এটি খুব কমই চেষ্টা করার মতো এবং এটি পুরো পাইথ উত্তরের চেয়ে ইতিমধ্যে লম্বা :
পি

4
@ হবস এটি মিশ্র ভাষা প্রতিযোগিতার খারাপ দিক। তবে ভয় পাবেন না, অন্যান্য ভাষায় সমাধানগুলি সাধারণত বেশি ভোট পান। শুধু হাসেল-সলিউশনটি দেখুন।
জাকুবে

3
36% খাটো এবং আমাকে বুঝতে পেরেছিলাম যে আমার কোডে একটি বাগ আছে ...
ডেনিস

এটি বরং দুর্ভাগ্য যা মানচিত্রের প্রসারকে cMব্যবহার করে .*। সম্ভবত কোনও ব্যতিক্রম করা উচিত cকারণ আমি ভাবতে পারি না যে এটির মানচিত্রের মতো কেউ এটি ব্যবহার করতে
চাইছে

এটি 980 এর পরিবর্তে উদাহরণের আউটপুটটিতে শীর্ষ লাইনে 0 দেয়
ক্যালভিনের

13

হাস্কেল, 187 বাইট

f=g.(>>=(q.words)).lines
g t=p"CJMPRS">>=(\k->show(sum.map snd$filter((==k).fst)t)++' ':k++"\n")
q[n]=[("",read n)]
q[n,s]=[(k,read n)|k<-tail$p s]
p s=map concat$sequence[[[],[c]]|c<-s]

fএকটি ফাংশন যা ইনপুটটিকে একক মাল্টি-লাইন স্ট্রিং হিসাবে গ্রহণ করে এবং একক স্ট্রিং হিসাবে মাল্টি-লাইন আউটপুট প্রদান করে। সম্ভবত গল্ফ এখানে প্রচুর বাকি।

λ: putStr test1
504 CRS
1 J
199 J
345 MP
980
2000 CJMPRS

λ: putStr $ f test1
980 
2504 S
2504 R
2504 RS
2345 P
2000 PS
2000 PR
2000 PRS
2345 M
2000 MS
2000 MR
2000 MRS
2345 MP
2000 MPS
2000 MPR
2000 MPRS
2200 J
2000 JS
2000 JR
2000 JRS
2000 JP
2000 JPS
2000 JPR
2000 JPRS
2000 JM
2000 JMS
2000 JMR
2000 JMRS
2000 JMP
2000 JMPS
2000 JMPR
2000 JMPRS
2504 C
2504 CS
2504 CR
2504 CRS
2000 CP
2000 CPS
2000 CPR
2000 CPRS
2000 CM
2000 CMS
2000 CMR
2000 CMRS
2000 CMP
2000 CMPS
2000 CMPR
2000 CMPRS
2000 CJ
2000 CJS
2000 CJR
2000 CJRS
2000 CJP
2000 CJPS
2000 CJPR
2000 CJPRS
2000 CJM
2000 CJMS
2000 CJMR
2000 CJMRS
2000 CJMP
2000 CJMPS
2000 CJMPR
2000 CJMPRS

7

এসডাব্লুআই-প্রোলগ, 381 বাইট

s([E|T],[F|N]):-E=F,(N=[];s(T,N));s(T,[F|N]).
a(A):-split_string(A," \n","",B),w(B,[],C),setof(L,s(`CJMPRS`,L),M),x(C,[` `|M]).
w([A,B|T],R,Z):-number_string(N,A),(B="",C=` `;string_codes(B,C)),X=[[N,C]|R],(T=[],Z=X;w(T,X,Z)).
x(A,[M|T]):-y(M,A,0,R),atom_codes(S,M),writef("%t %w\n",[R,S]),(T=[];x(A,T)).
y(_,[],R,R).
y(M,[[A,B]|T],R,Z):-subset(M,B),S is R+A,y(M,T,S,Z);y(M,T,R,Z).

এটি এই হিসাবে চালিত হবে বলে আশা করে:

a("504 CRS
200 J
345 MP
980 
2000 CJMPRS").

মনে রাখবেন আপনি যে প্রতিস্থাপন প্রয়োজন হতে পারে `জন্য "এবং প্রতি "করার' যদি আপনি SWI-Prolog এর একটি পুরোনো সংস্করণ আছে।

যদি আমাকে ইনপুট হিসাবে কোনও স্ট্রিং ব্যবহার না করতে হয় তবে আমি 100+ বাইটগুলি শেভ করতে পারি।


7

হাস্কেল, 150 136 বাইট

import Data.List
f=(subsequences"CJMPRS">>=).g
g l c=show(sum[read x|(x,y)<-map(span(/=' '))$lines l,c\\y==[],c/=[]||c==y])++' ':c++"\n"

ব্যবহারের উদাহরণ:

*Main> putStr $ f "504 CRS\n1 J\n199 J\n345 MP\n980\n2000 CJMPRS"
980 
2504 C
2200 J
2000 CJ
2345 M
2000 CM
2000 JM
2000 CJM
2345 P
2000 CP
2000 JP
2000 CJP
2345 MP
2000 CMP
2000 JMP
2000 CJMP
2504 R
2504 CR
2000 JR
2000 CJR
2000 MR
2000 CMR
2000 JMR
2000 CJMR
2000 PR
2000 CPR
2000 JPR
2000 CJPR
2000 MPR
2000 CMPR
2000 JMPR
2000 CJMPR
2504 S
2504 CS
2000 JS
2000 CJS
2000 MS
2000 CMS
2000 JMS
2000 CJMS
2000 PS
2000 CPS
2000 JPS
2000 CJPS
2000 MPS
2000 CMPS
2000 JMPS
2000 CJMPS
2504 RS
2504 CRS
2000 JRS
2000 CJRS
2000 MRS
2000 CMRS
2000 JMRS
2000 CJMRS
2000 PRS
2000 CPRS
2000 JPRS
2000 CJPRS
2000 MPRS
2000 CMPRS
2000 JMPRS
2000 CJMPRS

@ এমটিএনভিউমার্কের উত্তরের চেয়ে আলাদা পদ্ধতির : cঅক্ষরের সমস্ত সংমিশ্রণের জন্য ইনপুট স্ট্রিংয়ের রেখাগুলি সন্ধান করুন যেখানে cলাইনগুলি থেকে পার্থক্য এবং তালিকা yখালি রয়েছে (বিশেষ ক্ষেত্রে যেখানে কোনও অক্ষর পর্দায় নেই সেদিকে খেয়াল রাখুন (যেমন 980) -> cঅবশ্যই খালি বা নয় c == y)। সংখ্যা এবং যোগফল বের করুন।



2

পার্ল 5 (5.10+), 128 বাইট

আউটপুট প্রতি লাইন 2 বাইট। use feature "say"বাইট গণনা অন্তর্ভুক্ত নয়।

@_=<>;for$i(0..63){@c=qw(C J M P R S)[grep$i&(1<<$_),0..5];
$r=@c?join".*","",@c:'$';$t=0;for(@_){$t+=$1 if/(.*) $r/}say"$t ",@c}

আন golfed:

# Read the input into an array of lines.
my @lines = <>;
# For every 6-bit number:
for my $i (0 .. 63) {
    # Select the elements of the list that correspond to 1-bits in $i
    my @indices = grep { $i & (1 << $_) } 0 .. 5;
    my @characters = ('C', 'J', 'M', 'P', 'R', 'S')[@indices];

    # Build a regex that matches a string that contains all of @characters
    # in order... unless @characters is empty, then build a regex that matches
    # end-of-line.
    my $regex = @characters
      ? join ".*", ("", @c)
      : '$';

    my $time = 0;
    # For each line in the input...
    for my $line (@lines) {
        # If it contains the requisite characters...
        if ($line =~ /(.*) $regex/) {
            # Add to the time total
            $time += $1;
        }
    }

    # And print the subset and the total time.
    say "$time ", @characters;
}

2

কে, 95

{(+/'{x[1]@&min'y in/:*x}[|"I \n"0:x]'b)!b:" ",?,/{x{,/y{x,/:y@&y>max x}\:x}[d]/d:"CJMPRS"}

একটি স্ট্রিং লাগে "504 CRS\n200 J\n345 MP\n980 \n2000 CJMPRS"

k){(+/'{x[1]@&min'y in/:*x}[|"I \n"0:x]'b)!b:" ",?,/{x{,/y{x,/:y@&y>max x}\:x}[d]/d:"CJMPRS"}["504 CRS\n200 J\n345 MP\n980  \n2000 CJMPRS"]
980 | " "
2504| "C"
2200| "J"
2345| "M"
2345| "P"
2504| "R"
2504| "S"
2000| "CJ"
2000| "CM"
2000| "CP"
2504| "CR"
2504| "CS"
2000| "JM"
2000| "JP"
2000| "JR"
2000| "JS"
2345| "MP"
2000| "MR"
2000| "MS"
2000| "PR"
2000| "PS"
2504| "RS"
2000| "CJM"
2000| "CJP"
2000| "CJR"
2000| "CJS"
2000| "CMP"
2000| "CMR"
2000| "CMS"
2000| "CPR"
2000| "CPS"
2504| "CRS"
2000| "JMP"
2000| "JMR"
2000| "JMS"
2000| "JPR"
2000| "JPS"
2000| "JRS"
2000| "MPR"
2000| "MPS"
2000| "MRS"
2000| "PRS"
2000| "CJMP"
2000| "CJMR"
2000| "CJMS"
2000| "CJPR"
2000| "CJPS"
2000| "CJRS"
2000| "CMPR"
2000| "CMPS"
2000| "CMRS"
2000| "CPRS"
2000| "JMPR"
2000| "JMPS"
2000| "JMRS"
2000| "JPRS"
2000| "MPRS"
2000| "CJMPR"
2000| "CJMPS"
2000| "CJMRS"
2000| "CJPRS"
2000| "CMPRS"
2000| "JMPRS"
2000| "CJMPRS"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.