Scratch – programming for children from MIT – not available in Tamil

Children like to learn by sharing stories, and characters, and themes. The Scratch project originally from the MIT Media lab, in Cambridge, MA, USA near Boston. As most engineers know, MIT has a great tradition of pioneering contributions to engineering field, and science from early 1900s.

Scratch is an impressive framework, and here is why,

  1. Scratch is designed for use on web, with a story-board and characters in a world
  2. Users, the children, then interact with this world by writing event handler code – this controls the character reactions to events.
  3. In this approach other language teaching tools have followed Scratch : Kids Ruby project.
  4. This is now called gamification in the edu-space.
  5. Scratch can be accessed on the Linux, Mac, Windows and also on the web using a Adobe Flash plugin
  6. Scratch is written in Smalltalk language, and has a history of over 25 years or so, morphing from its original form in the early 90s.

Learn more : at Scratch webpage http://scratch.mit.edu/

Ofcourse, my interests come from why Scratch is not ported to Tamil. Always. You can start helping bring this technology to Tamil students world wide by translating some strings into the Tamil language, now!.
Best Regards
-Muthu

Tamilscript in development – writing code in a web browser

Recently I have been trying to put together a system for writing code on client side browser by translating the code directly into Javascript. Today, I would like to show a demo of simple translator for Tamilscript

tamilscript
Demo of Tamilscript for use within a web browser. Tamilscript can leverage jQuery, and power of modern web browsers.

Comments and suggestions welcome. I will release the code if we reach any sizable level.
Regards,
-Muthu

“தமிழ்ழில் நிரல் எழுத – எழில் தமிழ் நிரலாக்க மொழி” புத்தகம் வெளியீடு | (Releasing ‘Write Code in Tamil’ book)

அனைவருக்கும் வணக்கம்.

தமிழில் கணினி மென்பொருள் நிரல் (Computer Software Program) எழுதக் கற்றுக்கொள்ளவேண்டும் என்கிற ஆர்வத்துடன் இந்த “எழில்” தளத்துக்கு வந்திருக்கிறீர்கள். உங்களுக்கு எங்கள் வாழ்த்துகள்! எழில் திட்டத்தில் உங்கள் நேரம் மற்றும் ஆர்வத்திற்கு நன்றி.

நீங்கள் எங்கள் “தமிழ்ழில் நிரல் எழுத – எழில் தமிழ் நிரலாக்க மொழி” புத்தகத்தை, இலவச தரவிறக்கம் செய்ய இணைப்பு http://ezhillang.org/koodam/book/register

உங்கள் கருத்துக்கள் மற்றும் ஆலொசனைகளை எங்களுடன் பகிர்ந்து கொள்ளவும்.

அன்புடன்,
எழில் மொழி அறக்கட்டளை,
பாஸ்டன், அமெரிக்கா

Ezhil Language Conference Articles

I’m happy to report that our collaboration has come up with 3 conference submissions for INFITT-2014 in Puducherry, India. While the articles are under review, I would like to only share the title and pending acceptance, the whole paper will be posted soon.

Ezhil-abstracts-2014

1. Learning Ezhil Language via Web

    Technical article on progress made in Ezhil Language and EzhilLang.org

2. Open-Tamil text processing tools

    Report efforts at Open-Tamil Python library for Tamil text processing

3. தமிழில் எப்படி நிரல் எழுதுவது ? – எழில் இணைய கருத்துக்கணிப்பு

    Survey results from poll conducted on Tamil programming language keywords

We are keeping our hands x-ed and we’ll see the outcomes by end of July, 2014.

Thanks to collaborators, @nchokkan, @msathia and @tshrinivasan.

2014 INFITT Tamil Internet Conference hosted in Puducherry

Very excited to read that 2014 has another INFITT Tamil Conference hosted in Puducherry, India, set up during the Sep 19-21, 2014. Please read the call for papers to the conference,  and consider publishing your latest + greatest Tamil software work. INFITT 2014 Puducherry, India. If you choose to publish, hurry! the deadline is June 30th.

Image

Notably this year the conference has chosen to

  1. Focus on OpenSource Tamil Applications, and Software
  2. Focus on mobile platform Android, iOS software, Windows 8
  3. Let only in-person presentations at conference
  4. Cost of regristration @ $40 on or before June 30th, and $50 later.
  5. Consider becoming an INFITT member.

-Muthu

Read the whole press-release here

Tamil Web 2.0 : தமிழ் இணையம் இரண்டாவது படி

தமிழ் இணையம், மற்றும் கணினி பயன்படுத்த முதல் படி நிறைவேற்றப்பட்டது. எழுத்துரு, எழுத்துரு, ஒழுங்கமைவு மற்றும் காட்சி பிரச்சினைகள் தீர்க்கப்பட்டது.

success_sudhamshu_4395260240

தமிழ் இணையம் இரண்டாவது படி, Tamil Web 2.0, அது எப்படி இருக்கும்?

  1. உயர் உரை விண்ணப்பங்கள்,
  2. ஆடியோ / வீடியோ விண்ணப்பங்கள்
  3. உயர் ஆர்டர் ஸ்மார்ட் போன் விண்ணப்பங்கள்?

நாம் இந்த மென்பொருள் உருவாக்க முடியுமா? நாம் அடுத்த நிலை அடைய முடியுமா?

60 மில்லியன் தமிழ் மக்கள், மேலும் இந்த மென்பொருள் பயன்படுத்த காத்திருக்கிறார்கள்.

வெகு காலம் வாழும் தமிழ்.

(eBook) “தமிழில் நிரல் எழுது – எழில் நிரலாக்க மொழி”

(eBook) “தமிழில் நிரல் எழுது – எழில் நிரலாக்க மொழி”

இந்த புத்தகம் தமிழில் நிரல் எழுத கற்று கொடுக்க உதவும்.

பொருளடக்கம் (Table of Contents)

முன்னோட்ட புத்தகம் (Preview Book)

எழில் (Ezhil), தமிழில் எழுதும்வகையில் உருவாக்கப்பட்டுள்ள நிரலாக்க மொழியாகும். இதில் தமிழ் கலைச் சொற்களைக் கொண்டே நிரல்கள் எழுத முடியும். இது இலவசமாகக் கிடைக்கக்கூடிய ஒரு நிரல் மொழியாகும். இம்மொழி இன்னோர் பிரபல மொழியாகிய பைத்தானு(Python)டன் ஒத்து இயங்கும்படி உருவாக்கப்பட்டுள்ளது. பைத்தானின் நிரலகங்களைப் பயன்படுத்தி இயங்கும் இந்த மொழியில், ஆங்கிலத்திலும் நிரல்களை எழுதமுடியும்.

தற்சமயம் சோதனை அடிப்படையில் வெளியிடப்பட்டுள்ள இந்த மொழி, விரைவில் முழுச் செயல்பாட்டுக்கு வரும் என எதிர்பார்க்கப்படுகிறது.
மேலும் வலைத்தளத்தில் http://ezhillang.org/

This book teaches you to program in Ezhil language.

Ezhil, in Tamil language script (எழில்), is compact, open source, interpreted, programming language, originally designed to enable native-Tamil speaking students, K-12 age-group to learn computer programming, and enable learning numeracy and computing, outside of linguistic expertise in predominatly English language based computer systems.

Ezhil is the first freely available Tamil programming language, and accessible via web at http://ezhillang.org/

To buy the book –

தமிழில் நிரல் எழுது – எழில் நிரலாக்க மொழி

எண்ணிக்கையிலான இலக்கங்களின் தொகை (sum of digits of a number)

எண்ணிக்கையிலான இலக்கங்களின் தொகை (sum of digits of a number)

அறிமுகப்படுத்துதல் (Introduction)

எல்லோருக்கும் வணக்கம்! நான் ஒரு போது இந்த வலைப்பதிவு இடுகை எதிர்பார்த்து இருந்தது.

இந்த இடுகையில், இலக்கங்களின் தொகை கணக்கிட எவ்வாறு, நான் எப்படி காண்பிக்கிறேன்.
Hello everyone! I am excited to show you how to calculate the sum of digits of a number, in Ezhil language, through this blog post.

கேள்வி கூற்று – வினா / (Problem Statement)

ஒரு எண் என்ன? இது இலக்கங்களின் ஒரு சரம். What is a number? It is a string of digits.
e.g. 1, 2, 1729, 314159, 355, 113, 1001, etc.
மேலே காட்டப்பட்டுள்ள எண்களை, எண்ணிக்கையிலான இலக்கங்களின் தொகை; the sum of digits for above numbers.
e.g. 1 -> 1, 2->2, 1729 -> 1+7+2+9 = 19, 314159 -> 3 + 1 + 4 + 1 + 5 + 9 = 23, etc.

 யோசனை/ (Solution Idea)

இது எளிதாக இருந்தது! ஆனால் நமது பிரச்சனை இதை ஒரு நிரல் எழுதுவது இருக்கிறது. This was easy! But our problem is to write a program for doing this.
எண் 1279 பரிசீலிக்க. Consider the number 1279.
  1. 10 மூலம் எண்ணிக்கையை வகுப்பதன், மற்றும் எஞ்சிய எடுத்து கணக்கிடலாம். மட்டு ஆபரேட்டர் “%” மற்றும் பிரிவு “/” பயனுள்ளதாக இருக்கும். Dividing the number by 10, and take the remainder. Modulo operator “%” and division “/” are useful.
  2. sum = 0; எண்  = 1279; எஞ்சிய = 9 = 1279%10; வகுப்பதன் = 127 = (1279/10) ;
  3. எஞ்சியவை சேர்த்து வைத்துக்கொள்ள. Add remainder to the total.
  4. sum = sum + எஞ்சிய.
  5. ஆதாய பங்கு >=  0 வரை, 4 – படிகள் 1 செய்யவும். Repeat steps 1 – 4, with the dividend as the new number until dividend > 0.

அனைத்து ஒன்றாக நீங்கள் அதை வைத்து  (Putting it all together you get),

# இது ஒரு எழில் தமிழ் நிரலாக்க மொழி உதாரணம் 
# sum of digits of a number
# எண்ணிக்கையிலான இலக்கங்களின் தொகை

நிரல்பாகம் எண்_கூட்டல்( எண் )
  தொகை = 0
  @( எண் > 0 ) வரை
     d = எண்%10;
     பதிப்பி "digit = ",d
     எண் = (எண்-d)/10;
     தொகை  = தொகை  + d
  முடி
  பின்கொடு தொகை 
முடி

பதிப்பி எண்_கூட்டல்( 1289)#20
பதிப்பி எண்_கூட்டல்( 123456789)# 45

நீங்கள் நிரலை ezhillang.org  முயற்சி செய்யலாம்; You can try out the code at ezhillang.org

வாசிப்பு நன்றி, மற்றும் உங்கள் கருத்துக்களை பகிர்ந்து கொள்ள!
அன்புடன்,
முத்து

Thanks for reading, and share your comments!
Regards,
Muthu

வாங்க, நிரல் எழுதுவோம்!

 “எழில்” நிரல் மொழி நாம் நன்கு அறிந்த தமிழிலேயே நிரல்கள் எழுத வழிவகை செய்கிறது என்று பார்த்தோம். ஆனால், நம்முடைய முதல் நிரலை எப்படி எழுதுவது? நேரடியாகக் கணினியில் நிரல் எழுத உட்கார்ந்துவிடலாமா?

 நாம் ஒரு வீடு கட்டுகிறோம் என்று வைத்துக்கொள்வோம். முதல் வேலையாகச் செங்கலும் சிமெண்டுமாக நிலத்தில் இறங்கிவிடுகிறோமா? அதற்கு முன்னால் பல வேலைகள் உள்ளன:

  • நிலத்தைத் தீர்மானிப்பது
  • அங்கே என்ன கட்டப்போகிறோம் (வீடா, அலுவலகமா, கடையா, வேறு ஏதாவதா) என்று தீர்மானிப்பது
  • அதற்குத் திட்டம் போடுவது (Blueprint)
  • எங்கே சுவர்கள், எங்கே தூண்கள் என்று தீர்மானித்து, திட்டத்துக்கேற்ப அஸ்திவாரம் போடுவது
  • அதன்மீது வீட்டை எழுப்புவது
  • உள்ளே நுழைந்து எல்லாம் திருப்தியாக உள்ளதா என்று பார்ப்பது
  • நண்பர்கள், உறவினர்களுக்குச் சொல்லுவது

இதே ஏழு நிலைகள், கணினி நிரல் எழுதுவதிலும் உண்டு:

  • நிலத்தைத் தீர்மானிப்பதுபோல், இங்கே களத்தை, கணினி மொழியைத் தீர்மானிக்கிறோம்
  • எதைக் கட்டப்போகிறோம் என்று தீர்மானிப்பதுபோல், இங்கே என்ன நிரல் எழுதுவது எனத் தீர்மானிக்கிறோம்
  • திட்டம் போடுவதுபோல், இங்கே Algorithm எனப்படும் நிரல் வழிமுறையை எழுதுகிறோம்
  • அஸ்திவாரம் போடுவதுபோல், இங்கே pseudocode எனப்படும் மாதிரி நிரலை எழுதுகிறோம்
  • வீட்டை எழுப்புவதுபோல், இங்கே முழுமையான நிரலை எழுதுகிறோம்
  • உள்ளே நுழைந்து பார்ப்பதுபோல், இங்கே நாம் எழுதிய நிரலைப் பரிசோதிக்கிறோம் (Testing)
  • நண்பர்கள், உறவினர்களுக்குச் சொல்லுவதுபோல், இங்கே நம்முடைய நிரலை நிரந்தரமாகச் சேமித்துவைத்து வேண்டும்போதெல்லாம் பயன்படுத்துகிறோம்

இப்படி மொத்தமாகச் சொன்னால் குழப்பமாகதான் இருக்கும். அதற்குப் பதிலாக, இந்த ஏழு நிலைகளைப் பின்பற்றி, ஒரு மாதிரி நிரல் எழுதிப்பார்ப்போமா?

1. களத்தை, கணினி மொழியைத் தீர்மானிப்பது

இதில் நமக்குக் குழப்பமே வேண்டியதில்லை. “எழில்” மொழியைதான் பின்பற்றப்போகிறோம் என்று நாம் ஏற்கெனவே தீர்மானித்துவிட்டோம்.

ஆனால், அதை எங்கே எழுதுவது?

நம்முடைய விண்டோஸ் அல்லது லைனக்ஸ் வகைக் கணினியில் “எழில்” மொழியில் நிரல் எழுதலாம். ஆனால் அதற்கு நீங்கள் “எழில்” மென்பொருளை அந்தக் கணினியில் நிறுவியிருக்கவேண்டும். ஒருவேளை நீங்கள் இன்னும் அதனைச் செய்யவில்லை என்றால், http://www.ezhillang.orgக்கு வாருங்கள். அங்கே நீங்கள் “எழில்” மென்பொருளைத் தரவிறக்கம் செய்யலாம். அல்லது, நேரடியாக அங்கேயே நிரல் எழுதிச் சரி பார்க்கலாம்.

புதிதாக நிரல் எழுதுவோர் பயிற்சிக்காக http://www.ezhillang.orgலேயே நிரல் எழுதுவது நல்லது. அதில் நல்ல அனுபவம் ஏற்பட்டபிறகு நம் கணினியில் “எழில்”ஐ நிறுவிக்கொள்ளலாம்.

2. என்ன நிரல் எழுதுவது எனத் தீர்மானிப்பது

நீங்கள் உங்கள் விருப்பம்போல் எதற்கும் நிரல் எழுதலாம். இங்கே ஓர் எளிய உதாரணமாக, இரு எண்களுடைய சராசரியைக் கண்டறிவதற்கு நிரல் எழுதுவோம்.

ஆங்கிலத்தில் இதனை Program Objective என்பார்கள். அதாவது, நாம் எழுதப்போகும் நிரலின் நோக்கம் என்ன? அது எப்படிச் செயல்படவேண்டும்? இதைத் தெளிவாகத் தெரிந்துகொண்டால்தான், நாளைக்கே அதில் பிழைகள் ஏதும் இருந்தால் கவனித்துச் சரிப்படுத்தமுடியும்.

ஆக, நம்முடைய நிரலின் நோக்கம், இரண்டு எண்களின் சராசரியைக் கண்டுபிடிப்பது.

3. Algorithm / நிரல் வழிமுறை

நிரல் வழிமுறை என்பது, இந்த நோக்கத்தை நாம் எப்படி நிறைவேற்றப்போகிறோம் என்பதற்கான திட்டமிடல். அதாவது, படிப்படியாகச் சிந்திப்பது.

ஆங்கிலத்தில் Algorithm என்று அழைக்கப்படும் நிரல் வழிமுறையை எழுதுவதற்குப் பல வழிகள் உண்டு, அழகழகாக பொம்மை போட்டு எழுதுவதற்கு நிறைய toolsகூட உண்டு. அதையெல்லாம் நாம் பின்னால் கற்றுக்கொள்வோம். இப்போதைக்கு, ஒரு காகிதத்தில் 1, 2, 3 என்று எண் போட்டு எழுதினால் போதுமானது.

நம் நோக்கம், சராசரி கண்டுபிடிப்பது. அதற்கு உள்ளீடு (Input) என்ன?

இரண்டு எண்கள். நாம் அவற்றை எண்1, எண்2 என அழைப்போம்.

இந்த நிரலின் வெளியீடு (Output or Result) என்ன?

நாம் தந்த இரு எண்களின் சராசரிதான் அது. இந்த எண்ணை நாம் எண்3 என்று அழைப்போம்.

எண்1, எண்2 ஆகியவற்றை வைத்துக்கொண்டு நாம் எப்படி எண்3ஐக் கண்டறிவது? இதற்கான கணிதச் சூத்திரம் என்ன?

இரு எண்களின் சராசரி என்பது, அவற்றைக் கூட்டி இரண்டால் வகுப்பதுதான். அதாவது:

எண்3 = (எண்1 + எண்2) / 2

அவ்வளவுதான். நாம் நமது நிரல் வழிமுறையை எழுதிவிட்டோம். இதோ இப்படி:

உள்ளீடு: எண்1, எண்2

1. எண்1 என்ற எண்ணைப் பெறுக

2. எண்2 என்ற எண்ணைப் பெறுக

3. இவ்விரு எண்களையும் கூட்டுக

4. வந்த கூட்டுத் தொகையை இரண்டால் வகுக்க

5. கிடைத்த விடையை எண்3 எனச் சேமிக்க

6. திரையில் எண்3 என்ற விடையை அச்சிடுக

வெளியீடு: எண்3

இது ஒரு நேரடியான நிரல் வழிமுறை. அதாவது, ஒன்றுக்குப் பிறகு இரண்டு, அதன்பின் மூன்று என வரிசையில் செல்வது. சில நிரல் வழிமுறைகள் அவ்வாறின்றி குதித்துச் செல்லும், திரும்பிச் செல்லும் (உதாரணமாக, 1, 2, 10 அல்லது, 1, 2, 3, 4, 3, 4, 3, 4, 5 என்பதுபோல).

இப்படிப்பட்ட சிக்கலான நிரல் வழிமுறைகளை நாம் பின்னர் தெரிந்துகொள்வோம். இப்போதைக்கு நமது முதல் கணினி நிரலை எழுத இந்த எளிய வழிமுறை போதுமானது.

4. மாதிரி நிரல் எழுதுவது

ஒரு முக்கியமான கடிதத்தை எழுதுவதற்குமுன்னால் மனத்தில் அதை எழுதிப் பார்க்கிறோம், அல்லது ஒரு துண்டுக் காகிதத்தில் எழுதுகிறோம் அல்லவா? அதுபோல “எழில்” மொழியில் இந்த நிரலை எழுதுவதற்குமுன்னால், மாதிரி நிரல் ஒன்றை எழுதிப் பார்த்துவிடுவோம்.

இங்கே நாம் “எழில்” மொழியின் குறிச்சொற்களைச் சரியாகப் பயன்படுத்தவேண்டும் என்று அவசியம் இல்லை. சாதாரணத் தமிழில் எழுதினாலே போதும். இதோ இப்படி:

எண்1 பெறுக

எண்2 பெறுக

கூட்டுத்தொகை = எண்1 + எண்2

எண்3 = கூட்டுத்தொகை / 2

எண்3 அச்சிடுக

இது ஒரு மாதிரி நிரல்தான். இதனை நாம் “எழில்” இணையத்தளத்தில் வைத்து இயக்கினால் விடை கிடைக்காது, பிழை(Error)தான் கிடைக்கும்.

அதனால் தவறில்லை. நம் நிரல் எப்படி இருக்கவேண்டும் என்று புரிந்துகொண்டுவிட்டோம் அல்லவா? அதுதான் நம் நோக்கம்.

5. முழுமையான நிரல் எழுதுவது

இதுதான் நம்முடைய ஏழு படிநிலைகளில் மிக முக்கியமானது. நம்மிடம் உள்ள மாதிரி நிரலை எடுத்துக்கொண்டு, ஒவ்வொரு வரியாக “எழில்” மொழிக்கு ஏற்றபடி அதனை மாற்றப்போகிறோம்.

இதற்குத் தேவையான உதவிக் குறிப்புகள், குறிச்சொற்கள், மாதிரி நிரல்கள் என அனைத்தும் “எழில்” இணையத் தளத்தில் கிடைக்கின்றன. அவற்றின் துணையோடு படிப்படியாக நாம் இதில் முன்னேறவேண்டும். ஒவ்வொரு வரியையும் சரியான “எழில்” மொழிக் கட்டளைகளாக மாற்றவேண்டும்.

உதாரணமாக, “எண்1 பெறுக” என்ற வரி இப்படி மாறும்:

எண்1 = 10

அடுத்து, “எண்2 பெறுக” என்ற வரி, இதுவும் எளிமையானதுதான்:

எண்2 = 6

மூன்றாவதாக, கூட்டுத்தொகை கணக்கிடுவது. இந்த வரி மாதிரி நிரலில் உள்ளதுபோலவே “எழில்” மொழியிலும் இயங்கும்:

கூட்டுத்தொகை = எண்1 + எண்2

நான்காவது வரியும் இதேபோல்தான், மாதிரி நிரலில் உள்ளது அப்படியே இங்கேயும் வரும்:

எண்3 = கூட்டுத்தொகை / 2

நிறைவாக, விடையை அச்சிடும் ஐந்தாவது வரி இப்படி மாறும்:

பதிப்பி “நீங்கள் தந்த எண்களின் சராசரி: “, எண்3

அவ்வளவுதான்! வாழ்த்துகள்! நீங்கள் உங்களது முதலாவது “எழில்” நிரலை எழுதிவிட்டீர்கள்:

எண்1 = 10

எண்2 = 6

கூட்டுத்தொகை = எண்1 + எண்2

எண்3 = கூட்டுத்தொகை / 2

பதிப்பி “நீங்கள் தந்த எண்களின் சராசரி: “, எண்3

6. நிரலைப் பரிசோதிப்பது

நாம் நிரல் எழுதிவிட்டோம். ஆனால் அது சரியாக இயங்குகிறதா என்று பார்க்கவேண்டுமே. இதற்கு நாம் “எழில்” மென்பொருளைப் பயன்படுத்தலாம், அல்லது, “எழில்” இணையத் தளத்துக்குச் செல்லலாம். இது நமது முதல் நிரல் என்பதால், அதனை நேரடியாக இணையத் தளத்தில் இயக்கிப் பார்ப்போம்.

உங்கள் இணைய உலாவி(Browser)ஐத் திறந்து http://ezhillang.org என்ற முகவரிக்குச் செல்லுங்கள். அங்கே “எழில் நிரல் எழுத Click Here” என்ற இணைப்பு காணப்படும். அதனை க்ளிக் செய்யுங்கள்.

இப்போது, மேலே நாம் காகிதத்தில் எழுதிய நிரலை அங்கே தட்டச்சு செய்யவேண்டும். உங்களுக்குத் தமிழ் தட்டச்சு செய்வது சிரமம் என்றால், அங்கே இதற்காகத் தரப்பட்டுள்ள விசேஷப் பொத்தான்களையோ தட்டச்சு உதவி நிரலையோ பயன்படுத்துங்கள்.

அடுத்து “நிரலை இயக்குங்கள்” என்ற பொத்தானை அழுத்துங்கள். இந்த விடை திரையில் தோன்றும்:

நீங்கள் தந்த எண்களின் சராசரி: , 8

வாழ்த்துகள்! உங்கள் நிரல் வெற்றிகரமாக இயங்குகிறது.

ஏதேனும் பிழைகள் இருந்தால், பிரச்னையில்லை, பின்னே சென்று அவற்றைச் சரி செய்து விடையைக் கண்டறியும்வரை நிறுத்தாதீர்கள்.

10, 6 என்ற எண்களுக்குப் பதில், வேறு சில எண்களை இட்டும் நீங்கள் பார்க்கலாம். சராசரி எண் எப்போதும் சரியாக வரவேண்டும்.

7. நிரலைச் சேமித்துவைப்பது

ஒருமுறை நிரல் எழுதியபிறகு, அதனை நாம் திரும்பத் திரும்பப் பலமுறை இயக்கவேண்டியிருக்கலாம். இதற்காக, நாம் அதனைக் கோப்பாகச் சேமித்துவைப்பது அவசியம்.

“எழில்” மொழியில் எழுதப்படும் நிரல்கள் அனைத்தும் “.n” என்ற நீட்சியுடன் சேமிக்கப்படவேண்டும். உதாரணமாக, இது சராசரி குறித்த நிரல் என்பதால் இதனை “average.n” என்று சேமிக்கலாம்.

இதற்கு நீங்கள் உங்கள் கணினியில் உள்ள notepad போன்ற ஒரு text editorஐத் திறக்கவேண்டும். அதற்குள் உங்கள் நிரலைத் தட்டச்சு செய்யலாம், அல்லது மேலே நாம் “எழில்” இணையத் தளத்தில் தட்டச்சு செய்ததைப் பிரதியெடுத்து ஒட்டலாம்.

பின்னர், அதனைச் சேமிக்கும்போது, இந்த விவரங்களைத் தரவேண்டும்:

  • பெயர்: average.n
  • சேமிக்கும் இடம்: உங்கள் விருப்பப்படி
  • Encoding: UTF-8

இதுபோல் நீங்கள் எத்துணை “.n” கோப்புகளை வேண்டுமானாலும் சேமிக்கலாம். பின்னர் வேண்டியபோது அவற்றை எடுத்துப் பயன்படுத்தலாம்.

பயிற்சி:

இதுவரை நாம் பார்த்த அதே ஏழு படிநிலைகளைப் பின்பற்றி, இந்த வகைகளில் நிரல்கள் எழுதிப் பாருங்கள்:

  • ஓர் எண்ணின் வர்க்கத்தைக் கண்டறிதல்
  • ஓர் எழுத்துச் சரத்தில் எத்தனை எழுத்துகள் உள்ளன என்று கண்டறிதல்
  • தரப்படும் மூன்று எண்களில் மிகச் சிறியது எது என்று கண்டறிதல்

இவ்வகை எளிய நிரல்களை எழுதி நன்கு பழகியபிறகு, நீங்கள் இன்னும் சிக்கலான நிரல்களை எழுதத் தொடங்கலாம். அதற்கான உதவிக் குறிப்புகள் அனைத்தையும் “எழில்” இணையத் தளமே உங்களுக்கு வழங்குகிறது.

தொடர்ந்து எழுதுங்கள். வெற்றிக்கு வாழ்த்துகள்!

என். சொக்கன்

ஹானொய் இன் கோபுரம் (Tower of Hanoi)

ஹனோய் கோபுரம் அறிமுக கணினி அறிவியலில் ஒரு சிறந்த பிரச்சனை. (Tower of Hanoi is a classic introductory computer science problem) see: http://en.wikipedia.org /wiki/Tower_of_Hanoi

பிரச்சனை நோக்கம், பின்வரும் நிலைமைகளின் கீழ், அச்சு # 3 மது # 1, முதல் வட்டுகள் அனைத்து நகர்த்த உள்ளது

R1: ஒரு சிறிய வட்டு பெரிய வட்டு மேல் உட்கார முடியாது
R2: நீங்கள் தற்காலிக அச்சு இரண்டு அச்சு ஏதாவது பயன்படுத்தலாம்
R3: நீங்கள் செய்ய முடியும் நகர்வுகள் எண்ணிக்கை இல்லை

Goal of the problem is to move all of disks from peg #1, to peg #3, under the following conditions,

  1. R1: Only a smaller disk can sit on top of the larger disk
  2. R2: You may use any of two pegs as temporary store
  3. R3: There is no limit on number of moves you can make
Tower of Hanoi (Ref: http://en.wikipedia.org/wiki/Tower_of_Hanoi)
Tower of Hanoi
(Ref: http://en.wikipedia.org/wiki/Tower_of_Hanoi)

How can you solve this problem ?

  1.  Let us reduced the size of the problem to 1 disk on the peg #1.
  2. We can make a drawing like [1,0,0].
  3. We can simply move the disk 1 from peg #1 to peg #3, and we have completed the problem!
  4. That was easy. [0,0,1].
  1. For 2 disks how do you solve it?
  2. We initially have [1 2, 0, 0]. we want to get to [0,0,1 2]
  3. By moving smaller disk 1 from peg #1, to peg #2, we have [2, 1, 0].
  4. Now your situation is same as problem with 1-disk on peg #1, and 1-disk on peg #2 which we will ignore temporarily.
  5. Next we can move either of disks from peg #1 or peg #2 to peg #3. However the rule, R1, requires us to move the peg #1 disk as it is the larger disk and it should go at bottom.
  6. Now your configuration is like, [0,1,2]
  7. Clearly the final step is to move disk #1 from peg #2 to peg #3, on top of the existing disk #2. Now your configuration is [0,0,1 2]. Solved!

So what does the general solution look like, for n-disks? Well the problem has a dynamic-programming structure, where solving smaller problems, inductively, leads to solution of the larger problem.

  1. Here, you need to move all n-1 smaller disks from peg #1 to peg #2,  and to do that, you will use peg #3 as temporary.
  2. Once you have achieved this, you have to move disk-n from peg #1 to peg #3.
  3. Now move (1,2, … n-1) disks from peg #2 to peg #3 using the peg #1 as intermediate.

This is a recursive solution and harder to visualize at first reading, but you will eventually get the hang of it.

Move 1,2,3 disks from peg #1 to peg #2, with peg #3 as intermediate. Move disk 4 from peg #1 to peg #4. Then move all disks from peg #2 to peg #3 using peg #1 as intermediate.
Move 1,2,3 disks from peg #1 to peg #2, with peg #3 as intermediate. Move disk 4 from peg #1 to peg #4. Then move all disks from peg #2 to peg #3 using peg #1 as intermediate.

The follow program describes the Ezhil program solution to Tower of Hanoi problem,

# (C) 2013 Ezhil Language Project
# Tower of Hanoi – recursive solution

நிரல்பாகம் ஹோனாய்(வட்டுகள், முதல்அச்சு, இறுதிஅச்சு,வட்டு)

@(வட்டுகள் == 1 ) ஆனால்
பதிப்பி  “வட்டு ” + str(வட்டு) + “ஐ \t  (” + str(முதல்அச்சு) + ”  —> ” +  str(இறுதிஅச்சு)+ “) அச்சிற்கு நகர்த்துக.”
இல்லை

@( [“இ”, “அ”,  “ஆ”]  இல் அச்சு ) ஒவ்வொன்றாக
@( (முதல்அச்சு != அச்சு)  && (இறுதிஅச்சு  != அச்சு) ) ஆனால்
நடு = அச்சு
முடி

முடி

# solve problem for n-1 again between src and temp pegs                      ஹோனாய்(வட்டுகள்-1, முதல்அச்சு,நடு,வட்டுகள்-1)

# move largest disk from src to destination
ஹோனாய்(1, முதல்அச்சு, இறுதிஅச்சு,வட்டுகள்)

# solve problem for n-1 again between different pegs
ஹோனாய்(வட்டுகள்-1, நடு, இறுதிஅச்சு,வட்டுகள்-1)
முடி
முடி

ஹோனாய்(4,”அ”,”ஆ”,0)

Try this program online, at, ezhillang.org Alternative solution by @tshrinivasan can be found towers_of_hanoi.n

Solution is illustrated in Fig. 2, with following output,

வட்டு 1ஐ       (அ  —> இ) அச்சிற்கு நகர்த்துக.
வட்டு 2ஐ       (அ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (இ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 3ஐ       (அ  —> இ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (ஆ  —> அ) அச்சிற்கு நகர்த்துக.
வட்டு 2ஐ       (ஆ  —> இ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (அ  —> இ) அச்சிற்கு நகர்த்துக.
வட்டு 4ஐ       (அ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (இ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 2ஐ       (இ  —> அ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (ஆ  —> அ) அச்சிற்கு நகர்த்துக.
வட்டு 3ஐ       (இ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (அ  —> இ) அச்சிற்கு நகர்த்துக.
வட்டு 2ஐ       (அ  —> ஆ) அச்சிற்கு நகர்த்துக.
வட்டு 1ஐ       (இ  —> ஆ) அச்சிற்கு நகர்த்துக.

I hope you had fun!