Skip to main content

Floyd's Triangle using matlab


Program

Write a program in Matlab to generate Floyd's triangle, until the given rows n. Use the function name floyds.

Floyds Triangle - What is floyds triangle?

Floyd's Triangle is a right angle triangle generally used in computer science. Okay what actually is floyds triangle? The answer is simple. First let us assume that we have to print the numbers of floyd's triangle until row 5, then start with number 1. Now fill the first row with the first number 1. Next the second row with next two numbers 2 and 3, Next the third row with the next three numbers 4, 5 and 6 and so on. It should be observed that we are not doing any math with the numbers but we are just arranging in such a way that the given row number will have the row number of columns, for example row 2 will have 2 columns, row three will have 3 columns and so on. If we arrange the numbers in such a way, for 5 rows, the floyds triangle will be as follows:

Floyd's Triangle
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
To know more about floyds triangle head on to:
1) Floyds Triangle - Wikipedia
2) Floyds Triangle Rosetta code

Solution

The solution is simple, here we will use the basic concepts of math and solve this problem. Look at the code and you will simply understand it. If you didn't understand the program then please see the explanation section below the program section, and if you still don't understand then I recommend you to go and check out these links below to understand the basic concepts behind the program. Links are as follows:
1) Functions in matlab
2) Introduction to vectors in matlab
3) Sprintf (Matlab functions)
4) disp- Display variables

Program


function floyds(n)
%this function will generate floyds triangle upto n rows

%Before starting to write the program we have to know the total number
%of numbers
%involved in the floyds triangle upto n rows

%By doing some math I have found that the total number of numbers 
%is found to be
% 1 row - 1
% 2 rows - 3
% 3 rows - 6
% 4 rows - 10
% 5 rows - 15
% It can be seen that the number of number is equal to the sum of the
% natural numbers of the nth row, which is equal to n*(n+1)/2

%Therefore the last number in the series will be :
%last  number = (n*(n+1))/2;

%We will create a vector in order to store the values in of the given row
vec = [];


for i = 1:n
    j = i-1;
    k = (j*(j+1)/2)+1;
    vec = [k:i*(i+1)/2];
    g = sprintf('%d ',vec);
    disp(g);
end
    
To download the above program in matlab file format, then click here: floyds.m

Explanation

 Please do read the theory on how a Floyd's triangle is formed to understand this explanation easily.
I think most of the theory has been covered in the solution section, but also I have written comments for the same. Okay! lets have a look at the code. First I have created a vector to store the values of the Floyd's triangle generated. Now I have started a for loop to go through the numbers from 1 to n so that we can start filling the numbers accordingly. First of all we should understand that the last number in any row of the Floyd's triangle is given by n*(n+1)/2(try this with your values once!). And now coming back to the program we use the for loop to count the rows like 1, 2, 3.... and remember that in this program for loop is not used to create the values of the Floyd's triangle. If we have used the for loop for generating the values in the Floyd's triangle then we have to use the n*(n+1)/2, so that the loop will iterate till the last number in the sequence. But for now let us stick to our program. We will understand the program line by line:
First we have created the for loop from 1 to n - so that we will iterate through the rows of the Floyd's triangle.
In the next line we have create the variable j so that we will get the value of the previous row through which we have iterated.
Next, we have created a new variable k, so that we will get the value of the last number in the last iteration or the last row. As we know that j is the value of the last row, now the last number in the previous row will be j*(j+1)/2, so in the next row the starting number will be 1+(last number in the previous row i.e. (j*(j+1)/2)+1), which is the value of the k variable.
Next we create a vector which gives the output from the value k to the last number in the given row(i*(i+1)/2).
We finally create a variable g and the store the value of sprintf of the vector.
We display the value of g on the output screen.
I have tried to explain the code in such a way that even the beginners can understand this easily. If you have any doubt or didn't understand the code or any part please do contact me so that not only you but also others can get benefit from your suggestion. You can contact me from here: Contact me

Run your code in matlab software and comment your output in the comment box below!

Reference

1) printf - How to display (print) vector in matlab - Stackoverflow

This code was highlighted using hilite.me .
Keywords: floyds triangle, matlab function

Popular posts from this blog

Making a quiz web app with python and flask

Edit : When you are creating a web app with h tml templates, then y ou will have to sa ve the html file in templates folder in the Current Wor ki ng Directory( CWD). If you save the file in the C W D directl y you will get a TemplateNotFound error. Thank you Udhay for pointing it out.   In this post we will create a quiz website using python . I will be using the flask framework . After reading this tutorial you will learn form submission , flask templates , python code in flask templates , shuffling the questions and options with the random module and few others.  Please note that this tutorial is not big as it seems to be. Some of the code has been rewritten to maintain consistency and also font size is somewhat big so that your eyes won't get stressed reading this tutorial. Also the content has not occupied the full width of the page. In this tutorial I am assuming that you are having a very basic understanding of the flask framework . Please refer the documentation

Problem 11 Project Euler Solution with python

Largest product in a grid In the 20×20 grid below, four numbers along a diagonal line have been marked in red. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07

Problem 60 Project Euler Solution with python

Prime pair sets The primes 3, 7, 109, and 673, are quite remarkable. By taking any two primes and concatenating them in any order the result will always be prime. For example, taking 7 and 109, both 7109 and 1097 are prime. The sum of these four primes, 792, represents the lowest sum for a set of four primes with this property. Find the lowest sum for a set of five primes for which any two primes concatenate to produce another prime. This problem is j u st a brute force problem. If you have come here because you don't know the limit upto which you will h ave to gener ate the prime numbers t hen go ahe ad and t r y with 10,000 . When I first start ed solving the problem I chose 1 million(beca use most of the problem s on project E uler have this limit ), but it took very long for the computer to fin d the solution. After searching on the internet then I found many people choosing 10, 000 so I have changed my in put f rom 1 million to 10000 and the output was f ast. He