பாக்களில் சீர் பிரித்துச் சொல்லும் நிரலி

Tuesday, March 09, 2010

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

செயல்படும் விதம் சுருக்கமாக:
asaiCount சொற்களை பிரித்து எழுத்து வகைகளை எண் வடிவமாக்கிக் கொள்கிறது. குறிலுக்கு 1, நெடிலுக்கு 2 மற்றும் ஒற்றுக்கு 0 என்று எண் வடிவம் கொடுக்கிறது. அதன் பின் அசை, சீர், வாய்பாடுகளை கணித்துக் கொள்ள எளிதாக இருக்கிறது.

உ.ம்:
அகர           =     111 : நிரை நேர்  - புளிமா
முதல         =     111 : நிரை நேர்  - புளிமா
எழுத்தெல்லாம் = 1101020 : நிரை நேர் நேர்  - புளிமாங்காய்
ஆதி           =      21 : நேர் நேர்  - தேமா
பகவன்        =    1110 : நிரை நேர்  - புளிமா
முதற்றே      =    1102 : நிரை நேர்  - புளிமா
உலகு         =     111 : நிரை நேர்  - புளிமா


அடுத்த முயற்சியாக இந்த நிரலியை, பாக்களில் தளை தட்டும் இடங்களை சுட்டிக்காட்டும்படி மேம்படுத்திக் கொள்ளலாம் என்று இருக்கிறேன்.

# coding: utf-8
import sys
uyir = ("அ", "ஆ", "இ", "ஈ", "உ", "ஊ", "எ", "ஏ", "ஐ", "ஒ", "ஓ", "ஔ")
uyirKuril = ("அ", "இ", "உ", "எ", "ஒ")
uyirNedil = ("ஆ", "ஈ", "ஊ", "ஏ", "ஐ", "ஓ", "ஔ")
aytha = ["ஃ"]

mey = ("க", "ங", "ச", "ஞ", "ட", "ண", "த", "ந", "ப", "ம", "ய", "ர", "ல", "வ", "ழ", "ள", "ற", "ன")
#          கா           கி            கீ            கு            கூ           கெ           கே          கை          கொ          கோ          கௌ          ஃ
thunai = ['\u0bbe', '\u0bbf', '\u0bc0', '\u0bc1', '\u0bc2', '\u0bc6', '\u0bc7', '\u0bc8', '\u0bca', '\u0bcb', '\u0bcc', '\u0bcd']
# குறில்    கி           கு            கெ           கொ       
kuril = ('\u0bbf', '\u0bc1', '\u0bc6', '\u0bca')
# நெடில்     கா          கீ            கூ           கே          கை           கோ          கௌ     
nedil = ('\u0bbe', '\u0bc0', '\u0bc2', '\u0bc7', '\u0bc8', '\u0bcb', '\u0bcc')

seyul = """அகர முதல எழுத்தெல்லாம் ஆதி 
பகவன் முதற்றே உலகு"""
seyul = """
இனிய உளவாக இன்னாத கூறல்
கனிஇருப்பக் காய்கவர்ந் தற்று"""

def getVaypaadu(seer):
  vaypaadu = ""
  seer = seer.strip()
  if (seer == "நேர் நேர்") :
    vaypaadu = "தேமா"
  elif (seer == "நிரை நேர்") :
    vaypaadu = "புளிமா"
  elif (seer == "நேர் நிரை") :
    vaypaadu = "கூவிளம்"
  elif (seer == "நிரை நிரை") :
    vaypaadu = "கருவிளம்"
  if (seer == "நேர் நேர் நேர்") :
    vaypaadu = "தேமாங்காய்"
  elif (seer == "நிரை நேர் நேர்") :
    vaypaadu = "புளிமாங்காய்"
  elif (seer == "நேர் நிரை நேர்") :
    vaypaadu = "கூவிளங்காய்"
  elif (seer == "நிரை நிரை நேர்") :
    vaypaadu = "கருவிளங்காய்"
  if (seer == "நேர் நேர் நிரை") :
    vaypaadu = "தேமாங்கனி"
  elif (seer == "நிரை நேர் நிரை") :
    vaypaadu = "புளிமாங்கனி"
  elif (seer == "நேர் நிரை நிரை") :
    vaypaadu = "கூவிளங்கனி"
  elif (seer == "நிரை நிரை நிரை") :
    vaypaadu = "கருவிளங்கனி"
  return vaypaadu

def getAsaiType(asai):
  if (asai[:2] == "11") :
    return ("நிரை ")
  else :
    return ("நேர் ")

def getSeerType(seerCount):
  asaiTypes = ""
  mathirai = (str(seerCount))
  asai = ""
  count = 0
  for m in mathirai:
    count = count + 1
    if m == "0" :
      asai = asai + m
    elif asai[:1] == "2" :
      asaiTypes = asaiTypes + getAsaiType(asai)
      count = 1
      asai = m
    elif count > 2 :
      asaiTypes = asaiTypes + getAsaiType(asai)
      asai = m
      count = 1
    else :
      asai = asai + m
      asaiTypes = asaiTypes + getAsaiType(asai)
    return asaiTypes

def getAsaiCount(seer) :
  asaiCount = 0
  prev = ""
  for eluthu in seer :
    if eluthu in uyir :
#            sys.stdout.write(eluthu + "\n")
      prev = ""
    if (eluthu in uyirKuril) :
      asaiCount = asaiCount * 10 + 1
    elif (eluthu in uyirNedil) :
      asaiCount = asaiCount * 10 + 2

    if eluthu in (thunai) :
      prev = prev + eluthu
#            sys.stdout.write(prev + "\n")
      prev = ""
    if (eluthu in nedil) :
      asaiCount = asaiCount + 1
    elif (eluthu == '\u0bcd') :
      asaiCount = asaiCount - 1

    if eluthu in mey :
      asaiCount = asaiCount * 10 + 1
    if not prev :
      prev = eluthu
      continue
    else :
#                sys.stdout.write(prev + "\n")
      prev = eluthu
#    if prev != "" :
#        sys.stdout.write(prev + "\n")
    return asaiCount

for seer in seyul.split() :
  sys.stdout.write(seer + " = ")
  asaiCount = getAsaiCount(seer)
  seerType = getSeerType(asaiCount)
  print(seerType + " - " + getVaypaadu(seerType))

11 மறுமொழிகள்:

பித்தனின் வாக்கு said...

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

பித்தனின் வாக்கு said...

Please make space for followers.

செல்வராஜ் (R.Selvaraj) said...

இவ்விடுகை சுவாரசியமாக இருக்கிறது. உங்களது பதிவின் பிற இடுகைகளையும் பார்த்தேன். இவ்வளவு காலம் பார்க்கத் தவறிவிட்டேன். பிறகொரு நாள் பொறுமையாய் படிக்க வேண்டும்.

பைதான் கற்றுக் கொள்ள ஆர்வம் வருகிறது.

சிறு திருத்தம். கருவிளங்காய், கூவிளங்காய் எனத் திருத்திவிடுங்கள். அவை மாங்காய் அல்ல. :-)

குலவுசனப்பிரியன் said...

//சிறு திருத்தம். கருவிளங்காய், கூவிளங்காய் எனத் திருத்திவிடுங்கள். அவை மாங்காய் அல்ல. :-) //
நன்றி செல்வராஜ். திருத்தி விட்டேன். முன்பு ஒருமுறை உங்கள் மகளின் கணக்குப் பாடம்பற்றி உங்கள் பதிவில் உரையாடி இருக்கிறோம்.

செல்வராஜ் (R.Selvaraj) said...

ஆம், இப்போது உங்களோடு உரையாடியது நினைவு வருகிறது. உங்கள் பெயரைப் பல இடங்களிலும் பார்த்திருக்கிறேன். (நினைவில் நிற்கும் நல்ல புனைப்பெயர்). உங்கள் பதிவினைத் தான் பார்க்கத் தவறிவிட்டேன்.

ந.ர.செ. ராஜ்குமார் said...

நிரலாக்கத்தில் இலக்கண விதிகளை பயன் படுத்துவது குறித்த கட்டுரை கணித்தமிழ் ஆர்வலர்கள்(கணிஞர்கள்) கட்டாயம் படிக்க வேண்டிய பதிவு.

குலவுசனப்பிரியன் said...

வருகைக்கும் கருத்துக்கும் மிக்க நன்றி ராஜ்குமார்

திகழ் said...

வெற்றி பெற வாழ்த்துகள்

kannanjnair said...

அற்புதம்.. இதை எதில் பயன்படுத்தி பார்க்க வேண்டும் ?? சொல்லுங்களேன்.........

குலவுசனப்பிரியன் said...

கண்ணன்,

இந்த நிரலி Python-ல் எழுதப்பட்டுள்ளது.

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

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

Anonymous said...

thalaiva you are great

Post a Comment