चार्ल्स एफ. विल्सन की खींची इस फोटो में श्रीनिवास रामानुजन बीच में और उनके गुरू जी. एच. हार्डी तस्वीर में सबसे दायीं तरफ हैं।
बात 1919 की है जब श्रीनिवास रामानुजन लंदन में थे। उनके मित्र और गुरू, जी. एच. हार्डी उनसे मिलने एक टैक्सी से गये। उस टैक्सी का नंबर था 1729। बातों बातों में उन्होंने रामानुजन को बताया, “मेरी टैक्सी का नंबर बड़ा साधारण था। यह किसी बुरे वक्त का संकेत तो नहीं”। “नहीं बिल्कुल नहीं”, रामानुजन बोले, “यह कोई साधारण संख्या नहीं। यह सबसे छोटी संख्या है, जो बनती है दो संख्याओं के घनों को जोड़कर, दो अलग-अलग तरीकों से।”
आइये, हम भी कंप्यूटर के साथ बातों-बातों में ऐसी ही खास संख्याएं ढूंढें।
कंप्यूटर पर Terminal
या Command Prompt
खोलें, python
टाइप करें, और फिर गणित का कोई सवाल टाईप करें।
>>> 9 * 9 * 9
729
>>> 10 * 10 * 10
1000
>>> 9 * 9 * 9 + 10 * 10 * 10
1729
कंप्यूटर के साथ हम अपनी खोज और भी आसान कर सकते हैं। हम संख्याओं को नाम दे सकते हैं और फिर उन संख्याओं को याद करने के बजाय उनका नाम ले सकते हैं। यह नाम चर कहलाते हैं।
>>> cube9 = 729
>>> cube9
729
>>> cube10 = 1000
>>> cube10
1000
>>> cube9 + cube10
1729
>>> cube10 - cube9
271
हम संख्याओं को नाम देने के साथ-साथ उन्हें बनाने के तरीके को भी नाम दे सकते हैं। और फिर कंप्यूटर को काम का पूरा तरीका बार-बार बताने के बजाय, बस तरीके का नाम ही ले सकते हैं। तरीकों को दिये गये नाम फलन कहलाते हैं।
>>> def cube(n):
... return n * n * n
>>> cube(9)
729
>>> cube(10)
1000
>>> cube(9) + cube(10)
1729
>>> cube(8) + cube(11)
1843
>>> cube(cube(10))
1000000
>>> cube(7) + cube(12)
def sumCubes (a, b):
... ?
>>> sumCubes(2, 3)
35
कोई संख्या खास है कि नहीं यह पता करने का काम अभी भी हमें ही करना पड़ रहा है। इसके बजाय हम कंप्यूटर को बता सकते हैं कि कैसे पता लगाएं कि कोई संख्या खास है कि नहीं। जिससे वो खुद पता लगा कर अलग-अलग स्थिति में अलग-अलग काम कर सकें।
>>> if cube(12) + cube(1) == 1729:
... print('sum of 12 cubed and 1 cubed is 1729')
>>> if cube(13) + cube(0) != 1729:
... print('13 cubed is not 1729')
... else:
... print('13 cubed is 1729')
>>> def checkSumOfCubes(a, b):
... if cube(a) + cube(b) == 1729:
... return ?
... else:
... return ?
>>> checkSumOfCubes(1, 11)
true
>>> checkSumOfCubes(2, 10)
false
किसी काम को बार-बार कराने के लिये हम उस काम को बार-बार बता सकते हैं।
>>> print('जय हो!')
जय हो!
>>> print('जय हो!')
जय हो!
>>> print('जय हो!')
जय हो!
या कंप्यूटर को कह सकते हैं कि उस एक काम को बार-बार करते रहें।
>>> while (true):
... print('जय हो!')
>>> n = 0
>>> n = n+1
>>> print(n)
>>> n = n+1
>>> print(n)
...
>>> n = 0
>>> while (true):
... ?
>>> n = 0
>>> product = 1
>>> n = n+1
>>> product = product * 10
>>> print(n)
>>> n = n+1
>>> product = product * 10
>>> print(n)
किसी काम को हमेशा के लिये करते रहने के बजाय हम कंप्यूटर को कह सकते हैं कि काम को वापस करने से पहले जांच कर लें कि काम को आगे करना भी है या नहीं।
>>> n = 0
>>> while n < 10:
... print(n)
... n = n+1
एक जैसी बहुत सारी चीज़ों पर कुछ काम करना हो तो सबके अलग-अलग नाम रखने के बजाय हम उन चीज़ों की एक सूची बना सकते हैं। o
>>> greetings = ['सलाम', 'नमस्ते', 'हैलो']
>>> fib = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> print(names[0])
सलाम
>>> print(names[1])
नमस्ते
>>> print(len(names))
3
print(names[len(names) - 1])
हैलो
>>> greetings.push('सत् श्री अकाल')
>>> greetings.push('सत् श्री अकाल')
>>> print(len(greetings));
5
>>> print(greetings[3]);
सत् श्री अकाल
>>> print(greetings[4]);
सत् श्री अकाल
>>> for item in greetings:
... print(item)
>>> print(greetings.index('सलाम'))
0
>>> print(greetings.index('अलविदा'));
-1
>>> define numbersUpto(start, end):
... numbers = []
... while start <= end:
... ?
>>> print(numbersUpto(10))
>>> for item1 in greetings:
... for item2 in greetings:
... print(item1, item2)
>>> for item1 in greetings:
... for item2 in greetings:
... if ?:
... print(item1, item2)
>>> listOfNos = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> listOfCubes = []
>>> for item in listOfNos:
... listOfCubes.append(?)
>> def getListOfCubes(n):
... ?
>> list = getListOfCubes(11)
>> print(list[len(list) - 1]);
1729
यह एक फलन है जो हमें 9999 तक की सभी ऐसी संख्याएं बता देता है जो 2 संख्याओं के घनों से बनती हैं।
>>> def taxiNos(list):
... nos = [];
... for item1 in list:
... for item2 in list:
... sum = cube(item1) + cube(item2)
... // यदि sum चार अंकों तक का ही है और अभी तक नहीं मिला है
... if sum <= 9999 && nos.indexOf(sum) == -1:
... nos.append(sum)
... return nos
>>> taxiNos(numbersUpto(1, 21))
>>> def Taxicab(n):
... ?
>> Taxicab(2)
1729
श्रीनिवास रामानुजन ऐसी संख्याऐं बिना कंप्यूटर के आसानी से ढूंढ लेते थे और उनके लिये शायद हर संख्या खास थी। आज वो हमारे बीच तो नहीं, पर हमारे साथ बात करने के लिये कंप्यूटर तो है।
और जानने के लिये हम ये वेबसाईट देख सकते हैं।
Structure and Interpretation of Computer Programs - https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html
Python Docs - https://docs.python.org/3/
Taxicab number - https://en.wikipedia.org/wiki/Taxicab_number