ProjectEuler: Skript ile İşlem Yapılamaz mı?

Sizce Yapılır mı?

  • Bence yapılır!

    Kullanılan: 9 81.8%
  • Bence yapılmaz!

    Kullanılan: 2 18.2%

  • Kullanılan toplam oy
    11

ResultLuna

Ağaç Yumruklayıcı
Mesajlar
32
En iyi cevaplar
0
Beğeniler
24
Puanları
110
Giriş

Merhaba, bu konu içerisinde sizlere Skript ile de eğer güzel algoritmalar kullanırsanız büyük işlemler yapabilirsiniz. Bugün sizlere ProjectEuler'in ne olduğundan ve Skript ile bu problemleri nasıl tamamlarız ondan bahsedeceğim, isterseniz çok uzatmadan hemen konuya girelim.


ProjectEuler Nedir?

ProjectEuler (İsimi Leonhard Euler'den geliyor) bilgisayarlar ile çözülebilen matematik ve algoritma soruları içeren bir websitedir. Bu platform 2001 yılında kurulmuş ve 600'den fazla problem içermektedir, basit sorular olduğu gibi çok zor sorular da bulunmaktadır. Ayrıca bu sistemin kendine özgü bir puan-seviye sistemi mevcuttur, her 25 soru tamamladığınızda yeni bir seviyeye ulaşırsınız.


Peki Bunları Skript ile Nasıl Yapacağız?

Aslında diğer yazılım dillerinde yaptığımızdan çok farklı şeyler kullanarak bu işlemi yapmayacağız. Önce bir algoritma tasarlayıp daha sonra bunu koda dökeceğiz. Elbet de bu olaya bir kural eklemek amacıyla içinde birçok matematik operatörü içerdiği için sadece "skQuery" isimli Skript Addon'unu kullanacağız. Eğer nereden başlayacağınız ile alakalı hiçbir fikriniz yok veya soruları anlayamadıysanız aşağıdaki butonları kullanarak ilk iki sorunun yapılışını ve dilimize uyarlanmış halini görebilirsiniz.

Eğer 10'dan küçük ve 3 veya 5'in katları olan doğal sayıları alırsak bunlar; 3, 5, 6 ve 9 olur, bu sayıların toplamı 23'tür.

1000'den küçük olan ve 3 veya 5'in katları olan tüm sayıların toplamını bulun.

Kod:
function problem1():
    loop 1000-1 times:
        if loop-value mod 3 is 0:
            add loop-value to {_sum}
        else if loop-value mod 5 is 0:
            add loop-value to {_sum}
    broadcast "%{_sum}%"
Fibonaacci sayı dizesi önceki iki sayının toplanmasıyla oluşur. Eğer 1 ve 2 ile başlasaydık ilk 10 değer bunlar olacaktı:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Bunları dikkate alarak Fibonaacci dizesindeki değeri 4 milyonu geçmeyecek çift sayıları toplayın.

Kod:
function problem2():
    set {_nextN} to 1
    set {_currN} to 1
    set {_sum} to 0

    loop 1000-1 times:
        set {_nextNClone} to {_nextN}
        add {_currN} to {_nextN}
        set {_currN} to {_nextNClone}

        if {_currN} mod 2 is 0:
            add {_currN} to {_sum}

        if {_nextN} is greater than 4000000:
            stop loop
    broadcast "%{_sum}%"


Kapanış

Lütfen siz de eğer daha performanslı olduğunu düşündüğünüz kodlarınız varsa bunu yorumlarda "Spoiler" içinde üstüne de kaçıncı soruya ait olduğunu yazarak paylaşın ki burayı güncelleyelim. Ayrıca sadece paylaşmak için değil, yapamadıysanız destek de alabilirsiniz ve bu konu hakkında tartışabilirsiniz. Etkinliğe katılan herkese teşekkürler!


https://projecteuler.net/archives
 


Son düzenleme:

ResultLuna

Ağaç Yumruklayıcı
Mesajlar
32
En iyi cevaplar
0
Beğeniler
24
Puanları
110
PlugMan gerek ama büyük fark gördüm;
Kod:
on load:

  execute console command "/plugman unload Skript"
Bu değerli görüşünüzü kendinize saklamanızı yeğlerdim. İnsanları sadece bir araç uğruna gücendirmek ne erdemli, ne de onurlu; aksine onları kullandıkları araçlara göre sınıflandırmak onur kırıcı bir hareket. Elbet bu sözlerimi alıntıladığım yorumunuza değil, belli bir aracı kullanan insanlara karşı olan genel tutumunuza yazıyorum. Görüşünüzün bir gerçek olduğunu ve Skript'in bir yazılım diline göre elbet daha verimsiz olduğunu biliyorum fakat bu demek değildir ki alakalı, alakasız her konuda bunları insanların gözüne sokalım. Sonuçta bu konu ne Skript ile yazılım dillerini karşılaştırma ile alakalı ne de başka bir şey, algoritma bilgisini geliştirmek isteyen veya algoritmanın ne olduğunu öğrenmek isteyenler için bir konu. Teşekkürler.
 

HKNGLGN

Zombi Katili
Mesajlar
248
En iyi cevaplar
3
Beğeniler
69
Puanları
430
Güzel bir düşünce tebrik ederim. Algoritma bilgisini geliştirmek veya öğrenmek isteyen arkadaşlar için güzel bir rehber olmuş.
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Bu değerli görüşünüzü kendinize saklamanızı yeğlerdim. İnsanları sadece bir araç uğruna gücendirmek ne erdemli, ne de onurlu; aksine onları kullandıkları araçlara göre sınıflandırmak onur kırıcı bir hareket. Elbet bu sözlerimi alıntıladığım yorumunuza değil, belli bir aracı kullanan insanlara karşı olan genel tutumunuza yazıyorum. Görüşünüzün bir gerçek olduğunu ve Skript'in bir yazılım diline göre elbet daha verimsiz olduğunu biliyorum fakat bu demek değildir ki alakalı, alakasız her konuda bunları insanların gözüne sokalım. Sonuçta bu konu ne Skript ile yazılım dillerini karşılaştırma ile alakalı ne de başka bir şey, algoritma bilgisini geliştirmek isteyen veya algoritmanın ne olduğunu öğrenmek isteyenler için bir konu. Teşekkürler.
Benim için ne kadar fazla Skripter, o kadar fazla kazıklanan,dibe batan,diğerlerinden bir farkı olmayan Faction sunucu.
Bu illeti foruma ilk bulaştıran kişilerden biri olarak kendime karşı kin besliyorum.
Ama kendimden de nefret edemem,çünkü ben çok havalıyım.
O yüzden sizden nefret ediyorum ^_^
 

MRTDMR

YASAKLANDI
Mesajlar
11
En iyi cevaplar
0
Beğeniler
3
Puanları
0
skript ile böyle şeyler yapılabiliyor muydu.
 

dankKEk

YASAKLANDI
Mesajlar
24
En iyi cevaplar
0
Beğeniler
5
Puanları
0
Baya zormuş yalnız ya! İlk soruyu bile yapamadım kopya çekmek zorunda kaldım :(
 

MRTDMR

YASAKLANDI
Mesajlar
11
En iyi cevaplar
0
Beğeniler
3
Puanları
0
ilk iki soruyu yaptim. birazdan ucuncuyu yapacagim.
 

karahan117

YASAKLANDI
Mesajlar
40
En iyi cevaplar
0
Beğeniler
58
Puanları
0
Kendi kendime düşündüm gerçekten Skript ile bunları yapabilir misin diye, zamanında gerçekten başarılı Skript Yazarları arasında olduğumu bilen bilir ve fark ettiğim şey performans açısından eğer doğru algoritmalar kullanılırsa en azından ilk beş sorunun çözülebilmesinde bir sıkıntı çıkmaması gerektiğiydi ve üçüncü soruyu bir yapmayı denedim.

Sonuç tam bir fiyaskoydu, yazdığım algoritma doğruydu hatta aynı algoritma ile bu soruyu yıllar önce çözmüştüm ve hatanın sebebini derinden araştırdığımda skQuery denilen eklentinin doğru çalışmadığını gözlemledim. Yaptığım işlem ile aldığım sonuç arasındaki fark bir komedi filmini andırmıştı sanki.
Kod:
broadcast "%600851475143 / 58027% : %600851475143 mod 58027%"
Zaten üstteki kodu anlamadıysanız Skript ile şu anda zerre alakası olmayan birinden daha az Skript biliyorsunuz demek lakin kısaca şöyle anlatabilirim: İlk başta zaten anlayacağınız üzere bir sayıyı başka bir sayıya bölüyoruz ve ikinci satırda bu sayının ona bölündüğünde kalanının kaç olduğunu görüyoruz. Buna matematikte "modulo" deniyor ve yazılımdan biraz anlayan dostlarımız "%" operatörüyle bunun kullanılabildiğini biliyor elbet Skript bunu doğrudan desteklemiyor bu yüzden skQuery kullanmanız gerekiyor.



Bize ikinci değeri 52594 olarak vermesi gerekirken 0 verip tam bölündüğünü iddia eden skQuery fakat böldüğünde tam sayı vermeyen Skript'in tek eksik yanının sadece performansı değil, daha doğru düzgün temel matematik yapamayan kütüphanelerinin olduğunu görüyoruz. Emin olun ki tek eksiği de bu değil, şu gördüğünüz sonucu bulmam sadece 10 dakikamı aldı. Ayrıca konuyu da inceledim ve ortalamanın üzerinde algoritma bilgisine sahip olduğunuzu gördüm, neden hala Skript kullandığınızı size sormak istiyorum.

 
Son düzenleme:

MRTDMR

YASAKLANDI
Mesajlar
11
En iyi cevaplar
0
Beğeniler
3
Puanları
0
Kendi kendime düşündüm gerçekten Skript ile bunları yapabilir misin diye, zamanında gerçekten başarılı Skript Yazarları arasında olduğumu bilen bilir ve fark ettiğim şey performans açısından eğer doğru algoritmalar kullanılırsa en azından ilk beş sorunun çözülebilmesinde bir sıkıntı çıkmaması gerektiğiydi ve üçüncü soruyu bir yapmayı denedim.

Sonuç tam bir fiyaskoydu, yazdığım algoritma doğruydu hatta aynı algoritma ile bu soruyu yıllar önce çözmüştüm ve hatanın sebebini derinden araştırdığımda skQuery denilen eklentinin doğru çalışmadığını gözlemledim. Yaptığım işlem ile aldığım sonuç arasındaki fark bir komedi filmini andırmıştı sanki.
Kod:
broadcast "%600851475143 / 58027% : %600851475143 mod 58027%"
Zaten üstteki kodu anlamadıysanız Skript ile şu anda zerre alakası olmayan birinden daha az Skript biliyorsunuz demek lakin kısaca şöyle anlatabilirim: İlk başta zaten anlayacağınız üzere bir sayıyı başka bir sayıya bölüyoruz ve ikinci satırda bu sayının ona bölündüğünde kalanının kaç olduğunu görüyoruz. Buna matematikte "modulo" deniyor ve yazılımdan biraz anlayan dostlarımız "%" operatörüyle bunun kullanılabildiğini biliyor elbet Skript bunu doğrudan desteklemiyor bu yüzden skQuery kullanmanız gerekiyor.



Bize ikinci değeri 52594 olarak vermesi gerekirken 0 verip tam bölündüğünü iddia eden skQuery fakat böldüğünde tam sayı vermeyen Skript'in tek eksik yanının sadece performansı değil, daha doğru düzgün temel matematik yapamayan kütüphanelerini görüyoruz. Emin olun ki tek eksiği de bu değil, şu gördüğünüz sonucu bulmam sadece 10 dakikamı aldı. Ayrıca konuyu da inceledim ve ortalamanın üzerinde algoritma bilgisine sahip olduğunuzu gördüm, neden hala Skript kullandığınızı size sormak istiyorum.

İşte Beklediğim Cevap! Hala Skript İle İşlem Yapılabilir Diyenlere Gelsin!
 

ResultLuna

Ağaç Yumruklayıcı
Mesajlar
32
En iyi cevaplar
0
Beğeniler
24
Puanları
110
Kendi kendime düşündüm gerçekten Skript ile bunları yapabilir misin diye, zamanında gerçekten başarılı Skript Yazarları arasında olduğumu bilen bilir ve fark ettiğim şey performans açısından eğer doğru algoritmalar kullanılırsa en azından ilk beş sorunun çözülebilmesinde bir sıkıntı çıkmaması gerektiğiydi ve üçüncü soruyu bir yapmayı denedim.

Sonuç tam bir fiyaskoydu, yazdığım algoritma doğruydu hatta aynı algoritma ile bu soruyu yıllar önce çözmüştüm ve hatanın sebebini derinden araştırdığımda skQuery denilen eklentinin doğru çalışmadığını gözlemledim. Yaptığım işlem ile aldığım sonuç arasındaki fark bir komedi filmini andırmıştı sanki.
Kod:
broadcast "%600851475143 / 58027% : %600851475143 mod 58027%"
Zaten üstteki kodu anlamadıysanız Skript ile şu anda zerre alakası olmayan birinden daha az Skript biliyorsunuz demek lakin kısaca şöyle anlatabilirim: İlk başta zaten anlayacağınız üzere bir sayıyı başka bir sayıya bölüyoruz ve ikinci satırda bu sayının ona bölündüğünde kalanının kaç olduğunu görüyoruz. Buna matematikte "modulo" deniyor ve yazılımdan biraz anlayan dostlarımız "%" operatörüyle bunun kullanılabildiğini biliyor elbet Skript bunu doğrudan desteklemiyor bu yüzden skQuery kullanmanız gerekiyor.



Bize ikinci değeri 52594 olarak vermesi gerekirken 0 verip tam bölündüğünü iddia eden skQuery fakat böldüğünde tam sayı vermeyen Skript'in tek eksik yanının sadece performansı değil, daha doğru düzgün temel matematik yapamayan kütüphanelerinin olduğunu görüyoruz. Emin olun ki tek eksiği de bu değil, şu gördüğünüz sonucu bulmam sadece 10 dakikamı aldı. Ayrıca konuyu da inceledim ve ortalamanın üzerinde algoritma bilgisine sahip olduğunuzu gördüm, neden hala Skript kullandığınızı size sormak istiyorum.

Acaba siz "Javatarlar" bundan zevk mi alıyorsunuz? Şurada sadece insanlar nasıl algoritma bilgisini geliştirebilir onu göstermek istedim, sırf laf etmek için işi gücü bırakıp açık aramışsınız aklım almıyor ya! Skript kullanırım veya kullanmam, bu sizin karar vereceğiniz bir şey değil. Ben sadece Minecraft için bir şeyler kodlamış birisi olarak neden bir yazılım dilini baştan öğrenmeye ihtiyaç duyayım ki? Ayrıca belirtmekte de fayda var çünkü anlaşılmamış bir nokta var; eğer Skript'te, skQuery'de açıklar varsa bunların Skript Yazarlarıyla değil de doğrudan sizin gibi Javatarlar ile alakası var. Siz doğru kodlamayı öğrenin ki biz böyle hatalarla karşılaşmayalım. Teşekkürler.
 

dankKEk

YASAKLANDI
Mesajlar
24
En iyi cevaplar
0
Beğeniler
5
Puanları
0
Acaba siz "Javatarlar" bundan zevk mi alıyorsunuz? Şurada sadece insanlar nasıl algoritma bilgisini geliştirebilir onu göstermek istedim, sırf laf etmek için işi gücü bırakıp açık aramışsınız aklım almıyor ya! Skript kullanırım veya kullanmam, bu sizin karar vereceğiniz bir şey değil. Ben sadece Minecraft için bir şeyler kodlamış birisi olarak neden bir yazılım dilini baştan öğrenmeye ihtiyaç duyayım ki? Ayrıca belirtmekte de fayda var çünkü anlaşılmamış bir nokta var; eğer Skript'te, skQuery'de açıklar varsa bunların Skript Yazarlarıyla değil de doğrudan sizin gibi Javatarlar ile alakası var. Siz doğru kodlamayı öğrenin ki biz böyle hatalarla karşılaşmayalım. Teşekkürler.
javatar ne hocam küfür etmişsiniz gibi :D
 

ResultLuna

Ağaç Yumruklayıcı
Mesajlar
32
En iyi cevaplar
0
Beğeniler
24
Puanları
110
Kendi kendime düşündüm gerçekten Skript ile bunları yapabilir misin diye, zamanında gerçekten başarılı Skript Yazarları arasında olduğumu bilen bilir ve fark ettiğim şey performans açısından eğer doğru algoritmalar kullanılırsa en azından ilk beş sorunun çözülebilmesinde bir sıkıntı çıkmaması gerektiğiydi ve üçüncü soruyu bir yapmayı denedim.

Sonuç tam bir fiyaskoydu, yazdığım algoritma doğruydu hatta aynı algoritma ile bu soruyu yıllar önce çözmüştüm ve hatanın sebebini derinden araştırdığımda skQuery denilen eklentinin doğru çalışmadığını gözlemledim. Yaptığım işlem ile aldığım sonuç arasındaki fark bir komedi filmini andırmıştı sanki.
Kod:
broadcast "%600851475143 / 58027% : %600851475143 mod 58027%"
Zaten üstteki kodu anlamadıysanız Skript ile şu anda zerre alakası olmayan birinden daha az Skript biliyorsunuz demek lakin kısaca şöyle anlatabilirim: İlk başta zaten anlayacağınız üzere bir sayıyı başka bir sayıya bölüyoruz ve ikinci satırda bu sayının ona bölündüğünde kalanının kaç olduğunu görüyoruz. Buna matematikte "modulo" deniyor ve yazılımdan biraz anlayan dostlarımız "%" operatörüyle bunun kullanılabildiğini biliyor elbet Skript bunu doğrudan desteklemiyor bu yüzden skQuery kullanmanız gerekiyor.



Bize ikinci değeri 52594 olarak vermesi gerekirken 0 verip tam bölündüğünü iddia eden skQuery fakat böldüğünde tam sayı vermeyen Skript'in tek eksik yanının sadece performansı değil, daha doğru düzgün temel matematik yapamayan kütüphanelerinin olduğunu görüyoruz. Emin olun ki tek eksiği de bu değil, şu gördüğünüz sonucu bulmam sadece 10 dakikamı aldı. Ayrıca konuyu da inceledim ve ortalamanın üzerinde algoritma bilgisine sahip olduğunuzu gördüm, neden hala Skript kullandığınızı size sormak istiyorum.

Eğer skQuery çalışmıyorsa biz de çalışanını yaparız. ProjectEuler ve Skript etkinliğimiz hala devam ediyor fakat skQuery ile birlikte skMath eklentisini de kullanmak artık bazı teknik problemlerden ötürü serbest.



skMath: Yerli Skript Addon'u
 

Üst