Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //21:24 <----------------------------
- class Student
- {
- private $name;
- private $dates = [];
- private $comments = [];
- /**
- * Student constructor.
- * @param $name
- */
- public function __construct($name)
- {
- $this->name = $name;
- }
- /**
- * @return mixed
- */
- public function getName()
- {
- return $this->name;
- }
- public function addDate(string $date): void
- {
- $this->dates[] = $date;
- }
- public function addComment(string $comment):void
- {
- $this->comments[] = $comment;
- }
- /**
- * @return array
- */
- public function getDates(): array
- {
- return $this->dates;
- }
- /**
- * @return array
- */
- public function getComments(): array
- {
- return $this->comments;
- }
- /**
- * @param array $dates
- */
- public function setDates(array $dates): void
- {
- $this->dates = $dates;
- }
- /**
- * @param array $comments
- */
- public function setComments(array $comments): void
- {
- $this->comments = $comments;
- }
- private function setName(string $name): void
- {
- $this->name = $name;
- }
- }
- /**
- * @var $students Student[]
- */
- $students = [];
- $line = readline();
- while ($line != 'end of dates') {
- $tokens = explode(' ', $line);
- $name = $tokens[0];
- if (!key_exists($name, $students)) {
- $student = new Student($name);
- $students[$name] = $student;
- }
- if (count($tokens) > 1) {
- $dates = explode(',', $tokens[1]);
- $student = $students[$name];
- foreach ($dates as $date) {
- $student->addDate($date);
- }
- }
- $line = readline();
- }
- $secondLine = readline();
- while ($secondLine != 'end of comments') {
- $tokens = explode('-', $secondLine);
- list($name, $comment) = $tokens;
- if (key_exists($name, $students)) {
- $student = $students[$name];
- $student->addComment('- ' . $comment);
- }
- $secondLine = readline();
- }
- ksort($students, SORT_LOCALE_STRING);
- foreach ($students as $student) {
- $comments = implode(PHP_EOL, $student->getComments());
- echo $student->getName()
- .PHP_EOL
- .'Comments:'
- . PHP_EOL
- . (strlen($comments) > 0 ? ($comments . PHP_EOL) : '')
- . 'Dates attended:'
- . PHP_EOL;
- $dates = $student->getDates();
- usort($dates, function ($date1, $date2) {
- $dateParts1 = array_map('intval', explode('/', $date1));
- $dateParts2 = array_map('intval', explode('/', $date2));
- $yearComparison = $dateParts1[2] <=> $dateParts2[2];
- if ($yearComparison === 0) {
- $monthComparison = $dateParts1[1] <=> $dateParts2[1];
- if ($monthComparison === 0) {
- $dayComparison = $dateParts1[0] <=> $dateParts2[0];
- return $dayComparison;
- }
- return $monthComparison;
- }
- return $yearComparison;
- });
- foreach ($dates as $date) {
- echo "-- $date" . PHP_EOL;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement