联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2023-05-27 01:34

Computer Science 220, S1 2023

Assignment 4 (traversal and optimisation)

See Canvas for due dates

This assignment requires you to submit programs in Python that you have written yourself

to the automarker, https://www.automarker.cs.auckland.ac.nz. Your implementation

must be from first principles and cannot use an existing library methods that might solve

the problem (eg performs graph operations etc).

The automarker runs on a Linux box. Read the automarker help and FAQ for more

details.

Please submit only Python source code (.py extensions only).

1. Arithmetic trees 30 marks

You are given an input file with multiple pairs of input lines. The first line of each

pair is a tree given as a predecessor array. The second line is the value at the

corresponding node. Values at leaf nodes (nodes with no children) are integers. At

non-leaf nodes, the two possible values are + or ∗.

The tree represents an arithmetic expression where the value at a non-leaf node u is

the sum of values at the children of u in the case of +, or the product of values at

the children of u in the case of ∗.

You need to calculate the value at each node and output the calculated value at the

root. The tree is not constrained to be binary.

Input format: Input consists of m pairs of lines of comma separated values, so

2m lines in total. The first line is each pair is a comma separated list of integers

representing a tree in predecessor array format where −1 represents null.

The second line in each pair is a comma separated list of integers and the symbols +

and ∗. The ith item on the list is the value or operator at the ith node in the tree.

For example:

-1,0,0,0,1,1

+,*,2,3,0,7

2,0,-1,0

+,3,*,3

Output format: For each pair of input lines, output a line containing the value

calculated at the root of the tree.

For the example input above, output would be:

5

6

1

2. Optimisation 30 Marks

A frog needs to navigate its way from its current position to its next meal through

a dangerous landscape. To do so, it leaps from boulder to boulder, but it can jump

at most 1m. Your aim is to find the length of the shortest path to get the frog to its

next meal using only boulders.

The landscape is a n × n square (units are cm) with boulders at exact positions

given by coordinates (x, y) where 0 ≤ x, y ≤ n. Boulders are scattered across the

landscape. Use Euclidean distance to calculate the distance between boulders.

Input format: The input is taken from the keyboard (e.g. by sys.stdin) as multiple

lines of comma separated integers. Each line has 2p + 1 numbers where p ≥ 2. The

first number on each line is the size of the landscape, n.

The following 2p numbers give locations of p boulders, so the jth boulder is at

(2j, 2j + 1).

The first position listed on each line is the frog’s current position, the final position

listed is the target boulder where the frog will find its next meal.

For example:

100,0,0,0,100,100,100

1000,20.892,986,602,138.97,206.2,10.44

200,25,25,10,1,50,25,140,30

Output format: For each line of input, output a single number to the console

which is the length of the shortest path from the starting position to the next meal.

Use str.format to give this value to 2 decimal places. Precisely, format x using

’{:.2f}’.format(x). Do not use any other rounding throughout your algorithm.

If the next meal is unreachable from the origin, output -1.

For the example input above, output would be:

200.00

-1

115.14

Marking

The maximum number of submissions for each problem is fixed at 12. Each problem

has three test cases associated with it worth one third of the marks for that problem.

Some of the test cases will be large to test for efficiency. You get full marks if you

pass all test cases.

2


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp