アメリカのシットコムフレンズの6人の主なキャストメンバーは全員、シリーズの実行中(少なくともシーズン2以降)に同じ給料が支払われることに同意しました。しかし、だからといって、全員が同じ時間の放送時間を持っているわけでも、画面上ですべて同じ時間対話したというわけでもありません。
この課題では、どのフレンドの友達が本当に最高かを判断するのに役立つプログラムを作成します。
セットアップ
友人のエピソードやシーンを見て、各カメラショット中に誰がどのくらいの時間画面にいるかを正確に書き留めてください。
各キャラクターの名前を短縮します:
次に、カメラショットごとに(またはキャラクターがショットを入力/終了するたびに)、誰が画面にいたかをリストします。例えば:
504 CRS
200 J
345 MP
980
2000 CJMPRS
これは言っている:
- 504msの間、チャンドラー、レイチェル、ロスがスクリーンに映りました。
- その後、200msの間、ジョーイはそうでした。
- それから345msの間、モニカとフィービーはそうでした。
- その後、980msの間、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
彼は自分だけで200人、全員で2000人だったので、(ちょうどJoey)が2200msの画面時間を持っていることがわかります。
チャレンジ
次のような文字列またはテキストファイルを取り込むプログラムを作成します。
504 CRS
200 J
345 MP
980
2000 CJMPRS
各行の形式[time in ms] [characters on screen]
はで、6文字の64個のサブセットのそれぞれが画面上で費やした合計時間を出力します。各行の形式は[total time in ms for subset] [characters in subset]
(上記と同じです)。
入力は、stdin、コマンドライン、または関数への文字列として取得するか、データを含むテキストファイルの名前にすることができます。
- ミリ秒数は常に正の整数になります。
- 文字は常に
CJMPRS
アルファベット順になります。 - オプションで、シーンにキャラクターがいないときに末尾スペースがあると仮定できます(例:)
980
。 - オプションで、末尾に改行があると仮定できます。
- 入力には少なくとも1行が含まれ、任意の数の行が含まれる場合があります。
出力は、64行の文字列として別のテキストファイルに印刷または返されるか、書き込まれる必要があります。
- 行の順序は任意です。
- 文字は
CJMPRS
順番に並んでいる必要はありません。 - 合計時間が 0ミリ秒のサブセットをリストする必要があります。
- 必要に応じて、空のサブセットの合計の後に後続スペースが存在する場合があります。
- オプションで末尾の改行が存在する場合があります。
(もちろん、この問題はより多くのキャラクターに一般化できますが、6人のCJMPRS
フレンドキャラクターに固執します。)
バイト単位の最短コードが優先されます。
私は実際に友人を楽しんでおり、一部のキャラクターが他のキャラクターより重要だとは思わないことに注意してください。しかし、統計は興味深いでしょう。;)