Joseph Gulizia
2015-08-20 03:12:56 UTC
Complicating a simple expression
Coding Exercise: Complication
Assume that the grader defines two variables A and B for you. Write a
program which prints out the value
min(A, B)
However, there is a catch: your program is not allowed to use the min
function. Instead, use max in a clever way to simulate min.
Hint, Method 1
What is max(-A, -B)?
Hint, Method 2
What is min(A, B)+max(A, B)?
--------------------------------------
Code that gave best results but didn't work for negative numbers...
--------------------------------------
Original = abs(max (-A, -B))
print (Original)
--------------------------------------
Did not pass tests. Please check details below and try again.
Results for test case 1 out of 5
Before running your code: We defined A equal to 35 and B equal to 45.
Program executed without crashing.
Program gave the following correct output:
35
Results for test case 2 out of 5
Before running your code: We defined A equal to 65 and B equal to 20.
Program executed without crashing.
Program gave the following correct output:
20
Results for test case 3 out of 5
Before running your code: We defined A equal to 48 and B equal to 63.
Program executed without crashing.
Program gave the following correct output:
48
Results for test case 4 out of 5
Before running your code: We defined A equal to 0 and B equal to 70.
Program executed without crashing.
Program gave the following correct output:
0
Results for test case 5 out of 5
Before running your code: We defined A equal to -64 and B equal to 0.
Program executed without crashing.
Program output:
64
Expected this correct output:
-64
Result of grading: Your output is not correct.
Spreadsheet examples:
A B Min(A, B) Max(-A,- B)
10 5 5 - 5
5 10 5 - 5
9 12 9 - 9
12 9 9 - 9
22 37 22 - 22
37 22 22 - 22
45 68 45 - 45
68 45 45 - 45
- 6 15 - 6 6
-15 6 - 15 15
-80 - 65 - 80 80
-65 - 80 - 80 80
44 -102 -102 102
-44 102 - 44 44
CS Assistant2 stated:
Using the absolute value of the numbers will cause problems with this
solution because sometimes the answer should be a negative number. However,
when you calculate the absolute value of a number, that result will always
be larger than any negative number.
I would suggest you go back to your original table, but include some values
for A and B that are negative numbers (A is negative, B is negative, A and
B are both negative). See what numbers you get for min(A, B) and max(-A,
-B) in those cases.
Think about ways, other than absolute value, that will allow you to convert
a negative number to a positive number and vice versa.
I hope this helps.
Sandy
CS Assistant1 stated:
Hi,
Gathering this much data is a very good start! The two hints give two
different approaches. So let me highlight the 4 most relevant columns:
A B Min(A, B) Max(-A,- B)
10 5 5 -5
5 10 5 -5
9 12 9 -9
12 9 9 -9
22 37 22 -22
37 22 22 -22
45 68 45 -45
68 45 45 -45
What's the relationship between min(a, b), which you want but can't
directly call, and max(-a, -b), which you can compute? Feel free to ask if
another hint would help.
Best,
- Dave
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
Coding Exercise: Complication
Assume that the grader defines two variables A and B for you. Write a
program which prints out the value
min(A, B)
However, there is a catch: your program is not allowed to use the min
function. Instead, use max in a clever way to simulate min.
Hint, Method 1
What is max(-A, -B)?
Hint, Method 2
What is min(A, B)+max(A, B)?
--------------------------------------
Code that gave best results but didn't work for negative numbers...
--------------------------------------
Original = abs(max (-A, -B))
print (Original)
--------------------------------------
Did not pass tests. Please check details below and try again.
Results for test case 1 out of 5
Before running your code: We defined A equal to 35 and B equal to 45.
Program executed without crashing.
Program gave the following correct output:
35
Results for test case 2 out of 5
Before running your code: We defined A equal to 65 and B equal to 20.
Program executed without crashing.
Program gave the following correct output:
20
Results for test case 3 out of 5
Before running your code: We defined A equal to 48 and B equal to 63.
Program executed without crashing.
Program gave the following correct output:
48
Results for test case 4 out of 5
Before running your code: We defined A equal to 0 and B equal to 70.
Program executed without crashing.
Program gave the following correct output:
0
Results for test case 5 out of 5
Before running your code: We defined A equal to -64 and B equal to 0.
Program executed without crashing.
Program output:
64
Expected this correct output:
-64
Result of grading: Your output is not correct.
Spreadsheet examples:
A B Min(A, B) Max(-A,- B)
10 5 5 - 5
5 10 5 - 5
9 12 9 - 9
12 9 9 - 9
22 37 22 - 22
37 22 22 - 22
45 68 45 - 45
68 45 45 - 45
- 6 15 - 6 6
-15 6 - 15 15
-80 - 65 - 80 80
-65 - 80 - 80 80
44 -102 -102 102
-44 102 - 44 44
CS Assistant2 stated:
Using the absolute value of the numbers will cause problems with this
solution because sometimes the answer should be a negative number. However,
when you calculate the absolute value of a number, that result will always
be larger than any negative number.
I would suggest you go back to your original table, but include some values
for A and B that are negative numbers (A is negative, B is negative, A and
B are both negative). See what numbers you get for min(A, B) and max(-A,
-B) in those cases.
Think about ways, other than absolute value, that will allow you to convert
a negative number to a positive number and vice versa.
I hope this helps.
Sandy
CS Assistant1 stated:
Hi,
Gathering this much data is a very good start! The two hints give two
different approaches. So let me highlight the 4 most relevant columns:
A B Min(A, B) Max(-A,- B)
10 5 5 -5
5 10 5 -5
9 12 9 -9
12 9 9 -9
22 37 22 -22
37 22 22 -22
45 68 45 -45
68 45 45 -45
What's the relationship between min(a, b), which you want but can't
directly call, and max(-a, -b), which you can compute? Feel free to ask if
another hint would help.
Best,
- Dave
_______________________________________________
Tutor maillist - ***@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor