The Midlife Geek

Ramblings of a middle aged engineer, runner and open source enthusiast

Category: Computing (page 1 of 5)

Computing is the use or operation of computers. I’m primarily concerned with software development. A system is:

An assembly of components connected together in an organised way”.

I like to take an engineering approach. Engineering is concerned with:

• Meeting a defined set of requirements
• Follows a clear processes in stages with defined objectives
• Utilises the engineer’s skill and experience
• Results have to be validated
• A set of standards are followed

I’m fascinated by programming. Most of my study has been Java, ever popular with Universities. Most importantly I try to recognise languages are a tool. I often use Python and R for that reason. A fan of Joshua Bloch, I like to consider design patterns. I believe there’s an elegance in the simple solution.

I’m working through Project Euler. This has been a great opportunity to put everything together – not working in software development reduces the opportunity.

Struggled to get my head around Euler problem 15:

Starting at the top left of a 20×20 grid and only moving right and down, how many routes are there?

I figured that this was a combinatorics problem but couldn’t see what to count or choose from.

I recently gave up Facebook and wanted to remove Facebook’s app. For me Facebook has become too much of a trade for privacy. Given that change in trust, it annoys me not having the option to remove the app on Samsung.

Enable Android debugging and install Android Debug Bridge (ADB) tools:

ADB lets you issue commands to the device’s shell, such as pm the package manager. You need to find the app you want to remove:

 12 pm list packages | grep [packagename] pm uninstall -k --user 0 [packagename]

Success!

Project Euler again, problem 19. How many Sundays fell on the first of the month in the twentieth century?

Brute force solution in R but it let me play around with the way R handles dates. Seems more straight forward than in many languages (looking at you Java).

Project Euler problem 25 is to find the index of the first Fibonacci number of 1000 characters. I used the gmp library – I couldn’t find a way to get the length of a bigz data type so converted it to a string:

Project Euler problem 17:

If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.

If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?

Project Euler again, this time Python. The problem is to sort a list of 5000 names alphabetically then give them a value. For example “COLIN” is 3 + 15 + 12 + 9 + 14 = 53 and is the 938th item – so its value is 49714 (53*938).

Project Euler problem 21 is to find the sum of all amicable numbers under 10000. An amicable number is:

Let $$d(n)$$ be the sum of proper divisors of $$n$$ then $$d(a)=b$$ and $$d(b)=a$$ if $$a!=b$$ then $$a$$ and $$b$$ are amicable numbers.

Problem 13 is summing a list of fifty digit numbers. I used the gmp library and R to solve in 2 lines:

library(gmp)
print(substring((sum(as.bigz(readLines("euler13.txt")))), 0, 10))

Not much more to say really. I forgot the problem asks for the first 10 digits, so my first answer was wrong.

OK so today I’m trying problem 12 – find the first triangular number with over 500 divisors. This is the first Project Euler problem I’ve really struggled to find a solution in a reasonable amount of time. Continue reading

I’m beginning to like R. You can capture table data from a connection (a generalised file), one of which is the clipboard, to a data frame.

problem.matrix <-
as.matrix(read.table("clipboard",sep=" "))