Python’da aşağıdaki matematik problemini çözen kod yazabilir misiniz. ? Kodları yazarken algoritma mantığına # karakteri ile ayırarak açıklar mısınız.?
1-) 4 adet ‘7’ ve 1 adet ‘1’ rakamları kullanılarak ‘100’ sayısını bulabilir misiniz.
2-) Sonucu bulabilmek için 4 adet işlem yapılmak zorunda ve işlemler + , - , * , / , işemleri olmak zorunda. Tekrar sınırı yok. Yani 3 adet ‘*’ ve 1 adet ‘+’ işlemi yapabilinir, veya 2 adet ‘/’ 2 adet ‘-’ işlemide yapılabilir.
3-) İşlem sıralaması için parantezi nereye koyulacağı kritik önem taşıyor.
Evet sorunun doğruluğundan eminim cevap aşağıdaki gibi olması gerekiyor. parantez yapısı çok önemli.
Birde çapma, toplama,bölme, çıkarma işlemlerini herhangibi birisini istediğin tekrarda kullanabilirsin ama toplamda 4 adet işlem yapılmak zorunda.
Butun postfix expression’lari yaratmanin temiz, itertools kullanan bir yolu var mi?
itertools fonksiyonlarinin hic biri eleman esitligine bakmadigi icin kombinatoryel patlama + set kullanarak yapabildim anca, veya bol for/map kullanarak…
Donusum kolay. (Postfix’i evaluate etmek de tek bir reduce ile mumkun olsa gerek, simdi bakacagim)
Sikinti “+AB” “A+B” “AB+” “+BA” … seklindeki butun expression’lari uretmek. Sayilardan essiz permutasyon, operatorlerden de tekrarli N-permutasyon alip bunlarin permutasyonunu uretmek gerektigi icin standart itertools fonksiyonlari yeterli olmadi.
Degil; eger lambda veya bazen closure (yanlis) veya anonymous function da denilen fonksiyonlardan bahsediyorsan degil.
Kategori teorisinde monad’larin bir ust sinifi olarak tanimlamislar. Ben fonksiyon monad’indaki (&&&) ile ilgilendim; yukaridaki postta arrowAnd'in tanimina bakarsan iki fonksiyonu ikili bir tuple donduren tek fonksiyona birlestirdigini gorebilirsin.