18 Temmuz 2019 Perşembe

Dik üçgen bulma algoritması

Pisagor teoremine göre bir dik üçgende dik kenarların uzunluklarının toplamı dik açının karşısındaki kenarın uzunluğunun karesine eşittir.

Pisagor teoremi hakkındaki açıklama yeterli gelmedi ise matematikciler.com'un ilgili makalesine göz atabilirsiniz.

Elimizde X metre ip olduğunda, hangi kenar uzunluklarına sahip üçgenlerin dik açılı üçgenler oluşturduğunu bulan fonksiyon yazın.

Örneğin elimizde 1000 metre ip var. Bu iple kenarları 200, 375 ve 425 uzunluklarında bir üçgen oluşturduğumuzda bir dik üçgen oluştuğunu 2002 + 3752 = 4252 denkleminin doğruluğunu gördüğümüzde anlayabiliyoruz.

24 Mayıs 2019 Cuma

Basit Hareket Ortalaması Hesaplama

Borsa ile ilgili olanınız var mı bilmiyorum. Belki bu vesile ile merak salan olabilir aranızda. Hareket ortalaması orijinal adı ile simple moving average bu sorumuzun konusu. Bu noktadan sonra kendisini SMA olarak anacağız. Bu gösterge borsa grafiklerini incelerken trendin ne yöne gittiğini anlamamıza yardımcı olan ek çizimler. Örneğin aşağıdaki grafikteki mavi çizgi 50 günlük basit hareket ortalamasının çizimi. Bize son dönemde fiyatın yükselme eğiliminde olduğunu gösteriyor.

Hesaplanması ise oldukça basit. Örneğin elimizde şöyle bir fiyat grafiği var.
GünFiyat
12,50
22,40
33,00
42,00
51,50
62,90
71,70
82,10
92,70
102,80

Bu durumda 9. gün için 3 günlük SMA değeri gün 6 ile gün 9 arasındaki fiyatların ortalaması alınarak bulunur. (2.90 + 1.70 + 2.10) / 3 = 2.23

Sizden gün ve fiyat verisini aşağıdaki gibi bir sözlük olarak alan, dönüşte bu sözlüğün bir içinde SMA barındıran kopyasını döndüren fonksiyon yazmanızı istiyorum.

Örnek girdi
prices = {
    1: {'price': 2.5},
    2: {'price': 2.4},
    3: {'price': 3.0},
    4: {'price': 2.0},
    5: {'price': 1.5},
    6: {'price': 2.9},
    7: {'price': 1.7},
    8: {'price': 2.1},
    9: {'price': 2.7},
    10: {'price': 2.8},
}

def get_price_with_sma(prices, period=3):
    ...
    ....

Bu soruya ilgi olursa borsacılık konularından devam edebilirim.

Romen Rakamlarını Sayıya Çevirme

Roman rakamlarını gerçek sayıya çeviren bir fonksiyon yazmaya çalışın.

Örneğin girdi: XIV, çıktı: 14

11 Şubat 2019 Pazartesi

Bak ve Söyle Sayı Dizileri

Bu soruyu Hackerrank'de gördüm baya hoşuma gitti paylaşmak istedim.

Bak ve söyle sayıları adında bir sayı dizisi var bu dizi 1 ile başlayıp her adımda önceki sayının nasıl söylendiğini rakamlarla ifade ederek yürüyor:

1 
11 ← Önceki sayıda 1 tane 1 var.
21 ← Önceki sayıda 2 tane 1 var.
1211 ← Önceki sayıda 1 tane 2, 1 tane 1 var.
111221 ← Önceki sayıda 1 tane 1, 1 tane 2, 2 tane 1 var.

Bak ve söyle sayılarındaki verilen N'inci elemanı hesaplayan fonksiyon yazın.

22 Ocak 2019 Salı

Serilerin başlangıç ve bitiş noktaları

Verilen 1 ve 0 dolu liste içerisinden 1 serilerinin hangi aralıklar içinde olduğunu çıkaran fonksiyon yazın.

Örnek Girdi:

[1, 1, 1, 0, 0, 1, 1, 0, 1, 1]

Örnek çıktı:

[(0, 2), (5, 6), (8,9)]

27 Aralık 2018 Perşembe

Tavlada En İyi Hamleyi Bulma

Elimizde bir tavla tahtası var. Bu tahta üzerindeki her üçgen saat yönüne doğru numaralandırılmış ve üzerinde rasgele yerleştirilmiş pullarımız var. Hangi üçgende kaç tane pul olduğunu aşağıdaki gibi bir dictionary içerisinde anlatabiliyoruz.

checkers = {1: 3, 6: 1, 10: 2, 12: 1, 13: 1}

Bu dictionary aşağıdaki resimdeki gibi bir dağılımı gösteriyor.

Sizden istediğimiz pulların pozisyonlarını, ve atılan iki zarın değerini girdi olarak alan ve bulabildiği hamleleri bulup puanlayarak 0 dan büyük puanı olan hamleleri geri döndüren bir fonksiyon.

Örnek girdi:

def find_moves(checkers, dice1, dice2)
    ...
    ...
    ...

print(find_moves(checkers, 6, 1))

Örnek Çıktı:

Üçlü tüplerden oluşan bir liste çıkmasını bekliyoruz. İlk hamleyi gösteren bir tuple, ikinci hamleyi gösteren bir tuple, iki hamlenin yarattığı puanı gösteren bir integer.

>>> (((1, 7), (6, 7), 3), ..., ..., ...)
       +       +      +
       |       |      +--> Bu hamlenin kaç puan ettiği.
       |       +---------> 6 numaralı üçgendeki pulu 7 ye
       +-----------------> 1 numaralı üçgendeki pulu 7 ye                

 Peki bir hamlenin iyiliğini nasıl ölçeceğiz?

  • önemli kapılar: 5, 6, 7, 8, 17, 18, 19, 20
  • Bir kapı kapatmak +1 puan, eğer önemli kapı ise ise +2
  • Bir kapı açmak -1 puan, eğer önemli kapı ise -2
  • Bir taş açığa çıkarmak -1 puan.
  • Bir taşı açıktan kurtarmak +1 puan.

Türkçe Kelimeyi Hecelerine Ayırma

  • Türkçede kelime içinde iki ünlü arasındaki ünsüz, kendinden sonraki ünlüyle hece kurar.

  • Kelime içinde yan yana gelen iki ünsüzden ilki kendinden önceki ünlüyle, ikincisi kendinden sonraki ünlüyle hece kurar.

  • Kelime içinde yan yana gelen üç ünsüz harften ilk ikisi kendinden önceki ünlüyle, üçüncüsü kendinden sonraki ünlüyle hece kurar.

Yukarıda verilen kurallardan faydalanarak verilen kelimeyi hecelerine ayırarak yazan fonksiyon yazın.

Örnek Girdi

#!python
kelime = "kuyruksallayangiller"

Örnek Çıktı

#!python
kuy - ruk - sal - la - yan - gil - ler"

Dik üçgen bulma algoritması

Pisagor teoremine göre bir dik üçgende dik kenarların uzunluklarının toplamı dik açının karşısındaki kenarın uzunluğunun karesine eşittir. ...