Çözmeye çalıştığım soruda tüm inputları karşılayamıyorum yardım

Yazında en başta alaycı tavrından dolayı yanıt verme gereği duydum. Hatanın çözümüne ve yazdığınıza bakmadım. Haklısınız.

Balon egonuzu geride birakip anlasilmaz oldugunu 5-6 kere tekrarladigim soruyu anlatmaya iki dakika ayirsaydiniz belki de coktan bitmisti bu is.

Bir insan, internette buldugu bir programlama sorusunu cevaplamaya calisiyor. Beceremeyince daha iyi bilenlerden yardim almak istiyor. Bir foruma gidiyor. Oraya soruyor, sorarken hata yapiyor. Sorusu cevaplanmaya calisilirken bir yandan da hatasi belirtiliyor. Bunun uzerine:

  • Insanlarin Ingilizcesi hakkinda yorum yapiyor
  • Kendi Ingilizce bilgisini gostermeye calisiyor, “Bu da ufak ders niteliğinde olsun” diyor
  • 260 kere yonlendirilme ihtiyaci duyulmus forum kulturu ogreten yazinin alakasiz yerlerini niteliksiz elestiriyor
  • Sorusunu cevaplamaya calisan insanin kalitesizligini yuzune vuruyor
  • Araya troll giriyor…

Bazen sirf “basit bir interaksiyon ne kadar zorlastirilabilir” diye gormek icin geziniyorum buralarda.

Ya ulkenin toplu asagilik kompleksi var, ya da internet son 20 senede feci toksiklesti.

Senin derdin de çok ayrı be. Sen zaten apayrı bir dünyasın. Az önce cevap olarak söyledik az oku. Yazıya döktüm ben oradaki ekran görüntüsünden anlaşılmayacağını öğrenince. Ardından sen geldin bana laf yetiştirdin. Diğer arkadaş bazı konularda bir nebze haklı olabilir de senin gram haklılığın yok.

Forum kültürüne hakimim dert etme. Hatamın farkında olup uyarmana gerek kalmadan bir soruyu attım. Üstüne uyarman beni kıl eden şey.

Belki de kendinde ararsın sorunu. Tüm ülkeyi suçlamak zor olmuyor mu?

CV mi de yazsana hazır atmaya başlamışken.

Sende bir foruma, bir topluğa girdiğinde bir etrafına bak, kuralları, ortamı insanların eğitim ve bilgi seviyelerini gözlemle yırtık dondan çıkar gibi ortaya çıkma o zaman.

Olur senin keyfine göre yazarız başka bir emrin?

Neyi düzelttiğin ve işe yaramadığını paylaşsaydın ya millete çene yetiştirene kadar.

Yapma nooolur bırakma hadi bu soruyu bizim için çözmelisin. Buna ihtiyacımız var.

Ağzının ayarını kontrol et de ondan sonra millete alaycı de.

Tabi canım hata kodları spor olsun diye derleyicilerin yorumlayıcıların ürettiği kodlar sen ciddiye alma onların konuyla alakası yoktur zaten.

Direkt kodu istemediysen hata kodunun neden oluştuğunu nasıl çalıştığını çözerdin. Ona buna az buçuk ingilizce biliyordurlar çözersiniz gibi abuk subuk laflar yetiştirmeseydin.

Tabi tabi başlığı ben açtım, yardım isteyen de benim. Dert de benim derdim.

O senin bileceğin iş. Eğlendirdikse ne ala.

Ama soru sormak isteyenlere örnek olsun.

Yardıma ihtiyacınız varsa,

Kibar olun soru sorun, yanlış yaptığınız yerleri gösterin. Tekrar sorun, derdinizi anlatmaya çalışın.

Mümkünse kodunuzun metin şeklinde halini paylaşın ki insanlar eşek değil sizin kodunuzu resimden bakıp yazmak zorunda değil.

Ona buna laf sokuşturmaya kalmayın, kalkarsanız da size de sokulan lafın iade edileceğini unutmayın.

Ha en önemli konu, editör, derleyici, yorumlayıcı hata mesajlarını okumayı öğrenin. Biri bir çözüm önerdiğinde benle dalga geçiyor mu bana laf mı sokuyor diye kafa yoracak vakit ayırmak yerine ne söylediğini çözümün ne olduğunu anlamaya çalışın.

Karşında bu konuda tecrübeli bir büyüğün seni uyarmış. Adama laf sokma derdine düşmüşsün. Ona rağmen ben de seni uyarıp, o büyüğüne saygısızlık yapma diyorum, bu sefer bana çirkinleşmeye kalkıyorsun.

Böyle sonuç alamazsın.

Alamayacağıng gibi alacağın cevaplara da bozulmayacaksın.

AHAHAHA örnek verecek tek kişi sen kaldın zaten :smiley:

kendine mağdur edebiyatı yapmaya devam et. Daha fazla cevapla uğraşmaya değmezsin. bu kadarı sana yetmiyorsa sabah akşam yazsam yine laftan anlamazsın. Daha yazdıklarımı düzgün okumamışsın gelmiş kendin laf yetiştirmeye çalışıyorsun.

Yanlış anlamışsın. Seni ibretlik örnek ettik.

Saf, burası forum ne mağdur olacağım. Sana cevabını verince neden böyle tepki gördüm dermisin diye anlattım.

Ne olur uğraş, yalvarırıım uğraş. Hayatımın anlamı kalmaz ne olur uğraş benle.

İnan ben de sana bunu diyecektim.

Sen iki satır çözümü okumamışsın ben senin yazdıklarını mı okuyayım.

Ergenliğini tamamla sonra devam ederiz.

:smiley: aynen, ergenlikmiş. Devam et.

Sorunun çözümü derdin olmaktan çıktıysa sorun yok benlik.

Yok hala derdim o. Sen kendini mi benim derdim sandın. Bir yandan verdiğin çözüm yolu üzerinden bir şeyler deniyorum.

Çözüm vermedim. Sadece hata mesajının nedenini söyledim. Soru basit. Sana haklı ipuçları da verilmiş. Geçme koşulu nedir, sınır değerler neymiş gibi. Anlamak derdin olursa kodu çok basit bir konu.

Sen böyle ayakta top gezdirmeye devam et. Bulursun çözümü.

Kodu güncelledim. Yardım etmek istersen edebilirsin. Eğer yardım etmek istemezsen başka bakmak isteyen arkadaş olursa diye :

def minimum_mana(x: int, l: int, n: int, m=0):
    if n <= 0:
        return m
    x_copy = x
    for i in range(n):
        x -= m
        x *= 2
    if x > l:
        return minimum_mana(x_copy, l, n, m + 1)
    else:
        return m


def main():
    input_values = input().split()
    if len(input_values) != 3:
        print("0")
        return

    try:
        x, l, n = map(int, input_values)
    except ValueError:
        print("0")
        return

    minimum_mana_sonuc = minimum_mana(x, l, n)
    print("Minimum mana:", minimum_mana_sonuc)


if __name__ == "__main__":
    main()

Buradaki son sıkıntı aşağıdaki test inputlarında hata veriyor. Tek hata da ilk test inputu ne olursa olsun 0 vermesi. Diğer inputların çıktıları doğru geliyor. 17 veya 23. satırla alakalı diye düşünüyorum ancak oraya farklı bir şey entegre edemedim. Silersem veya print “0” yapmazsam da hiç çalışmıyor.

Çözüm burada.

Tabi ki ben yardım etmeyeceğim. Yardım etmek isteyen arkadaşlara kolay gelsin.

Bu arada sen de fotoğraftan kodunu düzeltebilirsin. Böylece empati yapmayı öğrenebiirsin.

Direkt çözümü istemem, teşekkürler.

Nasıl bir hata alıyorsunuz, gösterebilir misiniz? Test inputu nasıl 0 oluyor, bir bakabilir miyiz?

Tabii.
İlk testin inputları şu şekilde:
2
2 5 3
6 5 0
Olması gereken Outputlar da şöyle:
1
0

Diğer testlerde oldukça fazla input var. Mesela bir tanesinde 9261 adet girdi durumu mevcut. Toplam 10 adet test yapılıyor. Diğer testlerin ekran görüntülerini aşağıya bırakacağım.

Bu arada benim son yazdığım kodun çıktısının her zaman 0 olduğunu farkettim. Bu sebeple 10 testin 5inden geçiyormuş. O kod yanlış yani.



Örnek olarak İnput 10’u aldım. Bu resimdeki sağdaki belgeler sırasıyla şu şekilde:

1)https://he-s3.s3.amazonaws.com/media/temporary-user-data/output-files/82869498/output-82869498-693989624-72308f8.txt

2)https://he-s3.s3.amazonaws.com/media/hackathon/november-clash-16/problems/5e77d144-a-output-5e77cb4.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA6I2ISGOYMPJGUFGY%2F20230526%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20230526T100124Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=0cd376afeaa218f9f2d4095bdbca74cea106175c07a8894327e4cb330440b4c7

  1. Umut GÃœZEL’s Report - (he-s3.s3.amazonaws.com)

İyi ama son yazdığınız kodda, siz test input adedini istemiyorsunuz.

    input_values = input().split()
    if len(input_values) != 3:
        print("0")
        return

Yani burada, siz kaç tane X, L ve N almanız gerektiğini seçmiyorsunuz. Yukardaki kod ile, aralarında boşluk olan 3 tane karakter girilmesi isteniyor aslında. Kodu öyle yazmışsınız çünkü. Ve bu üç sayıyı minimum_mana'ya argüman olarak veriyorsunuz.

Aşağıda yazdığınız kod ile n tane X, L ve N verisi istiyorsunuz aslında:

T = int(input())

test_cases = []

# Read test cases
for _ in range(T):
    X, L, N = map(int, input().split())
    test_cases.append((X, L, N))

Özetle, bir hata almıyorsunuz. Sadece yazdığınız koda göre n tane X, L, N almanız mümkün değil. O kısmı değiştireceksiniz.

Dolayısıyla son paylaştığınız koda göre, input olarak 3 sayı girmelisiniz.

Doğru söylüyorsunuz. Ben, input içine bir string girdiğimde kabul etmediğini söylemeyi unutmuşum. Yani int(input(“x giriniz:” , “l giriniz:” “n giriniz:”) benzeri bir şekilde x,l ve n yi alamıyorum çünkü kendisi vermek istiyor program (anladığım kadarıyla). Ayrı ayrı alınca da entegre edemiyorum. Program çok fazla şey istiyor. Kafam karıştı iyice.

Kafanız karışmasın, sadece main fonksiyonunu şöyle değiştireceksiniz:

def main():
    T = int(input())
    for _ in range(T):
        X, L, N = map(int, input().split())
        minimum_mana_sonuc = minimum_mana(X, L, N)
        print("Minimum mana:", minimum_mana_sonuc)

Burada T'ye 2 yazarsanız, 2 defa X, L, N için değer alırsınız ve bu değerleri minimum_mana’ya argüman olarak verir ve sonuçları ekrana yazdırırsınız.

Örnek:

2
2 5 3
Minimum mana: 1
6 5 0
Minimum mana: 0
1 Beğeni

Anladım. Çok teşekkür ederim. Çözüldü problem