راکت
حل شده

پروژه Sonar Sweep

7 پاسخ

سلام پروژه مسابقات code of advent هست این موردی که میزارم هر کاری کردمانصافا تمرین سختی داره مسابقات اش :)
متوجه نمیشم چجوری کاری کنم که اولا هر بار دو عدد قبلی مقایسه کنه و افزایش و کاهش بررسی کنه
الگوریتم پروژه

200 (increased)
208 (increased)
210 (increased)
200 (decreased)
207 (increased)
240 (increased)
269 (increased)
260 (decreased)
263 (increased)

به همراه تعداد increased و decreased هم میخواد که توی مثال بالا 7 تا شد حالا میشه بگید چجوری با لیست کاری کنم که رنج خاصی مثلا 10 عدد از ورودی بگیره و بعد خروجی بالا بده

ثبت پرسش جدید

پاسخ‌ها

7
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

بهترین پاسخ

خب بخش شرطی که گذاشتید ایراد داره. ی همچین چیزی رو باید بنویسید.

if(currentNum < beforeNum) count_decreased += 1;
else if(currentNum > beforeNum) count_increased += 1;
else count_equal += 1;
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

سوالتون رو به طور کامل بنویسید. واضح نیست. بایستی زحمت ترجمه سوال رو به خودتون بدین.

محمدرضا هلالی
محمدرضا هلالی
@mohammadrezah

تخصص: جونیور تازه کار

نگاه کنید پروژه به این شکل که 50 ورودی به برنامه داده میشه بعد دو عدد اول رو مقایسه میکنه تا به عدد آخر برسه وقتی به عدد آخر رسید تعداد افزایش اعداد و تعداد کاهش رو باید نشون بده البته بیشتر این متوجه نشدم
کد خودم میزارم یک نگاهی بهش بکنید با فانکشن نوشتم اما توی بدست آوردن اعدادی که کمتر میشن مشکل داره

def sonar_sweep_pt1(inp):
    count_increased = 0
    count_decreased = 0
    with open(inp, 'r') as f:
        before_num = None
        for line in f.readlines():
            if not before_num:
                before_num = line
                #print(before_num)
            if before_num > line or before_num < line:
                count_decreased += 1
            before_num = line

    return 'decreased count value in this file :', count_decreased
    #return count_increased

inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))

شاید پاسخ شما همین‌جا باشد

محمدرضا هلالی
محمدرضا هلالی
@mohammadrezah

تخصص: جونیور تازه کار

سلام میلاد عزیز کدم درست شد فقط موردی که داره باز بعضی اوقات اون شرطی که برای تعداد افزایش عدد هست درست کار نمیکنه مثلا فایل زیر نگاه کن

def sonar_sweep_pt1(inp):
    count_increased = 0
    count_decreased = 0
    count_equall = 0
    with open(inp, 'r') as f:
        first_num = None
        for after_num in f.readlines():
            if not first_num:
                first_num = after_num
                #print(first_num)
            if (first_num < after_num):
                count_increased += 1
            if (first_num > after_num):
                count_decreased+= 1
            else:
                count_equall+= 1

    print('increased count number is :',count_increased)
    print('decreased count number is : ',count_decreased)
    #return count_increased

inp = 'V:/temp_file/num_inp.txt'
print(sonar_sweep_pt1(inp))
# خروجی به اشتباه اینجوری میزنه 
increased count number is : 9
decreased count number is :  0

ولی خروجی به اشتباه اینجوری میزنه به خاطر null دادن متغیر نیست ؟

فایل ورودی 
199 
200 
208 
210 
200 
207 
240 
269 
260 
263 
# 7 incrased 
# 2 descreased
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

بله از خروجی مشخص هستش که خطا دارید.
من با زبان برنامه نویسی تون آشنایی ندارم، سعی کنید در طول پیمایش حلقه for, مقادیر متغیرها را رصد کنید تا متوجه بشید کجای کارتون ایراد داره.

mmj-sys
mmj-sys
@mmj.sys

تخصص: داش متخصص چیه من پروفسورم .

با شی گرایی کم

import sys
class app():
      def __init__(self , file_addr):
          self.file_addr = file_addr
          self.file_content = self.read_file()
          self.number_list = self.convert_string_to_list()
          self.how_much = self.compute()
      #read file data
      def read_file(self):
          with open(self.file_addr , "r") as file:
               content = file.read()
          return content
      # convert string of file to list
      def convert_string_to_list(self):
          list_of_numbers = self.file_content.split("\n")
          temp_list = []
          for number in list_of_numbers:
              temp_list.append(int(number))
          return temp_list
      # get all numbers and compute all increased
      def compute(self):
          how_much=0
          last_number = self.number_list[0]
          for i in self.number_list:
              if i > last_number:
                 how_much += 1
              last_number=i
          return how_much
محمدرضا هلالی
محمدرضا هلالی
@mohammadrezah

تخصص: جونیور تازه کار

من شی گرای کار نکردم اصلا نتونستم کدتون متوجه بشم داخل ide اجرا میکنم ولی فکر می کنم اون کدی که من گذاشتم با یک تغییر درست میشه چون فقط مشکل اینه باگ منطقی داره و باید شرط ها درست کنم ولی نمیدونم چجوری

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام