devseu's python challenges
# Aksekililer Bulusmasi
# Facebook'taki Aksekililer toplulugunun sayfasinda soyle yaziyor:
# GRUBUMUZ 2008 YILINDAN BU YANA ANTALYA ATİK'TE HER AYIN İLK CUMARTESİ GÜNÜ SAAT 12.00 DE TOPLANTILAR DÜZENLEMEKTEDİR.

# Bu problemlerde python'daki tarih kutuphanelerini kullanabilirsiniz.

# Problem 1
# Herhangi bir tarihin haftanin hangi gunu oldugunu bulmak
# Ornegin: 2000-01-01 haftanin hangi gunuydu?
# Ornegin: 2008-01-01 haftanin hangi gunuydu?

# Problem 2
# 2008 Ocak ayinin ilk Cumartesi hangi tarihtedir?
# 2008 Ocak ayinin ilk gununun haftanin hangi gunu oldugunu zaten bilebiliyoruz.

# Problem 3
# 2008 yilinin her bir gununun haftanin hangi gunune denk geldigini bul.

# Problem 4
# 2008 yilinin her bir gununun hangi aya girdigini bul

# Problem 5
# 2008 yilindaki toplanti tarihlerini bul

# Problem 6
# 2008 yilindan bu gune tum toplanti tarihlerini bul

problemler/kutuphaneler/standart-kutuphane/tarihler/problem.py
aecepoglu/piton-ogreniyorum
# problem
# bir listeyi istedigimiz bir konumdan ikiye bol
# Ornegin: [1, 7, 5, 4, 5, 3, 2, 0] listesini 2'nci indexten bolersek [1, 7] ve [5, 4, 5, 3, 2, 0] parcalari olusur

# problem
# bir listedeki en buyuk elemani bul
# Ornegin: [5, 4, 5, 3, 2, 0] listesinin en buyuk elemani: 5

# problem
# bir listede, solundaki tum elemanlardan buyuk olan elemanlari bul
# Ornegin: [1, 7, 5, 4, 5, 3, 2, 0] listesinde 1 solundaki her seyden (hicbir sey yok) buyuk. 7 de solundaki her seyden daha buyuk.

# problem
# bir listede, solundaki elemanlarin toplamindan kucuk, ama solundaki elemanlarin her birisinden daha buyuk olan sayilari bul
# Ornegin: [1, 3, 4, 5, 27, 30] -> [5, 30]

problemler/liste-islemleri/problem.py
aecepoglu/piton-ogreniyorum
# problem
# 0-10 arasinda herhangi bir sayinin turkce okunusunu yaz
# Ornegin: 7 -> yedi

# problem
# 0-100 araliginda herhangi bir sayinin turkce okunusunu yaz
# Ornegin: 73 -> yetmis uc

# problem
# 0-1000 araliginda herhangi bir sayinin turkce okunusunu yaz
# Ornegin: 973 -> dokuz yuz yetmis uc

# problem
# 1000000000000'a kadar herhangi bir sayinin turkce okunusunu yaz
# Ornegin: 903675124 -> dokuz yuz uc milyon alti yuz yetmis bes bin yuz yirmi dort

# problem - bonus 1
# yaziyla verilmis basit (tek bir islem iceren) aritmetik islemi yap
# Ornegin: "yuz yetmis uc eksi doksan" -> "seksen uc"

# problem - zor bonus 2
# verilen okunusun olasi tum sayi karsiliklarini yaz
# Ornegin: "dokuz yuz yetmis uc" -> [[973], [9, 100, 70, 3], [9, 173], [9, 170, 3], ...]

problemler/sayi-okuma/problem.py
aecepoglu/piton-ogreniyorum
# Problem 0
# verilen bir metindeki harflerin uzerinden gidip,
#  "e" harfi ise "EVET",
#            degil ise "HAYIR" yazmak
# Ornegin "devseu" metni icin su cikti olacak:
# HAYIR
# EVET
# HAYIR
# HAYIR
# EVET
# HAYIR

print("**** 0 ****")

degisken = "devseu"

for i in degisken:
    if i == "e":
        print("EVET")
    else:
        print("HAYIR")



# Problem 1
# verilen bir metinde "e" harfinin kac kere gectigini bulmak
# Ornegin "devseu" metninde "e" harfi 2 kere geciyor
print("**** 1 ****")

def e_sayisi(metin):
    e_sayisi = 0
    for harf in metin:
        if harf == "e":
            e_sayisi += 1
    return e_sayisi

print(e_sayisi(degisken))



# Problem 2
# verilen bir metindeki tum harflerin kacar kere gectigini bulmak
# Ornegin "devseu" metninde:
#         1 tane d,
#         2 tane e,
#         1 tane v,
#         1 tane s,
#         1 tane u harfi var
print("**** 2 ****")

def harf_sayilari(metin):
    harf_sayilari = {}
    for harf in metin:
        if harf in harf_sayilari:
            harf_sayilari[harf] += 1
        else:
            harf_sayilari[harf] = 1
    return harf_sayilari


print(harf_sayilari(degisken))



# Problem 3
# bir kelimenin scrabble skorunu bulmak
# Ornegin "devseu"nun scrabble skoru 10 puan
print("**** 3 ****")

def scrabble_skoru(metin):
    skor = 0
    for harf in metin:
        if harf in ScrabbleHarfPuanlari:
            skor += ScrabbleHarfPuanlari[harf]
    return skor


ScrabbleHarfPuanlari = {
    "a": 1,
    "b": 3,
    "c": 3,
    "d": 2,
    "e": 1,
    "f": 4,
    "g": 2,
    "h": 4,
    "i": 1,
    "j": 8,
    "k": 5,
    "l": 1,
    "m": 3,
    "n": 1,
    "o": 1,
    "p": 3,
    "q": 10,
    "r": 1,
    "s": 1,
    "t": 1,
    "u": 1,
    "v": 4,
    "w": 4,
    "x": 8,
    "y": 4,
    "z": 10
}

print(scrabble_skoru(degisken))

print("**** 4 ****")
# Problem 4 - bonus
# elimizdeki bir liste scrabble tasi ile yazilabilecek scrabble puani en yuksek kelimeyi (veya kelimeleri) yazdirmak
# Ornegin "devseu"nun harfleri ile yazilabilecek en uzun (ingilizce) kelime "suede" 6 puan. Ama en cok puani "devs" kelimesi (8 puan) getiriyor.
# Herhangi bir yerden ingilizce kelime listesi elde edebilirsin.
# Scrabble skorunu turkce harfler icin yazdi isen, burada da turkce kelimeler uretebilirsin.




problemler/scrabble-skoru/problem-cozumleri.py
aecepoglu/piton-ogreniyorum
# Problem 0
# verilen bir metindeki harflerin uzerinden gidip,
#  "e" harfi ise "EVET",
#            degil ise "HAYIR" yazmak
# Ornegin "devseu" metni icin su cikti olacak:
# HAYIR
# EVET
# HAYIR
# HAYIR
# EVET
# HAYIR

# Problem 1
# verilen bir metinde "e" harfinin kac kere gectigini bulmak
# Ornegin "devseu" metninde "e" harfi 2 kere geciyor

# Problem 2
# verilen bir metindeki tum harflerin kacar kere gectigini bulmak
# Ornegin "devseu" metninde:
#         1 tane d,
#         2 tane e,
#         1 tane v,
#         1 tane s,
#         1 tane u harfi var

# Problem 3
# bir kelimenin scrabble skorunu bulmak
# Ornegin "devseu"nun scrabble skoru 10 puan

# Problem 4 - bonus
# elimizdeki bir liste scrabble tasi ile yazilabilecek scrabble puani en yuksek kelimeyi (veya kelimeleri) yazdirmak
# Ornegin "devseu"nun harfleri ile yazilabilecek en uzun (ingilizce) kelime "suede" 6 puan. Ama en cok puani "devs" kelimesi (8 puan) getiriyor.
# Herhangi bir yerden ingilizce kelime listesi elde edebilirsin.
# Scrabble skorunu turkce harfler icin yazdi isen, burada da turkce kelimeler uretebilirsin.

problemler/scrabble-skoru/problem.py
aecepoglu/piton-ogreniyorum
# Problem
# Soldan saga meksika dalgasi yapan bir tribun yapin
# Oturan kisiler icin _, ayaktaki kisiler icin ^, ikisinin arasindaki kisiler icin de - karakterini kullanin.
# Ornegin 3 satir, 5 sutunluk bir tribun otururken bu sekilde gorunur:
# _____
# _____
# _____
#
# Dalga bu sekilde baslar, ilerler, ve biter:
# -____        ^-___        -^-__         _-^-_        __-^-        ___-^        ____-        _____
# -____   ->   ^-___   ->   -^-__   ->    _-^-_   ->   __-^-   ->   ___-^   ->   ____-   ->   _____
# -____        ^-___        -^-__         _-^-_        __-^-        ___-^        ____-        _____

# Problem 1
# tribunde tek bir satir ve 7 koltuk oldugunu dusunelim.
# Herkesin oturdugu durumu yazdirin: _______

# Problem 2
# tek satir, 7 sutunluk bir tribunde, koltuk numarasi verilen bir kisiyi yari-ayakta veya tamamen ayakta gosterebilin.
# Ornegin 5'nci kisi yari-ayakta iken   : ____-__
#         3'ncu kisi tamamen ayakta iken: __^____

# Problem 3
# tek satir, 7 sutunluk bir tribunun meksika dalgasini satir satir yazdirin
# 5 sutunluk bir sutun olsaydi cikti boyle olacakti:
# _____
# -____
# ^-___
# -^-__
# _-^-_
# __-^-
# ___-^
# ____-
# _____

# Problem 4
# 5 FPS hiz ile tek satir, 7 sutunluk bir tribunun meksika dalgasini yazdirin.
# print() fonksiyonunun `end=''` argumanini atarsaniz print'ten sonra yeni satira gecmez.
# Bir "\r" print ederseniz de imlecinizi satir basina goturur. Bu sayede ayni satirda animasyon oynatabilirsiniz
# 5 FPS hizda animasyon oynatmak icin iki kare arasinda 0.2 saniye beklemelisiniz. `time` kutuphanesindeki `sleep` fonksiyonunu kullanin.

# Problem 5
# Verilen satir sayisi, sutun sayisi, animasyon hizi (FPS) ve dalga boyu ile bir meksika dalgasi animasyonu oynatin.
# Dalga boyu: ayaga kalkan iki kisi arasindaki koltuk sayisidir.

# Problem 6 - bonus
# Farkli satirdaki kisiler arasinda rastgele bir zaman sapmasi olsun. Ornegin 3'ncu satirdaki kisi 1'nci satirdaki kisiden 2 kare sonra meksika dalgasina baslayabilir

# Problem 7 - bonus
# Her bir koltuktaki kisiye farkli ve rastgele bir renk atayin.
# Renk yazdirmak icin wikipedia'dan Ansi Escape Sequences konusunu okuyun.

# Problem 8 - bonus
# Kisiler ayaga kalktikca, renklerini degistirin.

problemler/terminal-arayuzleri/meksika-dalgasi/problem.py
aecepoglu/piton-ogreniyorum