ページ

2012/12/10

[競技プログラミング][PHP][東京大学プログラミングコンテスト2012]2012年12月02日

A - 2012年12月02日

時間制限 : 2sec / スタック制限 : 64MB / メモリ制限 : 256MB

問題

今日は2012年12月02日であって, 月日を構成する数字1202を並べ替えると西暦を表す数字2012になる.
このような日を良い日という事にする. 与えられた日付が良い日かどうかを答えよ.

入力

yyyy/mm/dd という形の文字列が一行で与えられる.
yyyyは,4桁の整数,mmは先頭が0でありうる2桁の整数,ddは先頭が0でありうる2桁の整数である.

yyyyが西暦,mmが月,ddが日を表している.

出力

与えられた日付けが良い日であるならば,yes 良い日でないならば,no を一行に出力せよ.

制約

1000≤yyyy≤9999
与えられる日付は,正しい日付を表している.

出典

A: 2012年12月02日 - 東京大学プログラミングコンテスト2012 | AtCoder

回答

AtCoder/utpc2012_01.php at master · wada811/AtCoder · GitHub
<?php
$date = trim(fgets(STDIN));
$date1 = array($date[0], $date[1], $date[2], $date[3]);
$date2 = array($date[5], $date[6], $date[8], $date[9]);
echo array_count_values($date1) == array_count_values($date2) ? 'yes' : 'no';
echo PHP_EOL;
?>
あんまり良い名前が思いつかなかったから適当な変数名。使い捨てのコード。ひどい。