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. |
3 liste var: (a, b, c) (d, e, f) (g, h, i) Bu 3 listenin transpozesini (a, d, g) (b, e, h) (c, f, i) yerleşik (Arapça: hazır) mat fonksiyon kullanmadan alınız. |
https://hizliresim.com/lQVgjB olmuş mu hocam? |
Kod uzun falan değil Transpoze un tanımının python da uygulanmış hali Farklı diller frameworkler ile tek tuş ile de alınabilir Raku ile yaptığınız şey daha kısa diye diğer koda uzun olmuş diyemezsiniz yani |
Framework kullanılırsa doğal olarak tek tuşla transpoze alınabilir ancak soruda yerleşik belgelik/fonksiyon kullanmama koşulu var. Soruya baktınız mı? Raku çözümüm, framework, belgelik, yerleşik fonksiyon içermiyor, yalnızca 22 karakter uzunluğunda. Arkadaşın Python çözümü ise yaklaşık 140 karakter uzunluğunda! Birkaç düzenleme ile o 100 karaktere inebilir ancak yine de uzun. |
Python çözümü gönderen arkadaş Raku çözümünün yalın formatını begenip mutluluk dileğini iletti sen bu kodun Assembly 'si neyoldur diyerek begenmiyorsun. Konu başlığı işlevsel cunku problem çözme yeteneklerini geliştiriyor. Problem çözme yeteneği gelişen kişi psikolojik açıdan da kolaylar. |
Reddit'te geçen ay bir gönderi:https://www.reddit.com/r/learnprogramming/comments/e7ggyf/got_denied_from_internship_this_was_one_of/ Amerikadaki bir finans firmasında iş görüşmesinde böyle bir soru çıkmış (Türkçesi altta)
Verilen bir s dizesinde k sayısı ölçüsünde özdeş karakterleri içeren ardışık alt dizeleri (= perfect / kusursuz substring / altdize) bulunuz. Mülakatta bu soruyla karşılaşan kişi, C++ ile çözmeye calıştım ancak uzun dizelerde çözüm zorlanıyor, de bunun gibi demiş. Yorumlarda en anlaşılır çözüm 20 sıralık Python kodu. Ancak o çözüm kusursuz alt dizelerin yalnızca toplam sayısını veriyor, kendilerini vermiyor, o sayede de 20 sıra. Kusursuz altdizeleri veren de comment'ler dışında 20 SLOC (Single Lines Of Code) altında (dolayısıyla reddit'teki en açık de kısa çözümden daha kısa de net biçimde) bir kod ile soruyu çözünüz. |
https://repl.it/repls/YellowOlivedrabDirectories veyahttps://paste.ubuntu.com/p/vQ7WRdz4MN/ string uzunluğu x 10 luk bir tabloda her string indexi için ondan baştan itibaren olan sayıları tekrar miktarını tuttum sonra da ikili ikili olabilecek başlangıç ve bitiş noktalarına göre bu ikisinin farkını alıp eğer o farkların hepsi k 'nın katı ise bunu bastırmasını söyledim. https://www.geeksforgeeks.org/prefix-sum-array-implementation-applications-competitive-programming/ prefix sum gibi bir şey kullanarak, i-j arasındaki farkı ver dediğimde versin istediğim için böyle bir şey yapmış oldum. O ( n^2 ) veya O(n*k) ile çalışıyor şuanda, O(n*k) demek daha doğru galiba, tam emin olamadım ama substringi bastırmanın da maliyeti varmış, bu sebeple O(n^2*k) oluyor sanırım |
Çözüm yöntemi için 2 boyutlu bir dizi (preSumArr) oluşturup onun içinden altdizileri saydırmak iyi güzel ancak gereğinden çok karışık. comment'ler dışında 30+ SLOC saydım. Ayrıca comment'ler de eksik. Reddit'teki şu çözümden daha kısa de net kod bekleniyor:
|
Python'da 20 sıra, C++'da 30 sıra kodla yapılan işi Raku'da 9 sıralık kodla çözdüm:) < Resime gitmek için tıklayın > |
250.000. asal sayıyı da tek satırda hesaplar mı bu |
Herkes I0SER mı olsun ? :) |
Konuya yeni eklediğiniz soruların başına ilk mesajda ekleme tarihini yazarsanız gelecekte o soruyu konu içinde bulmak kolay olur Şuan ilk sayfadaki 5. Sorunun yerini bulmam için detaylı bir tarama yapmak gerekiyor mesela |
https://pythonclock.org/
< Bu ileti mini sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @vonderplanitz