Difference between revisions of "CSC220 Homework 2 Solutions 2010"

From dftwiki3
Jump to: navigation, search
(Created page with '=Problem #1= <code><pre> <html> <!-- Julia P. (edited by D. T.) 220a-aj Sept 29, 2010 Homework #2 Problem #1 Computes and prints the first 10 rows of Pascal's Triangle. --> <…')
 
(Problem #3)
Line 119: Line 119:
  
 
<code><pre>
 
<code><pre>
 +
 
<html>
 
<html>
<head>
+
<!--
<title> Pascal\'s Triangle</title>
+
hw2c.php
</head>
+
Julia P.  (Edited by D.T.)
 
 
<body>
 
  
<?php
+
Reads a file containing lines with 3 fields describing characters from comic books.
 +
Parses the information from each line in person, type, extra information, and
 +
displays the contents by listing first the hero or heroes, then the villain or villains,
 +
then the supporting characters.
 +
Note that the heroes or villains can appear anywhere in the input file.
  
$pascal = array(array(1));
+
Typical input:
for($i=1;;$i++){
 
  $large = false;
 
  $pascal[$i] = array();
 
  $count = count($pascal[$i-1])+1;
 
  $pascal[$i][0]=1;
 
  for($j=1;$j<$count-1;$j++){
 
    $pascal[$i][$j] = $pascal[$i-1][$j] + $pascal[$i-1][$j-1];
 
    if($pascal[$i][$j]>=1000){
 
      $large = true;
 
    }
 
  }
 
  $pascal[$i][$count-1]=1;
 
  if($large) break;
 
}
 
  
$newcount = count($pascal);
+
Wolf, vilain, aka Big Bad Wolf
print "<table border = \"1\">";
+
Little Red Riding Hood, hero, lost in the woods
 +
Firt little pig, hero, builds a house out of straw
 +
Second little pig, hero, builds a house out of sticks
 +
Third little pig, hero, builds a house out of bricks
 +
Snow White, hero, lost in the woods
 +
Prince charming, the prince, rescues damesels in distress
 +
The king, the father of the prince or pricess, totally lost with the task of raising children
  
print "<tr>";
+
Typical output:
foreach($pascal[$newcount-1] as $element){
 
  print"<td>".$element."</td>";
 
}
 
print "</tr>\n";
 
print "</table>";
 
?>
 
</body>
 
</html>[220a@beowulf 220a-aj]$ cat hw2c.php
 
  
<html>
+
<h2>The Heroes: </h2>
 +
<ul><li>The hero is Little Red Riding Hood, known as lost in the woods <br>
 +
<li>The hero is Firt little pig, known as builds a house out of straw <br>
 +
<li>The hero is Second little pig, known as builds a house out of sticks <br>
 +
<li>The hero is Third little pig, known as builds a house out of bricks <br>
 +
<li>The hero is Snow White, known as lost in the woods <br>
 +
</ul><h2>The Vilain: </h2>
 +
<ul><li>The vilain is Wolf, known as aka Big Bad Wolf <br>
 +
</ul><h2>Supporting Characters: </h2>
 +
<ul><li>Prince charming is the the prince, rescues damesels in distress
 +
<li>The king is the the father of the prince or pricess, totally lost with the task of raising children
 +
</ul>
  
 +
-->
 
<body>
 
<body>
  
Line 167: Line 166:
 
$elements = array();
 
$elements = array();
 
for($i=0;$i<count($lines);$i++){
 
for($i=0;$i<count($lines);$i++){
 
+
  //--- split on ',' into 3 fields ---
 
   $elements[$i] = explode(",", $lines[$i]);
 
   $elements[$i] = explode(",", $lines[$i]);
 
   for($j=0;$j<count($elements[$i]);$j++){
 
   for($j=0;$j<count($elements[$i]);$j++){
Line 174: Line 173:
 
}
 
}
  
 +
//--- get ready to capture heroes and villains ---
 
$hero=array();
 
$hero=array();
$vilain=array();
+
$villain=array();
 +
 
  
 
for($i=0;$i<count($elements);$i++){
 
for($i=0;$i<count($elements);$i++){
Line 181: Line 182:
 
     $hero[] = $i;
 
     $hero[] = $i;
 
   }
 
   }
   elseif($elements[$i][1]=="vilain"){
+
  //--- capture villains (even if misspelled!) ---
     $vilain[]=$i;
+
   elseif($elements[$i][1]=="villain" || $elements[$i][1]=="vilain" ){
 +
     $villain[]=$i;
 
   }
 
   }
 
}
 
}
  
 +
//--- display the arrays of heroes and villains, and supporting cast ---
 +
 +
//--- HEROES ---
 
print "<h2>The Hero";
 
print "<h2>The Hero";
 
if(count($hero)>=2){
 
if(count($hero)>=2){
Line 197: Line 202:
  
  
 
+
//--- VILLAINS ---
print "<h2>The Vilain";
+
print "<h2>The Villain";
if(count($vilain)>=2){
+
if(count($villain)>=2){
 
   print "s";
 
   print "s";
 
}
 
}
 
print ": </h2>\n<ul>";
 
print ": </h2>\n<ul>";
 
for($i=0; $i<count($vilain);$i++){
 
for($i=0; $i<count($vilain);$i++){
   print "<li>The vilain is ".$elements[$vilain[$i]][0].", known as ".$elements[$vilain[$i]][2]." <br>\n";
+
   print "<li>The villain is ".$elements[$vilain[$i]][0].", known as ".$elements[$vilain[$i]][2]." <br>\n";
 
}
 
}
  
 
print "</ul>";
 
print "</ul>";
  
 +
//--- SUPPORTING CHARACTERS ---
 
print "<h2>Supporting Characters: </h2>\n<ul>";
 
print "<h2>Supporting Characters: </h2>\n<ul>";
 
for ($i=0;$i<count($lines);$i++){
 
for ($i=0;$i<count($lines);$i++){
   if ((!in_array($i, $hero))&&(!in_array($i, $vilain))){
+
   if ((!in_array($i, $hero))&&(!in_array($i, $villain))){
 
     print "<li>".$elements[$i][0]." is the ".$elements[$i][1].", ".$elements[$i][2]."\n";
 
     print "<li>".$elements[$i][0]." is the ".$elements[$i][1].", ".$elements[$i][2]."\n";
 
   }
 
   }

Revision as of 07:51, 5 October 2010

Problem #1

<html>
<!--
Julia P. (edited by D. T.)
220a-aj
Sept 29, 2010

Homework #2
Problem #1
Computes and prints the first 10 rows of Pascal's Triangle.

-->
<head>
<title> Pascal\'s Triangle</title>
</head>

<body>

<?php

//--- compute the triangle and store it in a 2D array ---
//--- init as 1 row of 1 cell containing 1 ---
$pascal = array(array(1)); 

//--- loop and expand the array ---
for($i=1;$i<10;$i++){
  //--- $i is the row index ---
  $pascal[$i] = array();
  $count = count($pascal[$i-1])+1;
  $pascal[$i][0]=1;
  //--- $j is the column index ---
  for($j=1;$j<$count-1;$j++){
    $pascal[$i][$j] = $pascal[$i-1][$j] + $pascal[$i-1][$j-1];
  }
  //--- add a 1 at the end of the row ---
  $pascal[$i][$count-1]=1;
}

//--- display the table ---
print"<table border = \"1\">";

//--- double loop scans 2D array ----
foreach($pascal as $row){
  print"<tr>";
  foreach($row as $element){
    print"<td>".$element."</td>";
  }
  print "</tr>\n";
}
print "</table>";
?>
</body>
</html>

Problem #2

<html>
<!--
hw2b.php
Julia P. (edited by D.T.)
220a-aj

Computes successive rows of Pascal's triangle until one is
found with a term larger than 1000.  That row is printed
and the program stops.

-->

<head>
<title> Pascal\'s Triangle</title>
</head>

<body>

<?php

//--- double loop creates a 2D array ---
//--- $i controls row index 
//--- $j controls column index
//--- $large becomes True as soon as term > 1000 found.
//--- $i-loop stops when $large is True
$pascal = array(array(1));
$large   = False;
for($i=1;  $large==False ;$i++){
  $pascal[$i] = array();
  $count = count($pascal[$i-1])+1;
  $pascal[$i][0]=1;
  for($j=1;$j<$count-1;$j++){
    $pascal[$i][$j] = $pascal[$i-1][$j] + $pascal[$i-1][$j-1];
    if($pascal[$i][$j]>=1000)
       $large = true;
  }
  $pascal[$i][$count-1]=1;
}

//--- display Pascal array ---
$newcount = count($pascal);
print "<table border = \"1\">";

print "<tr>";
foreach($pascal[$newcount-1] as $element){
  print"<td>".$element."</td>";
}
print "</tr>\n";
print "</table>";
?>
</body>
</html>

Problem #3


<html>
<!--
hw2c.php
Julia P.  (Edited by D.T.)

Reads a file containing lines with 3 fields describing characters from comic books.
Parses the information from each line in person, type, extra information, and 
displays the contents by listing first the hero or heroes, then the villain or villains,
then the supporting characters. 
Note that the heroes or villains can appear anywhere in the input file.

Typical input:

Wolf, vilain, aka Big Bad Wolf
Little Red Riding Hood, hero, lost in the woods
Firt little pig, hero, builds a house out of straw
Second little pig, hero, builds a house out of sticks
Third little pig, hero, builds a house out of bricks
Snow White, hero, lost in the woods
Prince charming, the prince, rescues damesels in distress
The king, the father of the prince or pricess, totally lost with the task of raising children

Typical output:

<h2>The Heroes: </h2>
<ul><li>The hero is Little Red Riding Hood, known as lost in the woods <br>
<li>The hero is Firt little pig, known as builds a house out of straw <br>
<li>The hero is Second little pig, known as builds a house out of sticks <br>
<li>The hero is Third little pig, known as builds a house out of bricks <br>
<li>The hero is Snow White, known as lost in the woods <br>
</ul><h2>The Vilain: </h2>
<ul><li>The vilain is Wolf, known as aka Big Bad Wolf <br>
</ul><h2>Supporting Characters: </h2>
<ul><li>Prince charming is the the prince, rescues damesels in distress
<li>The king is the the father of the prince or pricess, totally lost with the task of raising children
</ul>

-->
<body>

<?php
 //--- read the lines from file play.txt and store in array $lines ---
$lines = file( 'play.txt' );

$elements = array();
for($i=0;$i<count($lines);$i++){
  //--- split on ',' into 3 fields ---
  $elements[$i] = explode(",", $lines[$i]);
  for($j=0;$j<count($elements[$i]);$j++){
    $elements[$i][$j] = trim($elements[$i][$j]);
  }
}

//--- get ready to capture heroes and villains ---
$hero=array();
$villain=array();


for($i=0;$i<count($elements);$i++){
  if($elements[$i][1]=="hero"){
     $hero[] = $i;
  }
  //--- capture villains (even if misspelled!) ---
  elseif($elements[$i][1]=="villain" || $elements[$i][1]=="vilain" ){
     $villain[]=$i;
  }
}

//--- display the arrays of heroes and villains, and supporting cast ---

//--- HEROES ---
print "<h2>The Hero";
if(count($hero)>=2){
  print "es";
}
print ": </h2>\n<ul>";
for($i=0; $i<count($hero);$i++){
  print "<li>The hero is ".$elements[$hero[$i]][0].", known as ".$elements[$hero[$i]][2]." <br>\n";
}
print "</ul>";


//--- VILLAINS ---
print "<h2>The Villain";
if(count($villain)>=2){
  print "s";
}
print ": </h2>\n<ul>";
for($i=0; $i<count($vilain);$i++){
   print "<li>The villain is ".$elements[$vilain[$i]][0].", known as ".$elements[$vilain[$i]][2]." <br>\n";
}

print "</ul>";

//--- SUPPORTING CHARACTERS ---
print "<h2>Supporting Characters: </h2>\n<ul>";
for ($i=0;$i<count($lines);$i++){
   if ((!in_array($i, $hero))&&(!in_array($i, $villain))){
     print "<li>".$elements[$i][0]." is the ".$elements[$i][1].", ".$elements[$i][2]."\n";
  }
}
print "</ul>";

?>
</body>
</html>