6_6
יום שני, 28 בנובמבר 2011
יום ראשון, 20 בנובמבר 2011
Binary Trees 1
6_1
There are four leaves, 3 nodes have two children, and it would take 2 iterations to find out that 12 is not in it, i believe
6_2
Yes it worked.
6_3
I don't know why it took me so long to figure out where to put the code
public void add(Object newValue)
{
TreeNode newNode = new TreeNode(newValue,null,null);
if(root==null)//bst is empty, make root reference node referenced by newNode
{
root=newNode;
}//if
else//search for place to insert node referenced by newNode
{
TreeNode T=root;//T is a traversing TreeNode reference (pointer)
TreeNode follow=null;//follows one node behind T
while(T!=null)
{
follow=T;
if (((Comparable)newNode.getValue()).compareTo(T.getValue())==0){return;}
if (((Comparable)newNode.getValue()).compareTo(T.getValue())>0)
{//the value in node referenced by newNode >=
//value in node referenced by T (go right)
T=T.getRight();
}//if
else
{//go left
T=T.getLeft();
}//else
}//while
//follow will now reference (point to) the node where insertion to be made
if (((Comparable)newNode.getValue()).compareTo(follow.getValue())>=0)
{//the value in node referenced by newNode >=
//value in node referenced by follow (link right)
follow.setRight(newNode);
}//if
else
{//link left
follow.setLeft(newNode);
}//else
}//else
}//add
}//class BST
6_4
I am not sure why
6_5
public void find(Object target){
if(root==null){return;}
TreeNode T=root;//T is a traversing TreeNode reference (pointer)
TreeNode follow=null;//follows one node behind T
while(T!=null); {
follow = T;
if (((Comparable)newNode.getValue()).compareTo(T.getValue())==0) {return T;}
if (((Comparable)newNode.getValue()).compareTo(T.getValue())>0) {T=T.getRight();}
else {T=T.getLeft();}
}
return null;
}
יום ראשון, 23 באוקטובר 2011
Long Overdue Stacks
4_1 done
4_2 done
4_3 done
4_4 yes, resolved
4_5 wasn't that hard, done
The recursive sum method helped visualize things, but a little redundant to me.
To create infinite recursion with a positive number, I would have to delete the base case or alter it.
4_6
This took a while because of my syntax of ArrayStackList, but i had the logic down pretty quickly
4_2 done
4_3 done
4_4 yes, resolved
4_5 wasn't that hard, done
The recursive sum method helped visualize things, but a little redundant to me.
To create infinite recursion with a positive number, I would have to delete the base case or alter it.
4_6
This took a while because of my syntax of ArrayStackList, but i had the logic down pretty quickly
public class StringReverseDemo extends ArrayListStack
{
//uses stacks (class ArrayStack) to reverse word.
public static String getReverse(String word)
{
ArrayListStack stack1=new ArrayListStack();
String result = "";
for (int i=0;i<word.length();i++){
stack1.push(word.substring(i, i+1));
}
while (!stack1.isEmpty()){
result+=stack1.pop();
}
return result;
}//getReverse
//uses recursion to reverse word
public static String getReverseRecursive(String word)
{
if (word.length()==1){return word;}
else
return word.substring(word.length()-1,word.length())+getReverseRecursive(word.substring(0,word.length()-1));
}//getReverseRecursive
}//class String
4_7
I believe recursion simplifies code dramatically, at least for me, as long as you understand it. The iterative approach is easier to think about but is more prone to errors.
4_8
public static boolean isPalindrome(String word){
return word==getReverseRecursive(word);
}
4_9
Ha!... I'm not sure.
TOWERS OF HANOI
I am really really frustrated because it won't let me run the TowersOfHanoi application. I can still do the other implementation and alterations but I can't check that it completley works.....
4_10
2n^(n-1)
4_11
I didn't really understand this so I got help from classmates.
public void play()
{
setUpPegs();
ArrayStack blue=new ArrayStack(maxPegs);
ArrayStack green=new ArrayStack(maxPegs);
ArrayStack yellow=new ArrayStack(maxPegs);
int difficulty;
SimpleInput inputDifficulty = new SimpleInput();
difficulty=inputDifficulty.getInt("How many disks would you like?");
for (int i=0;i<difficulty;i++)
{
disk temp=new disk(20,100-(i*10),0+(i*5),180-(i*20),"red",true);
blue.push(temp);
temp.makeVisible();
}//for
reDraw(blue,green,yellow);
while(!(blue.isEmpty() && green.isEmpty()))
{
char from, to;
SimpleInput moveCharacter = new SimpleInput();
from = moveCharacter.getChar("from: b=blue, g=green, y=yellow");
to = moveCharacter.getChar("to: b=blue, g=green, y=yellow");
disk carry=null;
boolean valid = false;
while (!valid)
{
switch (from)
{
case 'b': carry=(disk)blue.pop(); valid = true; break;
case 'g': carry=(disk)green.pop(); valid = true; break;
case 'y': carry=(disk)yellow.pop(); valid = true; break;
default : System.out.println("error, try again");
}//switch
}
boolean nextValid = false;
while (!nextValid)
{
switch (to)
{
case 'b': if (blue.isEmpty() || carry.getWidth()<((disk)blue.peekTop()).getWidth())
{
carry.changePosition(carry.getXPosition()%100,180-(stackHeight(blue)*20));
blue.push(carry); nextValid = true; break;
}
else
{
System.out.println("Cannot put bigger disk on smaller disk");
}
case 'g': if (green.isEmpty() || carry.getWidth()<((disk)green.peekTop()).getWidth())
{
carry.changePosition((carry.getXPosition()%100)+100,180-(stackHeight(green)*20));
green.push(carry); nextValid = true; break;
}
else
{
System.out.println("Cannot put bigger disk on smaller disk");
}
case 'y': if (yellow.isEmpty() || carry.getWidth()<((disk)yellow.peekTop()).getWidth())
{
carry.changePosition((carry.getXPosition()%100)+200,180-(stackHeight(yellow)*20));
yellow.push(carry); nextValid = true; break;
}
else
{
System.out.println("Cannot put bigger disk on smaller disk");
}
default : System.out.println("error, try again");
}//switch
}
reDraw(blue,green,yellow);
}//while(main loop)
System.out.println("Well Done");
}//play
4_12
I have NO idea how to implement the algorithm i found online (which I believe is correct) into a solve method.
4_13
Everything worked perfectly, for (a/0) I just got an error, as expected.
4_14
Worked fine, it returned false.
4_15
I honestly don't know how to start this. I looked at my classmate's work for this and it's not that I don't understand the syntax.. this time im having trouble with the logic.
4_16
You would need to change every int in your code into into double, besides ofcourse for the int i =... in loops.
4_17
Easy.
switch (operator)
{
case '+': result=operand1+operand2; break;
case '*': result=operand1*operand2; break;
case '/': {if (operand1==0) {System.out.println("can't divide by 0");return 0;} result=operand2/operand1; break;}
case '-': result=operand2-operand1; break;
}//switch
4_18
I have a few ideas of how to approach this, however I am really running out of time. This is something for me to come back to hopefully sometime this week.
Finally. I caught up.
יום ראשון, 2 באוקטובר 2011
The CatchUp- Part 1
I went back to my previous post and attempted the last exercise and noticed how simple it was. I therefore managed to successfully modify LinkedListTest_Application to incorporate the new methods I made before.
-------------
Here's my recursiveFind method. Wasn't a problem at all.
-------------
Here's my recursiveFind method. Wasn't a problem at all.
public ListNode recursiveFind(ListNode list, Object goal){
if (goal.toString().compareTo(list.getData().toString()) == 0){return list;}
if (list.getData().toString().compareTo(goal.toString()) == 1){return null;}
return recursiveFind(list.getNext(), goal);
}
Here is my recursive Length method. Not a problem either.
public int recursiveListSize(ListNode list){
int count = 0;
if (list.getData()==null)
{return count;}
{count++;}{return recursiveListSize(list.getNext());}
}
for 3_8 I couldn't think of a good way to approach this. The only thing i thought of doing was doing a count, putting the data on an array and then printing that backwards, but I felt like that was somewhat, cheap.
------------
CircularListNodes wasn't tough, it was pretty straight forward. I have it coded on my Eclipse workspace.
3_11 Having an end node complicates it for me and I get confused however it saves you a bunch of coding lines which you can ignore, but I would prefer writing those lines rather than to get confused.
------------
All I want to say at this stage is that a DoubleList is something beautiful and I wish I knew about it earlier.
3_12-3_14 I did, but I wish there were more specifications so I could know if my method is right or wrong.
------------
LINKED LIST APPLICATION.
Mr Daly - I would just like to say that I spent about 10 minutes trying to fix your spelling mistakes in your code which gave me errors. It drove me mad.
I am now on 3_16 and can't keep my eyes open, I will continue my catchup mission tomorrow.
3_12-3_14 I did, but I wish there were more specifications so I could know if my method is right or wrong.
------------
LINKED LIST APPLICATION.
Mr Daly - I would just like to say that I spent about 10 minutes trying to fix your spelling mistakes in your code which gave me errors. It drove me mad.
I am now on 3_16 and can't keep my eyes open, I will continue my catchup mission tomorrow.
יום ראשון, 11 בספטמבר 2011
Linked Lists Student Tasks 1-6
Student task number one disappointingly confused me a lot.
I managed to get task number two; I know it is not a huge accomplishment because it is quite basic, but it's a start.
I managed to get task number two; I know it is not a huge accomplishment because it is quite basic, but it's a start.
public ListNode findInOrderedList(Object goal)
{
if(listEmpty()){return null;}
ListNode temp = list;
while (!(temp.getData().toString().compareTo(goal.toString()) == 1)) // condition that its still in the part that is smaller or equal to it
{
if (goal.toString().compareTo(temp.getData().toString()) == 0)
return temp;
else
temp=temp.getNext();//move on to node 2
}
return null;
}
Task three took a while, but Amit helped me with it, and I finally understood it. This helped me a lot with the syntax of linked lists and their logic.
public void deleteFromList(Object goal)
{
if (findInOrderedList(goal) == null) {return;}
else {
ListNode temp = list;
if (goal.toString().compareTo(temp.getNext().getData().toString()) == 0)
temp.setNext((temp.getNext()).getNext());
else
temp = temp.getNext();}
}
I am not sure why, but the link for task 4 was blocked for me, I am not sure what I was supposed to do, but it didn't seem like such a necessity.
Task 5&6: I honestly was not very sure what was going on. I know realize I need help.
The following week's work is about halfway done, I will post it when I'm done, hopefully in the next day or two. I know I am behind, and it's a little bit frustrating, but I'm catching up.
יום ראשון, 28 באוגוסט 2011
Week 2 (Insertion and Selection Sort, Recursive Iterative, MergeSort QuickSort)
This week's student tasks were surprisingly not as difficult as I expected. I managed to complete the first student tasks in about 10 minutes which was surprising to me. The rest was more or less a review again, but it got me very confident in using Eclipse. The recursive and iterative methods were not a problem. When I arrived to the mergesort activity I was pretty lost. I know how it works yet I can't seem to find the right way to program it, hopefully we could brush over this in class. I am progressing with python, I have done plenty to give me confidence for the in class quizzes. Overall I am doing well, I might just need a little bit of help dealing with the mergesort and quicksorts.
You have probably heard of the group called Folding@Home, created in Stanford. http://folding.stanford.edu/
I heard about this when I was in London and saw a cool 3D visual representation of protein folding on my friends computer. What it does is it runs through a large amount of algorithms and records the data of the outcomes. When proteins don't fold correctly they can cause different diseases or syndromes.
You have probably heard of the group called Folding@Home, created in Stanford. http://folding.stanford.edu/
I heard about this when I was in London and saw a cool 3D visual representation of protein folding on my friends computer. What it does is it runs through a large amount of algorithms and records the data of the outcomes. When proteins don't fold correctly they can cause different diseases or syndromes.
יום ראשון, 21 באוגוסט 2011
Week 1 (Searches, Big O, Visual Rep)
I have completed my first few coding problems using python. They were not difficult at all, the logic is the same and I feel like I am going to grasp the syntax quickly. I went through all the assignments of this week today and noticed that it was more or else of a review of what I already knew, however it really helped me get familiar with Eclipse. The student assignemtn at the end was tough for me I wasn't sure where to start, hopefully we could quickly talk about it in class, otherwise everything else was pretty smooth and self explanatory.
הירשם ל-
רשומות (Atom)