Yazan : Şadi Evren ŞEKER

Robert Floyd tarafından tasarlanan bir sayı üçgenidir. Üçgen, her satırda, o satır kadar elemandan oluşan ve ardışık sayma sayılarının satırlara dağıtılması ile şekillenen, sağa yaslı bir dik üçgen olarak tanımlanabilir:

1

2  3

4  5  6

7  8  9 10

11 12 13 14 15

Yukarıdaki şekilde üçgenin ilk 5 satırı görülebilir.

Üçgenin en solundaki sütunda bulunan sayıları listeleyecek olursak:

1, 2, 4, 7, 11 şeklindeki sayılara, merkezi poligon sayıları ismi verilir. Bu sayılar, verilen doğru sayısına göre, bir daireyi kaç farklı şekle böldüğünü gösterir.

Örneğin yukarıdaki sayı serisini eksi olmayan tam sayılar ile birebir eşleştirirsek

0 1 2 3 4 5
1 2 4 7 11 16

Yukarıdaki gibi bir tablo elde ederiz. Bu tablodaki ilk satır kaç doğru kullandığımız, ikinci satır ise kaç parça elde ettiğimizdir. Örneğin ilk sütunda 0 doğru kullanılmış ve daire en fazla tek parçaya ayrılabilmiştir. İkinci sütunda tek bir doğru ile daire iki parçaya ayrılmıştır. 3 doğru kullanarak daire en fazla 7 parçaya ayrılabilir. Bu durumu aşağıdaki şekilde görebilirsiniz:

Yukarıdaki şekilde görüldüğü üzere daire 7 farklı parçaya bölünmüştür.

Kısacası, Floyd üçgeninin ilk sütununda bulunan sayılara, merkezi poligon sayıları (central polygon numbers) veya tembel pizzacı serileri (lazy caterer’s sequence) isimleri verilir. Bu ikinci isimlendirme, bir pizzacının, pizzasını en az bıçak darbesi ile en çok parçaya ayırma hevesinden gelmektedir 🙂

Floyd üçgeninin ilk sütununu oluşturan bu seri, aşağıdaki formül ile hesaplanabilir:

k = (n2 + n + 2) / 2 , bu denklemdeki n satır sayısı, k ise bu satırdaki ilk elemandır (veya aynı formül merkezi poligon sayılarını bulmak için de kullanılır)

Floyd üçgeninin diğer bir özelliği ise, herhangi bir satırdaki sayıların toplamının aşağıdaki formül ile bulunabilmesidir:

n(n2 + 1)/2

Yorumlar

  1. furkan yücebaş

    floyd üçgeni için c kullanarak yazdığım basit bir kod incelemek isteyenler için...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    int main()
    {
        int num, i, j ,value=1;
        printf("please enter the height of the triangle:");
        scanf("%d", &num);
     
           for(i=0; i<num; i++)
           {
              if(value<=10)
                {
                  for(j=0; j<=i;j++) 
                   {
                      printf("%d  ",value);
                      value++;
                   }
                  printf("nn");
                }
               else
                {
     
                  for(j=0; j<=i;j++) 
                   {
                      printf("%d ",value);
                      value++;
                   }
                  printf("nn");
                }
     
           }
        printf("n");
        system("pause");
        return 0;
    }

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


beş × 5 =