Şimdi Ara

Project Euler (4. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
72
Cevap
3
Favori
2.914
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 1234
Sayfaya Git
Git
Giriş
Mesaj
  •  public static int[] nextPermutation(int[] p) {           
    //Step 1
    int a = p.length - 2;
    while (a >= 0 && p[a] >= p[a + 1]) {
    a--;
    }
    if (a == -1) {
    return p;
    }
    //Step 2
    int b = p.length - 1;
    while (p[b] <= p [ a ]) {
    b--;
    }
    //Step 3
    int t = p[a];
    p[a] = p[b];
    p[b] = t;
    //Step 4
    for (int i = a + 1, j = p.length - 1; i < j; i++, j--) {
    t = p[i];
    p[i] = p[j];
    p[j] = t;
    }

    return p;
    }


    Bu kod oluşan sayıyı düşündüğümüzde bir büyük sayı olan permütasyonu veriyor. bunu döngünün içinde kullanarak bütün permütasyonlar yazılabilir. artık 50yi geçebilirim sanırım :)



    < Bu mesaj bu kişi tarafından değiştirildi mertkansimsek -- 4 Ağustos 2013; 10:57:30 >




  • quote:

    Orijinalden alıntı: mertkansimsek

     public static int[] nextPermutation(int[] p) {           
    //Step 1
    int a = p.length - 2;
    while (a >= 0 && p[a] >= p[a + 1]) {
    a--;
    }
    if (a == -1) {
    return p;
    }
    //Step 2
    int b = p.length - 1;
    while (p[b] <= p [ a ]) {
    b--;
    }
    //Step 3
    int t = p[a];
    p[a] = p[b];
    p[b] = t;
    //Step 4
    for (int i = a + 1, j = p.length - 1; i < j; i++, j--) {
    t = p[i];
    p[i] = p[j];
    p[j] = t;
    }

    return p;
    }


    Bu kod oluşan sayıyı düşündüğümüzde bir büyük sayı olan permütasyonu veriyor. bunu döngünün içinde kullanarak bütün permütasyonlar yazılabilir. artık 50yi geçebilirim sanırım :)

    50nin permutasyonla alakası yok ki




  • quote:

    Orijinalden alıntı: ÖmerI

    quote:

    Orijinalden alıntı: mertkansimsek

     public static int[] nextPermutation(int[] p) {           
    //Step 1
    int a = p.length - 2;
    while (a >= 0 && p[a] >= p[a + 1]) {
    a--;
    }
    if (a == -1) {
    return p;
    }
    //Step 2
    int b = p.length - 1;
    while (p[b] <= p [ a ]) {
    b--;
    }
    //Step 3
    int t = p[a];
    p[a] = p[b];
    p[b] = t;
    //Step 4
    for (int i = a + 1, j = p.length - 1; i < j; i++, j--) {
    t = p[i];
    p[i] = p[j];
    p[j] = t;
    }

    return p;
    }


    Bu kod oluşan sayıyı düşündüğümüzde bir büyük sayı olan permütasyonu veriyor. bunu döngünün içinde kullanarak bütün permütasyonlar yazılabilir. artık 50yi geçebilirim sanırım :)

    50nin permutasyonla alakası yok ki

    şuana kadar 44 soru çözdüm 50 soruyu geçebilirim demek istedim ;)




  • quote:

    Orijinalden alıntı: mertkansimsek

    quote:

    Orijinalden alıntı: ÖmerI

    quote:

    Orijinalden alıntı: mertkansimsek

     public static int[] nextPermutation(int[] p) {           
    //Step 1
    int a = p.length - 2;
    while (a >= 0 && p[a] >= p[a + 1]) {
    a--;
    }
    if (a == -1) {
    return p;
    }
    //Step 2
    int b = p.length - 1;
    while (p[b] <= p [ a ]) {
    b--;
    }
    //Step 3
    int t = p[a];
    p[a] = p[b];
    p[b] = t;
    //Step 4
    for (int i = a + 1, j = p.length - 1; i < j; i++, j--) {
    t = p[i];
    p[i] = p[j];
    p[j] = t;
    }

    return p;
    }


    Bu kod oluşan sayıyı düşündüğümüzde bir büyük sayı olan permütasyonu veriyor. bunu döngünün içinde kullanarak bütün permütasyonlar yazılabilir. artık 50yi geçebilirim sanırım :)

    50nin permutasyonla alakası yok ki

    şuana kadar 44 soru çözdüm 50 soruyu geçebilirim demek istedim ;)

    :) pardon




  •  public int nextPermutation(int gelen) {   
    List<Integer> diziters=new ArrayList<Integer>();
    int basamak=0;

    for(int i=0;i<1000&&gelen>0;i++)
    {
    diziters.add(gelen%10);
    gelen=gelen/10;
    basamak+=1;
    }

    List<Integer> p=new ArrayList<Integer>();
    for(int i=0;i<basamak;i++)
    {
    p.add(diziters.get(basamak-1-i));
    }

    //Step 1
    int a = p.size() - 2;
    while (a >= 0 && p.get(a) >= p.get(a + 1) ){
    a--;
    }
    if (a == -1) {
    return Integer.parseInt(p.toString().replace(", ","" ).replace("[", "").replace("]", ""));
    }

    //Step 2
    int b = p.size() - 1;
    while (p.get(b) <= p.get(a) ){
    b--;
    }

    //Step 3
    int t = p.get(a);
    p.add(a,p.get(b)) ;
    p.remove(a+1);
    p.add(b,t) ;
    p.remove(b+1);


    //Step 4
    for (int i = a + 1, j = p.size() - 1; i < j; i++, j--) {
    t = p.get(i);
    p.add(i,p.get(j));
    p.remove(i+1);
    p.add(j,t);
    p.remove(j+1);
    }

    int sonuc=Integer.parseInt(p.toString().replace(", ","" ).replace("[", "").replace("]", ""));


    return sonuc;
    }



    Arkadaşlar üzerinde biraz oynamalar yaptım ve artık girilen sayının sonraki permütasyonunu yine integer olarak geri döndürüyor.




  • c de büyük sayıları nasıl tutabileceğimizi bilen var mı?

    Bir soruda 100! in rakamları toplamını istiyor ancak büyük sayı çıktığından yapamıyorum.
    Yardımcı olabilecek varsa mutlu olurum:)
  • cilginbilimadami kullanıcısına yanıt
    büyük sayılar için bir kütüphane araştırabilirsin veya sayıyı string olarak depolayıp parçalayarak kullanabilirsin.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • cilginbilimadami kullanıcısına yanıt
    100! değil 1000! in rakamları toplamını dahi kolaylıkla hesaplayabilen bir program yaptım ancak C ile değil, Common Lisp / CL ile. SS'te 1000! e kadar ki tüm faktöryellerin toplamı görülüo. CL 'de değişkenlerin integer / int gibi tipi yok, değerlerin tipi var, tahminen o sayede sınırsız rakam hesaplayabiliyor. örneing SS'te görülen setq fonksiyonu rakamlar, diziler, nesneler, değişkenler, herşey için = işareti yerine kullanılıyor. SS'teki fonksiyonlardan alttaki rekürsif ve toplam işlem süresi 1sn kadar sürdü.



     Project Euler

    < Bu ileti mini sürüm kullanılarak atıldı >




  • bu tip matematiksel hesaplamalarda sagecell'i tavsiye ederim. server uzerinden donut vermesi de ayri bir avantaj, dili phytona benzer

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • mertkansimsek M kullanıcısına yanıt
    sagecell'i hiç duymamıştım şimdi baktım, alanında iyi birşey. Matematik yapanlar için oldukça iyi bir ortam. Fakat matematiği kendi bilgisayar ortamımda kodlayıp çalıştırdıktan sonra cloud platformları sadece bir alternatif olarak düşünmek gerekli.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • cilginbilimadami kullanıcısına yanıt
    Merhaba cilginbilimadami,

    C'de büyük sayıları tutabileceğimiz bir kodlama yapmak normal şartlarda mümkün değil ne yazık ki.
    Sanırım sorunuzu Project Euler'in 3.sorusu için sormaktasınız.

    Bu soruyu java ile basit bir şekilde çözmeniz mümkün. Tabii kodlama mantığını birazcık biliyorsanız geçerli bu söylediklerim.
    Kendi blog sayfamda Project Euler'deki soruların türkçelerini ve cevaplarını, soruların algoritmalarını ve hangi kodlama dilini kullanarak yazdığımı paylaşıyorum.

    Eğer zaman ayırıp bloguma göz atmak isterseniz buyrun; KodSiirdir.com üzerinden ulaşabilirsiniz.

    Saygılarımla
    İsmail YAVUZ - KodSiirdir.com




  • 
Sayfa: önceki 1234
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.