別の日付操作の問題:P
仕事
ユーザーが指定した2つの日付の差を計算するプログラムまたは関数を作成します。
入出力
前のものと同様に、入力はYYYYMMDDスペース、コンマ,、またはマイナス記号で区切られた2つ-です。
入力値の例:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
出力は整数であり、2つの日付の日数の差です。
たとえば、入力20110101-20100101yields 365および33320229 17000101yields 596124。
結果をテストできます ここで ここで。(以下のrintaunのコメントを参照してください。)2つの日付が同じ0場合、日付が有効であればプログラムはを返します(スコアを参照)。
制限
もちろん、あなたがしなければならない使用しない任意の関数/クラスの種類/ ...タイムスタンプまたは日付に関連している、とあなたが使用する必要がありますグレゴリオ暦を。
スコア
あなたのコードは、制限を守らない場合score = -∞。
デフォルトbonusは1です。
- 入力の順序(たとえば、
20100101,20110101return365または-365)に関係なくコードが機能する場合bonus+=1。 - あなたのコードが処理できる場合は年0、
bonus+=0.5。 - あなたのコードが/日付(1〜12の間)のように、(1〜31の間)、無効な月を認識した場合
20109901や34720132、および印刷物E(&などのプログラムや戻り何かを終了0)、bonus+=1。 - かかわらず、上記のルールの、あなたのコードは無効な日付を認識した場合、のような
20100230、20100229あるいは20111131、および印刷物E(&プログラムまたは返すようなものを終了0)、bonus+=1。 - 上記の2つのルールに関係なく、コードが
20100101|20100202orなどの無効な入力文字列を認識し2010010120100202、印刷E(&がプログラムを終了する、またはのようなものを返す0)する場合bonus+=1。
score = floor(-4.2*code.length/bonus)。最高スコアのコードが勝ちます。2つの上位コードのスコアが同じ場合、ボーナスが最も高いコードが勝ちます。2つの上位コードが同じスコアとボーナスの両方を持っている場合、最高得票のコードが勝ちます。
(期限:+1投票数が多い(または等しい)コードが5つ以上ある場合。)
20040229です。:P
365*4 + 2 + 2=1464。情報をありがとう!