Merhabalar,
Coding Game’in ilk bölümlerinden biri olan https://www.codingame.com/ide/puzzle/the-descent bölümünde kod çözümünü bir arkadaş şöyle çözümlemiş:
import sys
import math
# The while loop represents the game.
# Each iteration represents a turn of the game
# where you are given inputs (the heights of the mountains)
# and where you have to print an output (the index of the mountain to fire on)
# The inputs you are given are automatically updated according to your last actions.
# game loop
while True:
ans = 1
height = 0
for i in range(8):
mountain_h = int(input()) # represents the height of one mountain.
if mountain_h>height:
ans=i
height=mountain_h
# Write an action using print
# To debug: print("Debug messages...", file=sys.stderr, flush=True)
# The index of the mountain to fire on.
print(ans)
Bunu tane tane anlatabilecek arkadaşımıza şimdiden sonsuz teşekkürler.
Öncelikle tanımlamalar yapılmış.
- Programda yer alan
while
döngüsünün, oyunu temsil ettiği söyleniyor.
- Her döngü yenilemesi oyunun bir dönüşünü temsil ediyor.
- Programın ihtiyacı olan girdi ve veriyi
heights
ile mountains
de tutacak.
- Çıktı göstermen zaman da “
the index of the mountain to fire on
” yazan yere yazacaksın.
- Verilen girdiler son eylemlere göre otomatik güncelleniyor.
Şimdi kodu okuyalım;
iki modüle ihtiyacımız var. Birincisi sys
diğeri math
sys
için kaynak; (python sistemine ilişkin nitelikler için lazım)
https://python-istihza.yazbel.com/standart_moduller/sys.html
math
için kaynak; (matematiksel işlemler için kullanılacak)
math Modülü — Yazbel Python Belgeleri
import sys
import math
while True: #döngü oluşturulmuş
ans = 1 #
height = 0 # yükseliğin başlangıç değeri belirlenmiş
for i in range(8): #range ile 8 e kadar bir liste oluşturulmuş. For döngüsü 8 kere çalışacak demektir bu-
#(0 dan başlar 8 e kadar gider. 8 dahil değil!)
mountain_h = int(input()) #dağ yüksekliğini kullanıcıdan alıyor.
if mountain_h>height: #eğer dağ yüksekliği yukarıda belirlenen (height=0) değerden büyük ise şunları yap
ans=i #ans değişkenine for döngüsündeki i değişkeninin range(8) de oluşturulan listeden karşılık gelen değeri ver
height=mountain_h #yükseklik değişkenimizin yeni değerini kullanıcıdan alınan yükseklik değeri olarak değiştir
#böylelikle ne oluyor? her seferinde kullanıcıdan bir öncekinden daha fazla bir yükseklik girmesi gerekeceği için-
#for döngüsünde range(8) içinde dönen i değişkeni ans değişkenine yazılacak. Her seferinde bu değer-
#artacağı için program çalıştığında hep bir yükselişte olacak
# Döngü başa dönmeden önce bir eylem gerçekleştirmek istiyorsak buraya print edebiliriz
# Hata ayıklamak ve bilgilendirmek için şunları kullanabiliriz; print("Debug messages...", file=sys.stderr, flush=True)
# Son olarak da dağın ateşe verilecek indeksini yazdır.
print(ans) #yazdırdık.
Yani biraz eksik var sanki, öyle hissettiriyor. Kodun tamamının bu olduğuna emin misiniz?
Tevhidulvahset vakit ayırdığınız için çok teşekkür ederim.
Kodun yapılışı burada hocam:
rica ederim akşam izleyip bakarım.