Complicated BASIC schemes

Nowadays, most of us have used Google Maps or OSM to get directions to somewhere or plan a route. With the right datasets, you can perform more detailed analysis, such as this recent Esri blog post showing how to calculate the slope of a hiking trail. It wasn’t always this easy though.

I recently picked up a copy of that 1987 classic, The Ordnance Survey Outdoor Handbook (Macmillan London Ltd, ISBN 0-333-42505-7). It’s actually quite a useful and detailed book, covering map scales, grid references, the country code, weather, first aid, and so on. It has geological, botanical, and sociological histories of Britain, and there are sections on identifying plants, animals, and landscapes. There is also a list of radio station frequencies (both MW and VHF), and phone numbers for weather forecasts (with 01 codes for the London numbers – remember them?).

The navigation chapter was particularly interesting – after discussing identifying landmarks, taking bearings, and navigating without a compass, the author moved on to determining the difficulty of a walk.

Apparently, many guidebooks show difficulty but unless you know the scheme being used, it may not be useful.

“There is an international standard scheme for grading the difficulty of climbs and mountain walks, and efforts are being made to devise and agree a similar standard system for all walkers that will apply throughout Europe. Until such a system appears, you will have to improvise as best you can, and the scheme offered here may provide a basis for you.”

A scheme to calculate the difficulty of a walk

To be honest, I’m struggling a bit with this scheme. It’s too complicated and the scoring system is fairly arbitrary. I can’t imagine anyone calculating the percentage of their route that covers metalled roads, open ground, muddy ground, large boulders, etc. I’ve always used Naismith’s Rule, which is much more straight forward, and gives a pretty good estimate of the time needed to complete the route.

As the text states, there is a BASIC program to help you calculate it (though it doesn’t help you calculate the percentages, and only allows you to enter up to four, rounded up to the nearest 25%). Nothing dates a publication more than using the latest technology, and this listing really makes the book feel like it’s from another era.

Calculating the difficulty of a walk

In the interests of bringing things bang up-to-date (and firmly placing them in the early 2010s), here’s a Python version, so we can all have a go. Now, is that muddy ground or stony ground?

print “CALCULATING THE DIFFICULTY OF A WALK”
print “How long is the walk? Is it:”
print “less than 6km? Type 1;”
print “6-10km? Type 2;”
print “11-15km? Type 3;”
print “16-25km? Type 4;”
print “more than 25km? Type 5.”
a=int(raw_input())

print “\n\nWhat is the terrain like? Select from the list”
print “below. After each selection, type on the next”
print “line .25, .5, .75, or 1, to show the proportion”
print “of the walk accounted for by each type. You may”
print “choose up to 4. Type a zero (0) and on the”
print “following line a 1 for any choices you do not”
print “use. Is the terrain:”
print “metalled road? Type 1;”
print “well-made path? Type 2;”
print “firm beach? Type 2;”
print “open ground? Type 3;”
print “muddy ground? Type 4;”
print “stony ground? Type 4;”
print “loose sand? Type 4;”
print “large boulders? Type 5;”
print “heather or tussocky ground with no path? Type 5;”
print “ice or snow? Type 6.”
b=int(raw_input())
c=float(raw_input())
d=int(raw_input())
e=float(raw_input())
f=int(raw_input())
g=float(raw_input())
h=int(raw_input())
i=float(raw_input())

print “\n\nHow much climbing and descending will you do?”
print “less than 50m? Type 1;”
print “51-100m? Type 2;”
print “101-300m? Type 3;”
print “301-500m? Type 4;”
print “501-700m? Type 5;”
print “701-1000m? Type 6;”
print “more than 1000m? Type 7.”
j=int(raw_input())

k=(b*c)+(d*e)+(f*g)+(h*i)
l=a*k*j
a=6-a
m=a*j
n=(l+m)/5

print “n=” + str(n)
print “\n\n”
if n<6:
print “The walk will be easy”
elif n>=6 and n<11:
print “The walk will be moderate”
elif n>=11 and n<16:
print “The walk will be fairly strenuous”
elif n>=16 and n<21:
print “The walk will be strenuous”
elif n>=21 and n<26:
print “The walk will be very strenuous”
elif n>=26:
print “The walk will be very strenuous and difficult”

 

Advertisements