چند نکته
سوال اول
سوال دوم
سوال سوم
سوال چهار
سوال پنج
این سوال مثال خوبی از فلسفه ی کارکرد گرایی در برنامه نویسی است. تنها چیزی که در ارزیابی یک برنامه مهم است این است که نتیجه ی درست را تولید کند، و این کار را به هر شکلی میتواند انجام دهد. مثلا به این شکل:
n = 1000 s = 0 for x in range(n): if x % 3 == 0 or x % 5 == 0: s = s + x print s--------------------------------
سوال دوم
#it is not a good solution calling the fib function 4000000 times, It is very #time consuming. #take a look at the technique in this file and try to reuse it in similar cases. a = 1 #the first fib number b = 1 #the second fib number s = 0 while b < 4000000: if b % 2 == 0: s = s + b #s is the sum of even fibs a , b = b, a+b #b will be the next fib number print s--------------------------------
سوال سوم
import math def is_prime(x): #notice the range bounded to x ** 0.5 for a better speed #try to explain that how much faster is it? for scan in range(2,int(x ** 0.5) + 1): if x%scan == 0: return False return True n = 600851475143 #what does the following for do? for scan in range(int(n ** 0.5) + 1, 2, -1): if n % scan != 0: continue if not is_prime(scan): continue print scan break--------------------------------
سوال چهار
import math def digit(n,i): #returns the ith digit of n, the first index is 0 return (n / (10**(i)))%10 def num_of_digits(n): #returns the number of digits of n guess = 1 while n / (10 ** (guess)) != 0: guess = guess + 1 return guess def num_of_digits2(n): #another implementation of the method return int(math.ceil(math.log10(n))) def is_palindrome(n): nd = num_of_digits2(n) for x in range(nd): if not digit(n,x) == digit(n,nd-x - 1): return False return True #return true if False is never returned max = -1 for x in range(100,1000): print x for y in range(x,1000): t = x * y if (is_palindrome(t)): if t > max: print t, x, y max = t print maxاین سوال به تعبیری میتواند سخت ترین سوال در این مجموعه باشد. دقت کنید که چه طور با تعریف کردن توابع خاص کار تسهیل شده است. سعی کنید به جای نوشتن یک کد بزرگ، اول مسایل خاص تری که با آنها مواجهید به شکل متود بنویسید، تا راحت تر بتوانید به مساله ی اصلی فکر کنید. همه چیز را در یک جا نچپانید! .............. راه دیگری برای این مساله، قاعدتا در نگاه اول نمیتوانید بفهمید کد زیر چرا کار میکند چون خارج از محدوده ی درسی شماست. ولی اگر به اندازه کافی تلاش کنید خواهید فهمید و چیزی یاد میگیرید که به شدت کمکتان خواهد کرد!
#This is another solution of 4th euler project problem, #This source code is copied from the solution forum of the question #Just try to understand how it works. def palindrome(n): n = str(n) return n == n[::-1] #and what do the following line do? print max(a*b for b in range(100, 1000) for a in range(b, 1000) if palindrome(a*b)) #lovely python :x--------------------------------
سوال پنج
این سوال مثال خوبی از فلسفه ی کارکرد گرایی در برنامه نویسی است. تنها چیزی که در ارزیابی یک برنامه مهم است این است که نتیجه ی درست را تولید کند، و این کار را به هر شکلی میتواند انجام دهد. مثلا به این شکل:
print 19*17*16*13*11*9*7*5
5 نظر:
salam
bebakhshid vase soale 1 mazrab haie 15 ro nabayad az s kam konid ? akhe injoori 2 bar hesab mishan , albate man noe kare "or" ro nemidoonam , shayad or in meghdar ro kam kone !
http://sharifcs1388.persianblog.ir/
webloge daneshkadeye riazi
نه هر عدد فقط یک بار محاسبه روش انجام میشه. بار دومش رو من نمیبینم
bebinid adadi ke mazrabe 15 bashan yani ham mazrabe 3 hastan va ham mazrabe 5 dosorte ? khob vaghti ke ma 1 bar 3 ro dar nazar gereftim va 1 bar 5 ro joda pas mazarebe 15 ro ham ba 3 va ham ba 5 shemordimeshon va toie majmoo hesab kardim , albate toie avalin cm ham goftam ke nemidoonam or che joori amal mikone , shayad chon or oomade va be ebarati and be kar narafte 15 ro khod be khod 1 bar hazf mikone !
or ba and fargh mikone.. or=ejtema, and=eshterak
ارسال یک نظر
اشتراک در نظرات پیام [Atom]
<< صفحهٔ اصلی