代写代考 PIC16A/homework/main.jpg”)

HW4-checkpoint

Homework 4¶

Copyright By PowCoder代写 加微信 powcoder

Comments are not required for problems 1 and 2. Please add comments for problem 3,4, and 5.¶
Problem 1¶
Construct the following numpy arrays. For full credit, you should not use the code pattern np.array(my_list) in any of your answers, nor should you use for-loops or any other solution that involves creating or modifying the array one entry at a time.

Please make sure to show your result so that the grader can evaluate it!

# run this block to import numpy
import numpy as np

array([[0, 1],

Your Solution¶

np.arange(10).reshape(5,2)

array([[0, 1],

array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])

Your Solution¶

np.arange(10).reshape(2,5)

array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

Your Solution¶

np.arange(11)/10

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

array([ 1, 1, 1, 1, 1, 10, 10, 10, 10, 10])

Your Solution¶

np.append(np.full((5),1),np.full((5),10))

array([ 1, 1, 1, 1, 1, 10, 10, 10, 10, 10])

array([[30, 1, 2, 30, 4],
[ 5, 30, 7, 8, 30]])

Your Solution¶

a=np.arange(10)
a.reshape(2,5)

array([[30, 1, 2, 30, 4],
[ 5, 30, 7, 8, 30]])

array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

Your Solution¶

np.arange(5,15).reshape(2,5)

array([[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

array([[ 1, 3],
[17, 19]])

Your Solution¶

a=np.arange(21)
odd_list=a%2==1
a[odd_list].reshape(5,2)

array([[ 1, 3],
[17, 19]])

Problem 2¶
Consider the following array:

A = np.arange(12).reshape(4, 3)

array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])

Construct the specified arrays by indexing A. For example, if asked for array([0, 1, 2]), a correct answer would be A[0,:]. Each of the parts below may be performed in a single line.

# run this block to initialize A
A = np.arange(12).reshape(4, 3)

array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])

array([6, 7, 8])

Your Solution¶

array([6, 7, 8])

array([5, 8])

Your Solution¶

list1=A[:,2]
list1[1:3]

array([5, 8])

array([ 6, 7, 8, 9, 10, 11])

Your Solution¶

con1=A[2,:]
con2=A[3,:]
np.concatenate((con1,con2))

array([ 6, 7, 8, 9, 10, 11])

array([ 0, 2, 4, 6, 8, 10])

Your Solution¶

array([ 0, 2, 4, 6, 8, 10])

array([ 0, 1, 2, 3, 4, 5, 11])

Your Solution¶

row_first=A[0,:]
row_second=A[1,:]
row_combine=np.concatenate((row_first,row_second))
np.append(row_combine,A[3,2])

array([ 0, 1, 2, 3, 4, 5, 11])

array([ 4, 11])

Your Solution¶

np.append(A[1,1],A[3,2])

array([ 4, 11])

Problem 3¶
In this problem, we will use numpy array indexing to repair an image that has been artificially separated into multiple pieces. The following code will retrieve two images, one of which has been cutout from the other. Your job is to piece them back together again.

You’ve already seen urllib.request.urlopen() to retrieve online data. We’ll play with mpimg.imread() a bit more in the future. The short story is that it produces a representation of an image as a numpy array of RGB values; see below. You’ll see imshow() a lot more in the near future.

import matplotlib.image as mpimg
from matplotlib import pyplot as plt
import urllib

f = urllib.request.urlopen(“https://philchodrow.github.io/PIC16A/homework/main.jpg”)
main = mpimg.imread(f, format = “jpg”).copy()

f = urllib.request.urlopen(“https://philchodrow.github.io/PIC16A/homework/cutout.jpg”)
cutout= mpimg.imread(f, format = “jpg”).copy()

fig, ax = plt.subplots(1, 2)
ax[0].imshow(main)
ax[1].imshow(cutout)

The images are stored as two np.arrays main and cutout. Inspect each one. You’ll observe that each is a 3-dimensional np.array of shape (height, width, 3). The 3 in this case indicates that the color of each pixel is encoded as an RGB (Red-Blue-Green) value. Each pixel has one RGB value, each of which has three elements.

Use array indexing to fix the image. The result should be that array main also contains the data for the face. This can be done just a few lines of carefully-crafted numpy. Once you’re done, visualize the result by running the indicated code block.

The black region in main starts at row 0, and column 50. You can learn more about its shape by inspecting the shape of cutout.

# your solution
#Given the black region in main row starts at 0 ends at 300, and column starts at 50, ends at 300
#we can simply add coutout to main
main[0:300, 50:300] = cutout

# run this block to check your solution
plt.imshow(main)

Problem 4¶
Read these notes from the Python Data Science Handbook on array broadcasting. Broadcasting refers to the automatic expansion of one or more arrays to make a computation “make sense.” Here’s a simple example:

a = np.array([0, 1, 2])
b = np.ones((3, 3))
a.shape, b.shape

((3,), (3, 3))

array([[1., 2., 3.],
[1., 2., 3.],
[1., 2., 3.]])

What has happened here is that the first array a has been “broadcast” from a 1d array into a 2d array of size 3×3 in order to match the dimensions of b. The broadcast version of a looks like this:

array([[0., 1., 2.],
[0., 1., 2.],
[0., 1., 2.]])

Consult the notes above for many more examples of broadcasting. Pay special attention to the discussion of the rules of broadcasting.

Review, if needed, the unittest module for constructing automated unit tests in Python. You may wish to refer to the required reading from that week, the lecture notes, or the recorded lecture video.

Implement an automated test class called TestBroadcastingRules which tests the three rules of array broadcasting.

Rule 1: If the two arrays differ in their number of dimensions, the shape of the one with fewer dimensions is padded with ones on its leading (left) side.

To test this rule, write a method test_rule_1() that constructs the arrays:

a = np.ones(3)
b = np.arange(3).reshape(1, 3)

Then, within the method, check (a) that the shape of c has the value you would expect according to Rule 1 and (b) that the final entry of c has the value that you would expect. Note: you should use assertEqual() twice within this method.

In a docstring to this method, explain how this works. In particular, explain which of a or b is broadcasted, and what its new shape is according to Rule 1. You should also explain the value of the final entry of c.

Rule 2: If the shape of the two arrays does not match in any dimension, the array with shape equal to 1 in that dimension is stretched to match the other shape.

To test this rule, write a method test_rule_2() that constructs the following two arrays:

a = np.ones((1, 3))
b = np.arange(9).reshape(3, 3)

Then, within the method, check (a) that the shape of c has the value you would expect according to Rule 2 and (b) that the entry c[1,2] has the value that you would expect. You should again use assertEqual() twice within this method.

In a docstring to this method, explain how this works. In particular, explain which of a or b is broadcasted, and what its new shape is according to Rule 2. You should also explain the value of the entry c[1,2].

Rule 3: If in any dimension the sizes disagree and neither is equal to 1, an error is raised.

To test this rule, write a method test_rule_3 that constructs the arrays

a = np.ones((2, 3))
b = np.ones((3, 3))

It should then attempt to construct c = a + b. The test should pass if the Rule 3 error is raised, and fail otherwise. You will need to figure out what kind of error is raised by Rule 3 (is it a TypeError? ValueError? KeyError?). You will also need to handle the error using the assertRaises() method as demonstrated in the readings.

In a docstring to this method, explain why an error is raised according to Rule 3.

You should be able to perform the unit tests like this:

tester = TestBroadcastingRules()
tester.test_rule_1()
tester.test_rule_2()
tester.test_rule_3()

Your tests have passed if no output is printed when you run this code.

Your Solution¶

# write your tester class here
class TestBroadcastingRules:
def test_rule_1(a,b):
a = np.ones(3)
b = np.arange(3).reshape(1, 3)

# run your tests
# your tests have passed if no output or errors are shown.

tester = TestBroadcastingRules()
tester.test_rule_1()
tester.test_rule_2()
tester.test_rule_3()

Problem 5¶
Recall the simple random walk. At each step, we flip a fair coin. If heads, we move “foward” one unit; if tails, we move “backward.”

Way back in Homework 1, you wrote some code to simulate a random walk in Python.

Start with this code, or use posted solutions for HW1. If you have since written random walk code that you prefer, you can use this instead. Regardless, take your code, modify it, and enclose it in a function rw(). This function should accept a single argument n, the length of the walk. The output should be a list giving the position of the random walker, starting with the position after the first step. For example,

[1, 2, 3, 2, 3]

Unlike in the HW1 problem, you should not use upper or lower bounds. The walk should always run for as long as the user-specified number of steps n.

Use your function to print out the positions of a random walk of length n = 10.

Don’t forget a helpful docstring!

# solution (with demonstration) here
import random

def rw(n):
positions = [] #contains position
result=[] #contains result of coin toss
current_pos = 0

# run the while loop forever until break
while(True):
#set A as the coin toss and select the numbers randomly
A = random.choice([-1, 1])
# add the coin toss to current_pos, which means move base on coin toss
current_pos += A
# add current_pos to positions
positions.append(current_pos)
# check whether coin toss is head or tails
if (A == 1):
result.append(“heads”)
if (A== -1):
result.append(“tails”)
# when length is reached, break the while loop
if (current_pos == n):
print(“the length has been reached”)
print(positions)
from matplotlib import pyplot as plt
plt.plot(positions)

[1, 0, -1]
[1, 0, -1, -2]
[1, 0, -1, -2, -1]
[1, 0, -1, -2, -1, 0]
[1, 0, -1, -2, -1, 0, -1]
[1, 0, -1, -2, -1, 0, -1, -2]
[1, 0, -1, -2, -1, 0, -1, -2, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4, -3, -4]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4, -3, -4, -3]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4, -3, -4, -3, -2]
[1, 0, -1, -2, -1, 0, -1, -2, -3, -4, -3, -4, -5, -6, -5, -6, -7, -6, -5, -4, -5, -6, -7, -8, -7, -6, -5, -4, -5, -4, -3, -4, -3, -4, -3, -4, -5, -6, -7, -8, -7, -6, -7, -8, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, -1, -2, -3, -4, -5, -4, -3, -4, -3, -2, -3]
[1, 0, -1, -2, -1