夏休みプチプログラミングコンテスト2018 その-1

前回までのあらすじ

夏休み、延長戦も終わりましたね。いかがだったでしょうか。

ところで私は、競プロみたいなの以外も作るぞみたいなことを言った気がしますので、ここに未完成のゴミを置いておくことにしました。

ソースコード

<?php
class calendar{
 
  private $year;
  private $month;
 
  public function __construct($y,$m){
    $this->year = $y;
    $this->month = $m;
  }
 
  public function create_rows(){
    $last_day = date("j",mktime(0,0,0,$this->month+1,0,$this->year));
 
    $rows = array();
    $row = self::init_row();
 
    for($i=1;$i<=$last_day;++$i){
      $date = date("w",mktime(0,0,0,$this->month,$i,$this->year));
      $row[$date] = $i;
 
      if($date==6||$i==$last_day){
        $rows[] = $row;
        $row = self::init_row();
      }
    }
    return $rows;
  }
 
  public function get_info(){
    return $this->year . "-" . $this->month;
  }
 
  private static function init_row(){
    $array = array();
    $array = array_fill(0,7,"-");
    return $array;
  }
 
}
 
$year = date("Y");
$month = date("n");
$cal = new calendar($year,$month);
 
echo <<< EOL
 
<!doctype html>
<html lang = "ja">
<head>
  <meta charset = "utf-8">
  <title>php calendar</title>
    <style>
    h1{
      font-size:18px;
      margin:0;
    }
 
    th{
      background-color:#cc6;
      font-size:13px;
      text-align:center;
    }
 
    td{
      background-color:red;
      font-size:13px;
      text-align:center;
    }
 
    input[type="text"]{
      width:35px;
    }
  </style>
</head>
<body>
 
<h1>
EOL;
 
echo $cal->get_info();
 
echo <<< EOL
</h1>
<table>
  <tr>
    <th>日</th>
    <th>月</th>
    <th>火</th>
    <th>水</th>
    <th>木</th>
    <th>金</th>
    <th>土</th>
  </tr>
EOL;
 
foreach($cal->create_rows() as $row){
  echo "<tr>";
  for($i=0;$i<=6;++$i){
    echo "<td>" . $row[$i] . "</td>";
  }
  echo "</tr>";
}
echo <<< EOL
</table>
 
</body>
</html>
EOL;
 

説明のような何か

f:id:Inaba3:20180903012503j:plain

(これは罠で、9行目の$this->month=$mを8月に合わせないと、この表は表示されませんね。)

夏休みカレンダーを作りたくて、codeprepのphp でカレンダーを作るコードを書き変えてましたが間に合いませんでした。

あと最低限やりたかったこととしては、

8月1日より前を灰色にする。(夏休み前なので)

9月1日と2日を追加する。(夏休み延長戦なので)

の2つですが、今年の夏休みの私には無理でした。(来年の私はたぶんやらないので、誰かやりたい人かできる人がいたら教えてください。)

(ところで私は、結局のところphpしか触ってませんね。)

あとがき

まあ競プロ以外に触れてるのでギリギリセーフとしましょう。(codeprepさん、プロ生ちゃん、他参加者関係者各位、ありがとうございました。)

また機会があればブログを更新するかもしれませんが、おそらく忘れるでしょう。

(AtCoderで水色になるか、今回のプチプロみたいなイベントを見つけるかしないと書きそうにないので)

(have a nice programming ! みたいな終わり方ができるブログを1回くらい書いてみたいものですね。)