Book Borrowing

Book Borrowing

Medium PHP PHP OOP Basics 40 views
Explanation Complexity

Problem Statement

Commands: ADD book, BORROW book, RETURN book. Track if a book is available. BORROW unavailable prints FAIL.

Input Format

First line q. Next q lines.

Output Format

Outputs for BORROW.

Example

6
ADD Dune
BORROW Dune
BORROW Dune
RETURN Dune
BORROW Dune
BORROW Other
OK
FAIL
OK
FAIL

Constraints

q

Input / Output Format

Input Format
First line q. Next q lines.
Output Format
Outputs for BORROW.
Constraints
q

Examples

Input:
6 ADD Dune BORROW Dune BORROW Dune RETURN Dune BORROW Dune BORROW Other
Output:
OK FAIL OK FAIL

Example Solution (Public)

PHP
<?php
class Library{
  private $avail=[];
  function add($b){ $this->avail[$b]=true; }
  function borrow($b){
    if(isset($this->avail[$b]) && $this->avail[$b]===true){ $this->avail[$b]=false; return 'OK'; }
    return 'FAIL';
  }
  function ret($b){ if(isset($this->avail[$b])) $this->avail[$b]=true; }
}
$inputLines=preg_split('/\\R/', rtrim(stream_get_contents(STDIN)));
if(!$inputLines || trim($inputLines[0])==='') exit;
$q=intval($inputLines[0]);
$lib=new Library(); $output=[];
for($i=1;$i<=$q;$i++){
  $tokens=preg_split('/\\s+/', trim($inputLines[$i] ?? ''), 2);
  $cmd=$tokens[0] ?? '';
  $arg=$tokens[1] ?? '';
  if($cmd==='ADD') $lib->add($arg);
  elseif($cmd==='BORROW') $output[]=$lib->borrow($arg);
  elseif($cmd==='RETURN') $lib->ret($arg);
}
echo implode(PHP_EOL,$output);
?>

Official Solution Code

<?php
class Library{
  private $avail=[];
  function add($b){ $this->avail[$b]=true; }
  function borrow($b){
    if(isset($this->avail[$b]) && $this->avail[$b]===true){ $this->avail[$b]=false; return 'OK'; }
    return 'FAIL';
  }
  function ret($b){ if(isset($this->avail[$b])) $this->avail[$b]=true; }
}
$inputLines=preg_split('/\\R/', rtrim(stream_get_contents(STDIN)));
if(!$inputLines || trim($inputLines[0])==='') exit;
$q=intval($inputLines[0]);
$lib=new Library(); $output=[];
for($i=1;$i<=$q;$i++){
  $tokens=preg_split('/\\s+/', trim($inputLines[$i] ?? ''), 2);
  $cmd=$tokens[0] ?? '';
  $arg=$tokens[1] ?? '';
  if($cmd==='ADD') $lib->add($arg);
  elseif($cmd==='BORROW') $output[]=$lib->borrow($arg);
  elseif($cmd==='RETURN') $lib->ret($arg);
}
echo implode(PHP_EOL,$output);
?>
Please login to submit solutions.
Editor
Output

                                        
Please login to submit solutions.