Getting Starting with Solving Mazes
Soon we will be doing more challenging Mazes here : https://mrmonline.org/maze-activities-1/
The Economy
Getting Starting with Solving Mazes
Soon we will be doing more challenging Mazes here : https://mrmonline.org/maze-activities-1/
The Economy
Create a maze along the lines here https://mrmonline.org/maze-activities-1/ , https://mrmonline.org/mazes-3/
Your maze should be able to be solved by 1 loop. You are allowed to add a few lines after the loop to “clean up” the solution if you want but the bulk of the maze should be solvable using a single while loop.
Submit both the map and your solution.
Let’s write a program for something like PowerSchool that helps organize a seating chart for students. There is a tester file at the page’s bottom.
First class : Student , from https://mrmonline.org/student-class/
Class SeatingChart
This class mainly manages a 2-d array of student objects. Note: an empty seat in the chart will be designated by a null value.
1 2 3 4 5 6 |
private Student[][] chart ; // rows and columns for where kids are private String rosterName; //name of this roster private String teacherName; private int period ; //which period is this chart associated public static final int DEFAULT_ROWS = 10; public static final int DEFAULT_COLS = 10; |
public String getTeacherName() // returns teacherName
public String getRosterrName() // returns rosterName
public int getPeriod() // returns period
public int countEmptySeats() ; //returns the number of empty seats. As noted earlier, an empty seat is represented by a null value in the 2-d array of student s
Student[][] getStudentChart() @returns chart
public int[] indexOf(Student stu); returns a 2 element array representing the row and column position of stu in chart ; [-1 , -1] should be returned if stu is not in chart
public boolean setSeat(int row, int col, Student stu) - places Student Stu at that row and column . This can only be done if there is no student in that location. If a student already inhabits that row and column then the method should return false and not make any changes to chart .
public void swap(Student s1, Student s2) // this swaps the locations of s1 and s2
public Student getStudent(int row, int col) returns the student at the given row and col ; or null if the seat is empty
public void removeStudentAt(int row, int col) sets value of object at row and col to null
public boolean equals(SeatingChart other) // returns true if all aspects of other are equivalent to self.
public void colMajorForm() . This prints out the student chart in column major form. Examine the diagram below showing an example seating chart on the left and the printed output on the right.
public String toString(); //follow the conventions we have been using. When you print out the chart , let’s show "E!" t o indicate an empty seat; for seats with students, just display their name.
public Student oldest() // returns the student object with the greatest age
Extra credit
public void randomize() // this randomizes the chart. Please be prepared to meet with me to discuss your code. (You cannot use a library to do all the work, if such a library even exists)
SeatingChartTesterv2.java :
CMU
Complete all the methods below. When you are done, copy and paste the testmethods.v5.1 into your class and run it to see if you have any obvious errors. The above code does not guarantee you a 100 but will help catch most of the common errors that students make.
Note: You may not use any external libraries (like Java.Arrays etc )or import any code. Everything can be done with just loops and variables.
int sumEveryN(int[] nums, int n)
Description:This method returns the sum of every n elements of nums ..
Method Call | return value/output |
sumEveryN( {1 , 2 , 3 , 4 }, 2 ) | 4( ie 1 +3) |
sumEveryN( {13 , 42, 15, 33 , 44 , 16 , 52} ,3) | 98 ( ie 13 + 33+ 52) |
String[] doubleArr(String[] strs)
Description: This method returns a new version of strs in which each element now appears twice. This can be done with a for-each loop, which I believe is easier and more intuitive.
Method Call | return value/output |
doubleArr( {“a”,”b”,”c”} ) | {“a”,”a”,”b”,”b”, “c” , “c”} |
doubleArr( {“math”,”ware”,”house”,”.com” }) | {“math”,”math”,”ware”,”ware”,”house”,”house”,”.com”, “.com”} |
int indexOf5(int[] nums )
Description:This returns the index of the first occurrence element 5 or -1 if 5 does not appear anywhere in the array.
Method Call | return value/output |
indexOf5( { 2 , 3 , 5 , 4 } ) | 2 |
indexOf5( { 2 , 3 , 5 , 4, 5 } ) | 2 |
indexOf5( { 2 , 3 ,7 , 4, 3, } ) | -1 |
More Sample calls and return vals
int indexOf(int[] nums, int num)
Description: This method returns the index value of the first appearance of num or -1 if num is not an element of nums .
Method Call | return value/output |
indexOf( {6,4 ,7,3, 4 }, 4) | 1 |
indexOf( {6,4 7 ,3,2,7}, 7) | 2 |
indexOf( {6,4 ,2,3}, 22) | -1 |
int[] randos(int start, int end, int howMany)
Description: This method returns an array of random numbers between [start,end] . Note make sure that each element in the new array attempts to make a new random int. Use Math.random() , do not use any other mechanism for finding a random number.
double meanBetween(int[] nums, int min, int max)
Description: This method returns the mean of nums ; however, this method only counts values within the range (min,max) as shown in the examples below:
int secondSmallest(int[] nums )
Description: This method returns the element of nums with the second smallest value.
Note: You may not modify the input array. For instance, you may not put nums in order, which would be bad because you were not asked to modify the array.
@precondition: nums.length >= 2
Note: You will lose credit if you use a constant to represent the smallest or second smallest number. See pseudocode
Method Call | return value/output |
secondSmallest( { 2 , 18 , 22, 4 , 6 } ) | 4 |
secondSmallest( { 3 , 7 , 15 , 1 ,101} ) | 3 |
boolean isPalindromic(int[] nums)
Description:This method returns true if the elements of nums are a palindrome.
Method Call | return value/output |
isPalindromic(( { 5 , 2, 7 , 2 , 5} ) | true |
isPalindromic( { 5 , 2, 7 , 3 , 5} )) | false |
isPalindromic(( { 1 , 2, 1} ) | true |
Old versions:
Exercises for String 1 and Array 1 (no loops)
When you are done, you can copy and past the score() method below into your class. It will test some (but, by no means all) of the things that your code should do
Create a class called StrArr1 and add each method below into it.
For the absVals() method below use the Math.abs() Java method.
For the randos1to10() method below use the Math.random() Java method. Create a new array to store random integers. Each integer should be [1,10]
It is very rare that I recommend anyone skip from the Intro class, the easiest CS class, to SUPA, the hardest CS class , without the foundation that we build in Computer Science II.
The path to skipping
If you really want to try to skip CS II, the path would be to complete the online component of CS II curriculum during the school year and to then sit down with me for an interview. If I am satisfied that you are ready to skip CS II, I will then make the recommendation.
Much, though not all, of the CS II curriculum is online and so can be completed at a student’s convenience.
Please know, that most of the students who have followed this path and who found the Intro to CS class too easy and who then skipped into SUPA have ended up regretting this and, more often than not, they have had to drop the SUPA class.
Ask yourself– Would you skip Calculus I and instead jump right to Calculus II?
Probably not.
And it’s not much different here; while it has been done, for the most part it has only been successfully pulled off by students who are “hardcore” programmers and who have voluminous experience coding outside the classroom. Kids who have made their own apps and learned how to do real programming on their own.
Now, if that describes you and you have made real apps that you can show, then maybe this is the right move, but otherwise, this jump almost never is.
So, what students should do is this – Have your guidance counsellor sign you up for CS II for next year. If you complete the online part of the CS II curriculum, by June, then we can sit down and I will have an assessment of your readiness to make this radical jump.