Project Euler with Befunge

Fork me on GitHub

Problem 045: Triangular, pentagonal, and hexagonal


Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:

Name Formula Numbers
Triangle T_{n} = n(n+1)/2 1, 3, 6, 10, 15, ...
Pentagonal P_{n} = n(3n-1)/2 1, 5, 12, 22, 35, ...
Hexagonal H_{n} = n(2n-1) 1, 6, 15, 28, 45, ...

It can be verified that T285 = P165 = H143 = 40755.

Find the next triangle number that is also pentagonal and hexagonal.

v                 >v
>8::**::**8*:*20pv0v>vv p03+g03*2:p01-\g01+g03:<
v           +"l#"<3pp2# v/4    <   >:30g+10g`! |
>1+::2*1-*64**v   010>0g>:10g`#^_>:|:/4p03/2g03<
^        <  $<>1+:^>^ >30g2/30p4/^ >$30g:*-v
@.*-1*2:_^#!_^#!                    -5%6g03<
Stack:   (0)


This problem is very similar to the previous one. We iterate through all Pentagonal numbers (starting at P_144) and test the numbers if they are hexagonal.

The test for hexagonal numbers is the same as in Problem-44, but we have to expand the iSquare function for int64 numbers ([20] is now 2^60 instead of 2^30).

The major trick is that we only need to test for the hexagonal property. Because all hexagonal numbers are also Triangle numbers. Think about it, a Hexagon has six edges and a Triangle three, so every Hexagonal contains two triangles.

H_{n} == T_{2*n}

Interpreter steps: 25 312 679
Execution time (BefunExec): 3.49s (7.24 MHz)
Program size: 48 x 6 (fully conform befunge-93)
Solution: 1533776805
Solved at: 2014-12-11

made with vanilla PHP and MySQL, no frameworks, no bootstrap, no unnecessary* javascript