Bu, şeftali (桃子) ve şeftali çekirdeği (桃核) üzerine eğlenceli bir programlama problemidir. Kurallar şu şekildedir:
- Başlangıçta belli miktarda para ve çekirdek vardır.
- Her hamlede 1 元 para ile bir şeftali satın alınabilir ya da 3 adet çekirdek ile bir şeftali takas edilebilir.
- Bir şeftali yendiğinde 1 adet çekirdek kazanılır.
Nihai hedef: mümkün olduğunca çok şeftali yemek. Aşağıda bu problemi çözmek için tam fikir ve kod bulunmaktadır.
Çözüm fikri
Bu problemin kilit noktası, çekirdeklerin değerini tam kullanıp boşa harcamayı önlemektir. İzlenecek adımlar:
- Her adımda çekirdeklerin değerini paraya çevirerek mevcut parayı maksimize edin.
- Eğer para yeterliyse bir şeftali satın alıp yiyin.
- Satın almaya artık devam edemediğinizde, kaynak kullanımını en üst düzeye çıkarmak için “bir kez daha takas yapılıp yapılamayacağını” kontrol edin.
Program kodu
Aşağıda Python ile yazılmış tam kod yer almaktadır:
money = 10
peach_pits = 0
peaches_eaten = 0
while True:
money += peach_pits / 3
peach_pits = 0
if money < 1:
if money + 1/3 >= 1:
money += 1/3
peach_pits -= 1
else:
break
money -= 1
peaches_eaten += 1
peach_pits += 1
print(f"总共吃了 {peaches_eaten} 个桃子")