Konu Başlıkları Gizle
- 1 1. Hoşça kal...
- 2 2. Merhaba mı hoşça kal mı?
- 3 3. Tek tek
- 4 4. Tekrar tekrar
- 5 5. Tekrar yok
- 6 6. Asallar
- 7 7. Katlar
- 8 8. Sıralama
- 9 9. Nokta sıralama
- 10 10. Görelim o noktaları
- 11 11. Rast gele
- 12 12. Girdi üretme
- 13 13. π
- 14 14. Harita
- 15 15. Kaydedelim o haritayı
- 16 16. Yol var mı? ☆
- 17 17. Kaç yol var? ☆
- 18 18. techolay
- 19 19.
Merhaba,
Programlamada pratik, özellikle öğrenme aşamasında hem elin hem de kafanın alışması için elzem. Aslına bakarsanız bu durum programlamayla sınırlı kalmıyor. Pratiğin, hayatımızın her noktasına faydası dokunuyor. Durum böyle olunca çeşitli programlama problemlerinin yer aldığı bir konu açmanın güzel olabileceğini düşündüm. Benim üzerinde duracağım dil Python olacak ancak siz dilediğiniz programlama dilini kullanmakta tabii ki özgürsünüz. Python'u seçmemin sebebi, her seviye için uygun olduğunu düşünmem. Bunun yanı sıra, oldukça zengin ve kullanımı kolay bir kütüphane havuzuna sahip bir dil.
Problemleri doğaçlama ama kafa yorarak hazırladım; yeterince iyi, eğlenceli ve öğretici olacaklarını umuyorum. Gerek duyduğum yerlere sürprizbozan içinde ipuçları da ekledim.
Bazı problemlerin isimlerinin yanında yıldız göreceksiniz. O problemlerin diğerlerinden açık ara daha zor olduğunu düşünüyorum. Onları çözmek keyfinize kalmış ama uğraşmanız faydalı olacaktır.
İyi eğlenceler dilerim.
9. problemdeki gibi noktalar veriliyor, koordinatları pozitif. Bu noktaları aşağıdaki örneklerdeki gibi düzlem üzerinde gösterin:
Noktaları kimin oluşturduğunu düşünüyordunuz?
Bir birim karenin içine, kareye sığabilecek en büyük çember çiziliyor. Karenin içinde rastgele noktalar oluşturarak çemberin içinde kalan noktaların oranından
19.
18. problemin çıktısını saat yönünde 90 derece döndürün.
"Sayıyı niye 20'ye tamamlamadın?" diye sormayın.
Peki... 19 asal sayı, o yüzden (!).
Umarım problemlerin özellikle yeni başlayanlara faydası dokunur ve daha da önemlisi, problemler yeterince eğlencelidir.
Şimdiden uğraşınız için teşekkür eder, programlama hayatınızda başarılar dilerim. : )
Programlamada pratik, özellikle öğrenme aşamasında hem elin hem de kafanın alışması için elzem. Aslına bakarsanız bu durum programlamayla sınırlı kalmıyor. Pratiğin, hayatımızın her noktasına faydası dokunuyor. Durum böyle olunca çeşitli programlama problemlerinin yer aldığı bir konu açmanın güzel olabileceğini düşündüm. Benim üzerinde duracağım dil Python olacak ancak siz dilediğiniz programlama dilini kullanmakta tabii ki özgürsünüz. Python'u seçmemin sebebi, her seviye için uygun olduğunu düşünmem. Bunun yanı sıra, oldukça zengin ve kullanımı kolay bir kütüphane havuzuna sahip bir dil.
Problemleri doğaçlama ama kafa yorarak hazırladım; yeterince iyi, eğlenceli ve öğretici olacaklarını umuyorum. Gerek duyduğum yerlere sürprizbozan içinde ipuçları da ekledim.
Bazı problemlerin isimlerinin yanında yıldız göreceksiniz. O problemlerin diğerlerinden açık ara daha zor olduğunu düşünüyorum. Onları çözmek keyfinize kalmış ama uğraşmanız faydalı olacaktır.
İyi eğlenceler dilerim.
1. Hoşça kal...
Herkes "Merhaba!" diyor, biz de "Hoşça kal..." diyelim.Hoşça kal, dünya... diyen bir program yazın.- Python'da karakter dizisi yani string yazmak için çift veya tek tırnak kullanılır:
"ben kesinlikle bir string değilim". - Çıktı yazdırmak için
print()fonksiyonu kullanılabilir.
2. Merhaba mı hoşça kal mı?
Girdi olarak bir isim alan ve isimde küçük veya büyüke harfi varsa Merhaba, yoksa Hoşça kal diyen bir program yazın.| [CODE title="Girdi"]Enes3078[/CODE] [CODE title="Çıktı"]Merhaba, Enes3078![/CODE] | [CODE title="Girdi"]Ma'at[/CODE] [CODE title="Çıktı"]Hoşça kal, Ma'at...[/CODE] | [CODE title="Girdi"]Otonom Piyade[/CODE] [CODE title="Çıktı"]Merhaba, Otonom Piyade![/CODE] | [CODE title="Girdi"]vanillamint[/CODE] [CODE title="Çıktı"]Hoşça kal, vanillamint...[/CODE] |
- Tek satırlık girdi almak için
input()fonksiyonu kullanılabilir ve bu girdi, bir değişkende tutulabilir. - Karakterler de birer string'dir. Bir
s1string'inin başka birs2string'inin içinde geçip geçmediğini kontrol etmek içininanahtar kelimesini (keyword) kullanabiliriz:s1 in s2. Bu ifade, koşul olarak kullanılabilir:Trueyani doğru ya daFalseyani yanlış. - Doğruluk değerleri,
if/elif/elseile kullanılarak koşullu kod yazılabilir. - F-string'i tanımak için güzel bir fırsat!
3. Tek tek
2. problemin çıktısını, ilk karakterden başlayarak her defasında bir sonraki karakter dahil olacak şekilde satır satır yazdırın. Eğer mevcut karakter boşluk ise es geçin.| [CODE title="Girdi"]Enes3078[/CODE] [CODE title="Çıktı"] M Me Mer Merh Merha Merhab Merhaba Merhaba, Merhaba, E Merhaba, En Merhaba, Ene Merhaba, Enes Merhaba, Enes3 Merhaba, Enes30 Merhaba, Enes307 Merhaba, Enes3078 Merhaba, Enes3078! [/CODE] | [CODE title="Girdi"]Ma'at[/CODE] [CODE title="Çıktı"] H Ho Hoş Hoşç Hoşça Hoşça k Hoşça ka Hoşça kal Hoşça kal, Hoşça kal, M Hoşça kal, Ma Hoşça kal, Ma' Hoşça kal, Ma'a Hoşça kal, Ma'at Hoşça kal, Ma'at. Hoşça kal, Ma'at.. Hoşça kal, Ma'at... [/CODE] | [CODE title="Girdi"]Otonom Piyade[/CODE] [CODE title="Çıktı"] M Me Mer Merh Merha Merhab Merhaba Merhaba, Merhaba, O Merhaba, Ot Merhaba, Oto Merhaba, Oton Merhaba, Otono Merhaba, Otonom Merhaba, Otonom P Merhaba, Otonom Pi Merhaba, Otonom Piy Merhaba, Otonom Piya Merhaba, Otonom Piyad Merhaba, Otonom Piyade Merhaba, Otonom Piyade! [/CODE] | [CODE title="Girdi"]vanilla mint[/CODE] [CODE title="Çıktı"] H Ho Hoş Hoşç Hoşça Hoşça k Hoşça ka Hoşça kal Hoşça kal, Hoşça kal, v Hoşça kal, va Hoşça kal, van Hoşça kal, vani Hoşça kal, vanil Hoşça kal, vanill Hoşça kal, vanilla Hoşça kal, vanilla m Hoşça kal, vanilla mi Hoşça kal, vanilla min Hoşça kal, vanilla mint Hoşça kal, vanilla mint. Hoşça kal, vanilla mint.. Hoşça kal, vanilla mint... [/CODE] |
4. Tekrar tekrar
Girdide verilen metni, her karakterini metinde kaç defa geçiyorsa (Harflerin büyüğü de küçüğü de sayılsın.) o kadar uzatıp yazdıran bir program yazın.| [CODE title="Girdi"]Enes3078[/CODE] [CODE title="Çıktı"] EEnees3078 [/CODE] | [CODE title="Girdi"]Ma'at[/CODE] [CODE title="Çıktı"] Maa'aat [/CODE] | [CODE title="Girdi"]Otonom Piyade[/CODE] [CODE title="Çıktı"] OOOtooonooom Piyade [/CODE] | [CODE title="Girdi"]vanillamint[/CODE] [CODE title="Çıktı"] vaanniillllaamiinnt [/CODE] | [CODE title="Girdi"]Kedicik[/CODE] [CODE title="Çıktı"] KKediiciikk [/CODE] | [CODE title="Girdi"]Tekrar tekrar tekrar[/CODE] [CODE title="Çıktı"] TTTeeekkkrrrrrraaarrrrrr ttteeekkkrrrrrraaarrrrrr ttteeekkkrrrrrraaarrrrrr [/CODE] |
- Sözlük yani dictionary veri yapısı kullanılabilir.
- String'in çeşitli metotları mevcut. Favori IDE'nizde string tutan bir değişkeninizin metotlarına
.operatörü ile erişmeye çalışın. Gerekli ayarlamalar yapıldıysa örneğin VS Code, sizin için metotları önerecektir:
Bu metotları keşfetmenizde fayda var. - Bir string'i bir sayıyla çarparsak ne olur?
5. Tekrar yok
Girdide verilen metnin, her farklı karakterinin yalnızca en baştakinin bulunduğu hâlini yazdırın. Harflerin büyüğü ve küçüğü aynı sayılsın.| [CODE title="Girdi"]Enes3078[/CODE] [CODE title="Çıktı"] Ens3078 [/CODE] | [CODE title="Girdi"]Ma'at[/CODE] [CODE title="Çıktı"] Ma't [/CODE] | [CODE title="Girdi"]Otonom Piyade[/CODE] [CODE title="Çıktı"] Otnm Piyade [/CODE] | [CODE title="Girdi"]vanillamint[/CODE] [CODE title="Çıktı"] vanilmt [/CODE] | [CODE title="Girdi"]Kedicik[/CODE] [CODE title="Çıktı"] Kedic [/CODE] | [CODE title="Girdi"]Tekrar var mı[/CODE] [CODE title="Çıktı"] Tekra vmı [/CODE] |
6. Asallar
Girdide verilen pozitif tam sayıya kadarki tüm asal sayıları küçükten büyüğe, virgüllerle ayırarak yazdırın.| [CODE title="Girdi"]2[/CODE] [CODE title="Çıktı"]2[/CODE] | [CODE title="Girdi"]10[/CODE] [CODE title="Çıktı"]2, 3, 5, 7[/CODE] | [CODE title="Girdi"]30[/CODE] [CODE title="Çıktı"]2, 3, 5, 7, 11, 13, 17, 19, 23, 29[/CODE] |
- Kalan bulma yani modulo operatörü olan
%kullanılabilir. print()fonksiyonunun argümanlarını araştırın:end.- String metotlarından da faydalanılabilir.
7. Katlar
Girdidea, b, k pozitif tam sayıları veriliyor. [a, b] aralığında k sayısının kaç adet katı olduğunu bulun.| [CODE title="Girdi"]7 2024 13[/CODE] [CODE title="Çıktı"]155[/CODE] | [CODE title="Girdi"]2 100 1[/CODE] [CODE title="Çıktı"]99[/CODE] | [CODE title="Girdi"]123456 7891011 1213[/CODE] [CODE title="Çıktı"]6404[/CODE] | [CODE title="Girdi"]3462462 62474257276237 2457[/CODE] [CODE title="Çıktı"]25427046729[/CODE] | [CODE title="Girdi"]123 45678910111213141516171819202122232425262728 53675476347[/CODE] [CODE title="Çıktı"]851020116075154344939451706178301[/CODE] |
- Operatörleri bir keşfetmek lazım.
8. Sıralama
Girdide tek satırda verilen, boşluklarla ayrılmış tam sayıları büyükten küçüğe sıralayın.| [CODE title="Girdi"]2[/CODE] [CODE title="Çıktı"]2[/CODE] | [CODE title="Girdi"]2 3 5 7[/CODE] [CODE title="Çıktı"]7 5 3 2[/CODE] | [CODE title="Girdi"]-30 420 78 1[/CODE] [CODE title="Çıktı"]420 78 1 -30[/CODE] |
- Girdi okuma fonksiyonu
input(), tek satırlık girdiyi bir string olarak okur. String metotlarındansplit(), sayıları ayırmak için kullanılabilir. split()metodu, string'lerden oluşan bir liste döndürür.- Sayı formundaki bir string'i "gerçek sayı"ya dönüştürmek için
int()fonksiyonu kullanılabilir. map()fonksiyonu işe yarayabilir.- List comprehension tekniği de kullanılabilir!
- Listeler için hazır sıralama metotları olabilir mi?
9. Nokta sıralama
Düzlemdeki X ve Y tam sayı koordinatları verilen noktaları, X koordinatı küçük olan nokta önce gelecek şekilde sıralayın. X koordinatlarının eşitliği durumunda da Y koordinatı küçük olan nokta önce gelsin. Noktaların eşitliği durumunda girdide önce gelen önce gelsin. Noktaların girdideki sıralarını da belirtin.| [CODE title="Girdi"]20 5 1 -2 -3 -3 -1 -4 -1 -1 2 -4 5 -5 -5 3 -5 1 -2 -2 -1 0 5 1 5 4 2 -2 1 3 1 -5 -5 4 -4 -2 4 4 -5 4 0[/CODE] [CODE title="Çıktı"]-5 -5 7 -5 -5 16 -4 -1 4 -4 5 6 -3 -1 3 -2 -3 2 -2 -1 10 -2 1 14 -2 4 18 -1 2 5 0 5 11 1 -2 9 1 5 12 3 -5 8 3 1 15 4 -5 19 4 -4 17 4 0 20 4 2 13 5 1 1[/CODE] |
10. Görelim o noktaları
(9. problemden sonra aklıma aniden bu problem geldi...)9. problemdeki gibi noktalar veriliyor, koordinatları pozitif. Bu noktaları aşağıdaki örneklerdeki gibi düzlem üzerinde gösterin:
|
Kod:
|
Kod:
|
Kod:
|
11. Rast gele
Girdide adet ve sırasız olarak alt limit ve üst limit veriliyor. Girilen adet kadar, limitlerin arasında kalan rastgele tam sayılar yazdırın.| [CODE title="Girdi"]5 3 7[/CODE] [CODE title="Çıktı"]5 4 6 5 7[/CODE] | [CODE title="Girdi"]20 8 2[/CODE] [CODE title="Çıktı"]6 6 5 6 5 7 6 2 3 3 8 3 6 3 6 8 2 5 7 4[/CODE] | [CODE title="Girdi"]10 -5 3[/CODE] [CODE title="Çıktı"]3 2 -2 -5 3 -1 3 -4 1 -2[/CODE] |
- Python, zengin bir "rastgele" kütüphanesine sahip:
random. Bu kütüphane içindeki metotlara göz atın.
12. Girdi üretme
random kütüphanesini kullanarak tüm problemler için programlarınızı rastgele girdilerle test edin. Girdileri nasıl oluşturacağınız da başlı başına bir problem. : )Noktaları kimin oluşturduğunu düşünüyordunuz?
13. π
(Üniversitede bize sorulan ilk problemlerden biriydi. Eğlenceli ve akılda kalıcı...)Bir birim karenin içine, kareye sığabilecek en büyük çember çiziliyor. Karenin içinde rastgele noktalar oluşturarak çemberin içinde kalan noktaların oranından
π sayısına yaklaşmaya çalışın.
- Nokta sayısı çoğaldıkça bu oran neyi temsil eder?
14. Harita
Girdide satır ve sütun sayıları verilen,. (boş) ve # (engel) karakterleriyle temsil edilen rastgele bir harita oluşturun. Bir karenin boş olma olasılığı ([0, 1] aralığında) da girdide veriliyor.|
Kod:
|
Kod:
|
Kod:
|
randomkütüphanesindeki hangi fonksiyonlar işimize yarayabilir?
15. Kaydedelim o haritayı
14. problemde oluşturduğunuz haritayıharita.txt isimli bir dosyaya yazdırın.16. Yol var mı? ☆
Haritada sol üst kareden sağ alt kareye, sadece sağ ve aşağı yönlerde hareket ederek boşluklar üzerinden gitmeye çalışın. Bu yolu harita üzerindex'lerle gösterin. Birden fazla yol olabilir, herhangi birini bulsanız yeter. Bulduğunuz yolu, harita üzerinde yol.txt isimli bir dosyaya yazdırın. Hiç yol yoksa Yol bulunamadı... yazdırın.|
Kod:
|
Kod:
|
Kod:
|
17. Kaç yol var? ☆
16. problemdeki olası tüm yolların sayısını bulun.|
Kod:
|
Kod:
|
Kod:
|
18. techolay
Girdide verilen tam sayı yakınlaştırma oranına göre# karakteriyle "techolay" kelimesini techolay.txt dosyasına çizin.|
Kod:
|
Kod:
|
Kod:
|
Kod:
|
19.
18. problemin çıktısını saat yönünde 90 derece döndürün.|
Kod:
|
Kod:
|
"Sayıyı niye 20'ye tamamlamadın?" diye sormayın.
Peki... 19 asal sayı, o yüzden (!).
Umarım problemlerin özellikle yeni başlayanlara faydası dokunur ve daha da önemlisi, problemler yeterince eğlencelidir.
Şimdiden uğraşınız için teşekkür eder, programlama hayatınızda başarılar dilerim. : )