Matematik Problemi Ve Javascript

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    merhaba arkadaşlar. konum çözmek için bilgisayar yardımı almaya çalıştığım bir matematik problemi ile ilgili olduğu için matematiğe ilgisi olanı matematik ismiyle, javascripte ilgisi olanı javascript ismiyle konuya davet etmek istedim.

    youtube da bir problem gördüm. problem şu: bir kareli defter düşünün çizgilerin kesişim noktalarını düşünün. 

    2x2, 3x3, 4,x4

    o o     o o o     o o o o     o o o o o    . . . . . . n 
    o o     o o o     o o o o     o o o o o    . . . . . . n 
            o o o     o o o o     o o o o o    . . . . . . n 
                      o o o o     o o o o o    . . . . . . n 
                                  o o o o o    . . . . . . n 
                                               . . . . . . n 

    bu noktaları öyle bir şekilde karalayalım ki en çok noktayı karalayalım ve karaladığımız noktalar bir dikdörtgen oluşturmasın örneğin bu kurala uygun 2ye2 olan karede 1,1-1,2-2-1 i karalayabiliriz, 3e3te 1,1-2,1-2,2-2,3-3,1-3,3 ü karalayabiliriz. bu kurala uyarak en fazla kaç kare karalayabileceğimizin kuralını bulmaya çalışıyoruz. işte 2ye2 için 3, 3e3 için 7 gibi n-n için formülü arıyoruz.

    sorunun sorulduğu video şu: https://youtu.be/84m6ssajjwg buradan daha ayrıntılı bilgi alabilirsiniz.

    el yordamıyla deneyince çeşitli şekiller çıkıyor gibi ama kesin bir motife uydurmak zor, bazen uydu sanıyorsunuz bazı karelerde sıkıntı çıkıyor. ben de o yüzden problemin çözümü için bilgisayar yardımı almaya karar verdim.

    buna göre şöyle bir mantıkta program yazmayı düşündüm

    Girdi: sayı
    işlemler:
    1. o sayı ve o sayıya kadarki sayma sayılarının 2li permütasyonu (esasen tam permütasyon gibi değil mesela 3 için 111 ya da 112 normal permütasyon kuralında olmuyor, başka bir terim varsa bilmiyorum ama bence siz beni anladınız, bilen varsa bilgilendirsin lütfen)
    2. o permütasyon elemanlarına ait kümenin tüm alt kümelerini oluşturmak
    3. sonra o alt kümelerin elemanlarının mümkün 4lü kombinasyonlarını yapmak
    4. daha sonra o 4lü kominasyonlarında (a,x)(a,y)(b,x)(b,y) içeren alt kümeleri elemek
    5. elimizde kalan alt kümelerden eleman sayısı en yüksek kümeleri yazdırmak

    buna göre kuralları sağlayan karalama yöntemlerini tespit ederek bunları görselleştirmeyi düşünüyorum. daha sonra o görselden ya da yine matematiksel olarak belli bir desen görmeye çalışıp varsa uygun denklemi bulmaya çalışacağım.

    ben çok programlama dili bilmiyorum bildiklerim arasından JavaScript ile bu programı yazmaya çalıştım fakat yazdığım programın bir kısmında(yazdırma aşamasında) for loopum kırılıyor nedenini anlayamadım, sanırım return ile çıktı almamam gerekiyormuş vesaire denedim ama yapamadım acaba konu ile ilgili bilgili olan biri yardım edebilir mi?

    http://tpcg.io/UzDaMI 

    konuyu yazarken sanırım hatamı fark ettim: sanırım dikdörtgenleri araştırdığım fonksiyondaki çıktı continue olduğu için benim o loop sürekli continue diyerek hiçbir çıktı vermiyor. bence büyük ihtimalle sorun bu. şimdi araştırsam çözümü bulurum belki ama bu kadar yazdım yine boşa gitmesin paylaşmış olayım hem bir hata deneyimi hem de bir matematik problemi paylaşmış olurum. herkese iyi günler....

    kofcu tarafından 29/Kas/18 16:36 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    Çözümünü bulamadım arkadaşlar hem problemin hem de JS'de yaptığım hatanın...


    ben de sevgiden yanayım...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Kısmî bir çözüm olabilir ama şöyle düşünüyorum..

    Matris nxn boyutunda olsun .

    N çift sayı ise merkezde 2x2  tek sayıda ise 1x1 [ ya da 3x3 ]matris vardır .. burdan başlayarak    bir sarmal gibi matrisi genişleterek ör..


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    arkadaşlar bir şekilde çözdüm şuan ama yetersiz bellek uyarısı alıyorum belli bir işlem sonrası. öneriniz nedir?

    ayrıca dikdörtgen içeren alt kümeleri görmek istemediğim için şöyle bir versiyon yaptım: 

     

    not: denedikçe gördüğüm kadarıyla esasen başaramamışım.....

    kofcu tarafından 01/Ara/18 23:28 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PcK0
    PcK0's avatar
    Kayıt Tarihi: 13/Nisan/2007
    Erkek

    Konuyu görmüştüm fakat çok üzerinde durmamıştım. Biraz önce denk geldi, pisagor matematik evi youtube kanalında yayınlanmış. Biraz baktım ve kanalda soru çözümüne dair hala video eklenmediğini gördüm. Birazda ben kurcaladım vardığım sonuçları paylaşayım.

    1) Öncelikle dikdörtgen varlığının kontrolü için bilgisayarda en uygun yöntem binary sistemini kullanmak. Yani karalanmış yuvarlak 1 karalanmamış yuvarlak 0 kabul edilip satırları ucuca eklemek. Yani;

    - tümü boş 3x3 için gösterim: 000000000

    - 3x3 ve ilk satırın sonu, ikinci satırın ortası ve üçüncü satırın başı karalanmış şekildeki gösterim: 001010100

    şeklinde kontroller yapmak. Elbetteki farklı şekillerde bellekte tutulabilir fakat kare büyüdükçe kaba saldırı yaparken bize oldukça kolaylık sağlayacak bir durum bu.

    2) Kaba atak yapılırken sıfırdan başlamamak. Yani kare 5x5 iken max 12 adet karalama yapılabiliyorsa 6x6 da 12den başlamak ya da n=kare büyüklüğü ise 2n-1 şeklinde bir formülden başlamak.

    3) Büyük sayılarda kaba saldırı yaparken bilgisayarın işi oldukça zor çünkü max 2^(n x n) kadar olasılık ortaya çıkıyor. 5 için 2^25 = 33 554 432 iken dakikalar içinde işlenebilir bir sayı iken, 8 için bu sayı 2^64 = 18 446 744 073 709 551 616 gibi ciddi anlamda büyük bir sayıya ulaşıyor. Yani tüm alt kümeleri kolayca kontrol etmek mümkün değil.

    4) Kaba saldırı için en az 4lü noktaları taramak gerekiyor. Çünkü 3 nokta bir dörtgen belirtemiyor.

    5) Kaba saldırıya tüm yerler karalanmış şekilde başlamak daha mantıklı gibi geliyor çünkü bir alt kümenin kare içerdiğini söylemek daha kolay oluyor.

    6) Kaba saldırı için alt kümeleri taramaya başlamadan önce güzelce bir dikdörtgenVarMi fonksiyonu yazmak gerekiyor.

    7) Matematik Dünyası dergisinde 2003 Kış sayısında buna değinilmiş: http://www.matematikdunyasi.org/arsiv/PDF/03-I-62-62-DikdortgensizKar.pdf 

    8) Sayılar çok büyük olduğu için CİDDİ anlamda kaba saldırı yapacak programları yazmak başlı başına iştir ve oldukça derindir. Yazılımından kullanılacak işlemcisine kadar muazzam bir konu çıkar önümüze. Başlı başına bile bir araştırma konusu olabilir. Tüm bunlara rağmen bu kadar derinleştirmeden birşeyler yapabilir miyiz? Elbette. Yani javascript gibi interpreted programlama dilleri yerine interpreted dillere nazaran kat ve kat hızlı çalışan native programlama dillerin kullanılması gerekir.

    Edit: native diller: c, c++, c# vs

    PcK0 tarafından 03/Ara/18 03:03 tarihinde düzenlenmiştir

    Sadece bi imza..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    PcK0 hocam cevabını yeni gördüm, teşekkür ederim. ben de javascript in uygun olmadığını tahmin ettim ama programlama adına pek bir bilgim olmadığından olan kadarıyla bir şeyler yapmaya çalıştım, o da olmadı.

    arkadaşla baya kafayı yorduk ya soruya. bi desen bulduk gibi ama henüz emin değiliz, programla tüm ihtimalleri değerlendirebilseydik daha iyi olacaktı..

    sfs

    şimdilik şu şekilde sayılara eriştik:

    2	3	4	5	6	7	8	9	10	11	12	13	14	15
    3	6	9	12	16	21	26	31	36	41	47	53	59	66

    ben de sevgiden yanayım...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    american
    mizahi
    mizahi's avatar
    Kayıt Tarihi: 02/Haziran/2007
    Erkek

    Ben anlamadim galiba. 3X3 matrixde {1,3} noktasini niye karalamadik. 

    Videoda da ayni sekilde sol ust noktayi dikdortgen olusturuyor diye sildi.

    Asagidaki gibi olsa dikdortgen olusmus oluyor mu?

    1 1 1 

    o 1 o 

    1 1 1


    All I need is a possibility.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek
    mizahi bunu yazdı

    Ben anlamadim galiba. 3X3 matrixde {1,3} noktasini niye karalamadik. 

    Videoda da ayni sekilde sol ust noktayi dikdortgen olusturuyor diye sildi.

    Asagidaki gibi olsa dikdortgen olusmus oluyor mu?

    1 1 1 

    o 1 o 

    1 1 1

    oluyor hocam 11,13,31,33 dikdörtgen olmuş oluyor. yani kare de dikdörtgen sayılıyor.

    ayrıyeten 11,12,31,32 ve 12,13,32,33 de dikdörtgen oluşturuyor

    kofcu tarafından 07/Ara/18 00:42 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    american
    mizahi
    mizahi's avatar
    Kayıt Tarihi: 02/Haziran/2007
    Erkek

    O zaman asagidaki 4x4 hali

    o o o 1 

    o o o 1

    o o o 1

    1 1 1 1

    Bu da 5x5

    o o o o 1

    o o o o 1

    o o o o 1

    o o o o 1

    1 1 1 1 1

    Birsey mi kaciriyorum?


    All I need is a possibility.
Toplam Hit: 921 Toplam Mesaj: 9
javascript matematik