her programlama dili farklı bir yol izler ona göre piyasadaki rakibi olmayan bir kulvarda koşmaya çalışır. 2. olarak daha önceki yazınızda daha kısa kod yazmaya odaklı bir yorumunuz vardı. kısa kod yazmak ezbere dayalı bir sistem haliyle tembel bir toplum yaratır. tek becerisi kpss sorularında başarı yakalamak olur. ve 90 puanla hademeli seçen bir insanlar topluluğu oluşturur. programlama ; fonksiyon parametrelerini ezberlemek değil ! programlama bilmeden matematik diliyle hayatı sayılarla ve mantıklaştırılmış gruplarla tanımlayıp matematiksel işlemlere çevire bilmekten ibarettir. şimdide perl konusuna atlamışsınız neyse konuyu hak vermek anlamıyla tamam olay perl dersiniz, ama diğer dillere geri dönüş olursa ortada diğer diller değil programlama ile program dilinin ingilizce olması aslında insanların hem ingilizce hemde o dilin kendi mantığına göre matematiksel lugat girme şekli farklı özetle ortada programlayı evrensel bir dil haline getirmek yerine programlamayı kişisel ve farklı bir noktaya götüren evrensellikten öte yöreselliğe çeken program geliştiricileri ortada, onlar için ingilizce ana dili ama bizim için yabancı bir dil. ne zaman tüm dünyadaki insanlar için ana dil gibi bir dil daha doğrusu %100 matematik dili temelli bir programlama diliyle programlama yapılırsa işte o dil evrensel anlamda güzel bir ortak dil olur. ama yinede o dile yine çamur atacaklar yok yavaş çalışıyor diyenler olacaktır. |
Güncel konu başlığı olan sort fonksiyonu kullanmadan artan seriyi kontrol etmek problemini C++ ile çözdüğüm 21 sıralık kod. < Resime gitmek için tıklayın > Görüldüğü gibi her bir durum için (Arapça: daim) kısa kod yazmıyorum. Koddaki sregex_token_iterator klası C++'ye yeni eklenen özellik olup (Arapça: ve) C++'da 30+ yıldır olmayan string 'split' / dize 'bölme' fonksiyonunun işini yapıyor. Ancak kodun esas yeri (Arapça: kısım) olan artan seri denetleme fonksiyon şablonu / template yine tek sıra :) |
1 den 9'a dek (Arapça: kadar) sayıların (Arapça: rakamların) herbirini yalnızca (Farsça: sadece) bir kez içerecek biçimde (Arapça: şekilde)
permütasyonlarından (sayıları büyüklüklerine göre sıralayarak) 111.111nciyi bulunuz. |
Şöyle bir çözüm var.(Alıntıdır) < Resime gitmek için tıklayın > Burada herhangi bir algoritma geliştirmeden yalnızca veri yapısı kullanarak çözmüş. Sayıların permütasyonlarını Ağaç/tree veri yapısında tanımlamış. Ağacın kökü tüm verilenlerin tüm sayılarını içeriyor, ağacın her bir dalı ise daha önce bakılmış sayıların dışındaki (Arapça: haricindeki) öteki (Arapça: diğer) tüm sayıları içeriyor. Ağaçta tek bir sayı kalana dek rekürsif olarak sürüyor (Arapça: devam ediyor) Ağaçta tek sayı kalınca digits[0] daki sayı çözüm oluyor. |
|
Emacs Java ile C# 'deki autocomplete özelliklerini bile çalıştırıyor; bellekte yalnızca 40MB harcıyor, Win-OSX-Linux-FreeBSD dörtlüsünde sorunsuz calışıyor, ayrıca Terminal modu da var, dolayısıyla SSH ile uzaktan bağlantı yaptığında uzaktaki bilgisayarda emacs acıp tüm bu özellikleri kullanabiliyorsun. O yüzden default editörüm oldu. Emacs ten önce VIM kullanıyordum. 40 lı yaşlardayım fakat 40'lı yaşlardaki kişilerden hem görüntü hem de öteki açılardan ayrıyım. Görüntü derken giyim değil, modayı izlemem. |
İnternette farklı kişilerden, bloglardan, videolardan vb. kendim için fikirler çıkartmak için notlar alıyorum sadece. Cevaplamak istemezseniz alınmam. :) |
Yeni soru: < Resime gitmek için tıklayın > Bu soruda isterseniz matematiksel ön işlem yapabilirsiniz (= soruyu yalnızca matematik kullanarak çözebilirsiniz) |
Kullanıcının girdiği sözcükteki imlere . (benek) ekleyerek yazdıran program yazınız. Örnek: Girilen sözcük: hello Çıktı: h.e.l.l.o. |
python
|
for döngüsünü Python closure olarak yorumluyor oluşan generator object'i [ ] içine alınca dizi oluyor, join'leyince de çıktı veriyor. Oldukça pratik ancak denediğimde input yerine raw_input gerekti. Raku'da işlem:
comb, prompt 'un döndürdüğü string'i dizi yapıyor, map( * ~ '.') dizinin her elemanına '.' ekliyor. map fonksiyonuna parametre olarak verilen * Raku aracılığıyla parametre, dolayısıyla (h e l l o) listesindeki elemanları gösteren değişken olarak yorumlanıyor ~ (tilde) imi Raku'da string ekleme operatörüdür dolayısıyla h. e. biçiminde liste üretilir. Sonrasında join parametresiz parantezsiz cağırılarak dizi elemanlarınden string yapılıyor, en sonda, her nesnede tanımlı metod olan say ile sonuç basılıyor... |
raw_input Python 2'de kaldı.. artık kullanma onu, seneye Python 2 diye birşey yok, bitti https://pythonclock.org/ |
Laptop'ta path ayarlarıyla oynamıştım %PYTHON3% eklenmeden kaldığı için Python 2 kalmış :) |
2000'e dek yansıt sayıları bulunuz. Yansıt sayı örnekleri: 88 1221 3443 Görüldüğü gibi sayının yarısı öteki yarısını yansıtıyor. Not: Basamak sayısı uzunluğu tek sayı olan Palindrom sayılar (örn: 131 11511) yansıt sayı değil. |
Python'da tek bir satir (tek list comprehension) ile çözdüm bunu, 10000'e kadar buluyor. Aşağılık kompleksine giren olursa göndermeyeyim, bu forumu aşıyor zira benim yazdıklarım. |
< Resime gitmek için tıklayın > Raku ile tek satırlık çözüm. 1-2000 arası sayılardan grep ile önce ters dizilişi aynı olanları (Raku'da flip dizinin tersidir) sonra da basamak sayısı çift olanları filtreliyerek. Python cozumunu de görmek isteriz. |
hmm, ben performanslı olsun diye numerik takıldım, seninki kadar kısa olmadı:
|
Bu da senin algoritmayi kullanarak çözüm, daha kısa:
|
2. versiyon hem çok daha pratik, hem net. |
< Resime gitmek için tıklayın >
Görüldüğü gibi Raku'da ile birçok matematiksel programlama yöntemi kolaylıkla kullanılabiliyor sen "keşke matematik & usbilim programlama dili diye bir nes olsa" diyorsun :)
Bu arada Raku matematiklsel programlamayı yoktan bulmuş (Arapça: sıfırdan icat etmiş) değil, hepsini direkt Haskell programlama dilinden almış dolayısıyla bu işin öncüsü öncüsü Haskell'dir ancak Raku bu işi pratikleştirmiştir.
< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 11 Ağustos 2022; 11:12:55 >
< Bu ileti mini sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @ProjectMan