ResultLuna
Ağaç Yumruklayıcı
- Mesajlar
- 32
- En iyi cevaplar
- 0
- Beğeniler
- 25
- 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.
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.
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.
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: