Artful Arisuvadi – Tamil Alphabet Nomograms

Some weeks ago I started playing with and made a bunch of alphabet nomogram style pictures with Easel JS. Its interesting to think of possibilities.

Canonical Tamil has 12 + 1 vowels [உயிர்], 18 consonants [மெய்] and 12×18 = 216 [உயிர்மெய்] conjugate letters. Together the can be arranged in a Table of named column [12 for vowels] and named rows [18 for consonants] and cells of row-column at the conjugate letters.

I posted several images on Twitter; first one based on 3 concentric circles arrangement of the letters.

Arisuvadi – (C) 2018 Muthu Annamalai

Another image based on sunflower-spiral:

Arisuvadi – (C) 2018 Muthu Annamalai

The other based on a logarithmic spiral: 

Arisuvadi – (C) 2018 Muthu Annamalai

Another image looks to illustrate vowels and consonants as an interactive widget where you select uyir and mei letters from the outer + inner circles to form the uyirmei conjugate letter in the center.

Arisuvadi – (c) 2018 Muthu Annamalai

தொழில்நுட்பமும், மன உறுதியும் – Technology and Courage

sutherland

sketchpad மென்பொருள் உருவாக்கிய இவான் சுதர்லாண்ட்.

இவான் சதர்லேண்ட் (Ivan Sutherland’s), எழுதிய “Technology and Courage”  என்ற தொழில் நுட்பத்தின் உள்ள சவால்களும், தொழில்நுட்பம் முனைவோரின் மன உறுதியை பிரதிபலிக்கும் குணங்கள் பற்றியுமான கட்டுரை மிக விசேஷமான ஒரு கட்டுரை.

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

 

தனி வழி … மடக்கு (loop) வாக்கியங்களும், ரஜினி வசனமும்

எழில் மொழியை சிறிது நகைச்சுவையுடன் எப்படி அணுகுவது ? நம்ம சூப்பர்ஸ்டார் சொன்ன பொன்மொழிகளை கொண்டும் இதனை மீம்ஸ் வழி செய்யலாமா ?

             @(= 1,<= 100, அ = அ + 1 ) ஆக                             
                       அச்சிடு(“ஒரு தடவை சொன்னா”)
              முடி
 

rajini_100x

“பாட்ஷா ஒரு தரவை சொன்னா, நூறு தடவை சொன்ன மாதிரி” என்ற வசனத்தை எழில் நிரலாகா மாற்றலாம்

இந்த நாள் உங்களுக்கு இனிய நாள் ஆகட்டும்!

-முத்து

சொல்வளம் – புதிர்

குறிப்பு : எப்படி விளையாடுவது ?

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

சொற்கள்

எழில் தமிழ் கணிமை வெளியீடு நிரலாக்கம் நிரல்படுத்துதல் இயக்கு பட்டியல் அணி
கணம் வரிசைப்படுத்து திறமூலம் பொதுவெளி பயிற்சி தரவமைப்பு வழுதேடல் வாக்கியம் இலக்கணம்

புதிர்சதுரம்


க் மி நி ல் டு த் து ல்
து நி லா க் ம் க் தி வா
ழ் ம் யீ ம் க்
பொ தே டு ணி ட் மி மூ க் கி
து ம் வெ ம் க் மை டி
க் ல் வெ கு ம் ம்
ல் ளி ப் ரி மை ல் மை ம்
பு சை யி ப் ல் ப்
ம் ழி ம் வா ப் மை பு க்
பு ல் ல் ழு து ம் ம்
வெ வெ ளி யீ டு ம் தே டு யி
வெ ழி ணி மி ழ் த் ற்
ணி க் ம் பு து ல் ணி து சி

அல்கோரிதம் – அடுக்குகளை தலைகீழ் படுத்துவது எப்படி ?

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.

இந்த வாரம் அமெரிக்காவில் “long weekend” அதாவது மூன்று-நாள் வார விடுமுறை – காரணம் மே மதம் நான்காம் திங்கள் “Memorial day” என்கிற “அமெரிக்க போர்வீரர் நினைவு தினம்”. இதனை ஒட்டி சராசரி குடும்பங்கள் நாடெங்கும் உல்லாச பயணம், சுற்றுலா என்று செல்வது அமெரிக்க பண்பாடு. இந்த ஆண்டு எங்கள் வீட்டில் விருந்தினரை வரவேற்கிறோம் – பயணம் என்பது இந்த ஆண்டு எங்கள் விருந்திரனுக்கு மட்டுமே! சரி அப்போது ஒரு புதிய தரவமைப்பு பற்றி ஒரு blog post போடுவோம் என்று எழுத ஆரம்பித்தது இங்கே.

அடுக்கு (Stack) என்பது ஒரு மிக அடிப்படை கணினி நிரலாக்க கோட்பாடு. ஒரு அடுக்கு தரவமைப்பில் செய்யக்கூடிய நடவடிக்கைகள் ஆனது : மேல் நுழை (push), மேல் நீக்கு (pop) என்பது.

ஒரு அடுக்கை இப்படி (கீழ் கண்டபடி) உருவாக்கலாம்:

எ = அடுக்கு()
மேல்_நுழை( எ, "அ" )
மேல்_நுழை( எ, "ஆ" )

இது கணினியில் ஒரு அடுக்கு போலவே உருவெடுக்கும்,

    
   --> [ ஆ ]
       [ அ ]
      --------
அடுக்கு "எ" என்பதில் இரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஆ" என்ற மதிப்பாகும்.

மேலும் இந்த அடுக்கில் மற்ற உயிரெழுத்துக்களை முழுதாக சேர்க்கலாம்:

மேல்_நுழை( எ, "இ" )
மேல்_நுழை( எ, "ஈ" )
மேல்_நுழை( எ, "உ")
மேல்_நுழை( எ, "ஊ")
மேல்_நுழை( எ, "எ")
மேல்_நுழை( எ, "ஏ")
மேல்_நுழை( எ, "ஐ")
மேல்_நுழை( எ, "ஒ")
மேல்_நுழை( எ, "ஓ")
மேல்_நுழை( எ, "ஔ")

கணினியில் இதன் தோற்றம் இப்படி இருக்கும்,

   --> [ ஔ ]
       [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு "எ" என்பதில் பன்னிரண்டு உருப்படிகள் உள்ளது; 
இதில் "மேல்" உருப்படி "ஔ" என்ற மதிப்பாகும்.

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

அடுக்கின் வரிசை மாற்றுவது எப்படி ?

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

மேல்_எடு( எ )
# தற்போது குவிப்பு 'எ' வில் 11 உருப்படிகள் மட்டும் இருக்கும்.
# ஏற்கெனவே உள்ள மேல் உருப்படி 'ஓ' அழிக்கப்பட்டது.
# புதிய மேல் உருப்படி 'ஓ' என்று ஆனது.

இப்போது இந்த அடுக்கின் நிலை,

 -->   [ ஓ ]
       [ ஒ ]
       [ ஐ ]
       [ ஏ ]
       [ எ ]
       [ ஊ ]
       [ உ ]
       [ ஈ ]
       [ இ ]
       [ ஆ ]
       [ அ ]
அடுக்கு : எ 

இப்போது அழித்த மேல் உருப்படியை புதிய அடுக்கு ‘ஏ’ வில் மேல் நுழைத்தால் – அதையே ‘எ’ என்ற அடுக்கில் உருப்படிகள் உள்ளவரை அதில் மேல் எடுத்து, ‘ஏ’ வில் மேல் நுழைத்துக்கொண்டே இருந்தால் என்ன ஆகும் ?
இதனை நிரல் படுத்தி பார்க்கலாம்.

ஏ  = அடுக்கு()
மேல்_நுழை( ஏ, "ஔ")
@( நீளம்( எ ) > 0 ) வரை 
    மதிப்பு = மேல்_எடு( எ )
    மேல்_நுழை( ஏ, மதிப்பு )    
முடி

தற்போது அடுக்கு ‘எ’-வின் நிலை காலியானது:

 -->[ ]
அடுக்கு : எ 

ஆனால் அடுக்கு ‘ஏ’-வின் நிலையோ – வரிசை மாற்றப்பட்டது!

-->[ அ ]
   [ ஆ ]
   [ இ ]
   [ ஈ ]
   [ உ ]
   [ ஊ ]
   [ எ ]
   [ ஏ ]
   [ ஐ ]
   [ ஒ ]
   [ ஓ ]
   [ ஔ ]
அடுக்கு : ஏ 

இந்த நிரல் துண்டு Python மொழியில் இப்படி எழுதலாம்,

# (C) 2017 Ezhil Language Foundation
# This code is shared under public domain
# Ref: https://ezhillang.wordpress.com
import tamil
import pprint

class Stack:
    def __init__(self):
        self.store = list()

    def top(self):
        return self.store(-1)

    def __len__(self):
        return self.store.__len__()

    def push(self,val):
        self.store.insert(-1,val)

    def pop(self):
        val = self.store.pop()
        return val

    def display(self):
        pprint.pprint(list(zip(range(self.__len__()-1,0,-1),self.store)))
        
a = Stack()
for letter in tamil.utf8.uyir_letters:
    a.push(letter)
a.display()

rev_a = Stack()

while len(a) > 0:
    val = a.pop()
    rev_a.push(val)

print("Original stack => ")
a.display()
print("Reversed stack => ")
rev_a.display()

இதன் வெளியீடோ கீழே உள்ளபடி:

[(11, 'ஆ'),
 (10, 'இ'),
 (9, 'ஈ'),
 (8, 'உ'),
 (7, 'ஊ'),
 (6, 'எ'),
 (5, 'ஏ'),
 (4, 'ஐ'),
 (3, 'ஒ'),
 (2, 'ஓ'),
 (1, 'ஔ')]
Original stack => 
[]
Reversed stack => 
[(11, 'ஔ'),
 (10, 'ஓ'),
 (9, 'ஒ'),
 (8, 'ஐ'),
 (7, 'ஏ'),
 (6, 'எ'),
 (5, 'ஊ'),
 (4, 'உ'),
 (3, 'ஈ'),
 (2, 'இ'),
 (1, 'ஆ')]

தமிழ் 99 விசை பலகை இடைமுகம் – Tamil99 keyboard interface for Ezhil

கணினியை பார்க்காத சிறுவன் எப்படி உள்ளீடு செய்வான் ? தமிழில் எழில் மொழி ஆர்வலர்கள் பாதிக்குமேல் நிரல் உள்ளீடு செய்வதற்கு தனி தமிழ் விசைப்பலகை இல்லை. இந்த பிரச்சினைகளை தீர்வு செய்ய ஏற்கனவே சில மூன்று பட்டை உள்ளீடு பட்டன்-களை கண்டோம். தற்போது முழு விசை பலகை (keyboard) இடைமுகம் ஒன்றை உருவாக்கி மேம்படுத்தி வருகிறேன்.

ezhil_March20_2017

படம் 1: Tamil 99 keyboard interface for Ezhil editor; தமிழ் 99 விசைப்பலகை இடைமுகம் எழுதியில். 

உங்களுக்கு எதுவும் கருத்துள்ள பின்னூட்டங்கள் இருந்தால் தெரிவிக்கவும்.

நன்றி.

 

வாய்ப்பாடு -multiplication is not scary

வாய்ப்பாடு

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

மாறாக, வாய்ப்பாடு என்பது என்ன ?

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

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

1) உதாரணமாக, பெருக்கல் என்பதின் விடை பெருக்கல் என்றும் அமையும். இதனை ஒரு சமன்பாடு என்றும் எழுதலாம்,

                             அ x ஆ = ஆ x அ

இதனால் நீங்கள் 1 முதல் 15 வாய்ப்பாடு 12 எண்கள் வரை மனப்பாடம் செய்யும் வகை எவரும் கேட்டல் 1 முதல் 12 வாய்ப்படை 15 எண்கள் வரை மட்டுமே நினைவில் கொள்ள வேண்டும்!

2) மேலும், இரண்டில் ஏதேனும் ஒரு எண் 10, 100, 1000 என 10-இன் மூலம் ஆகா இருந்தால் அதன் விடை சுலபமாக மற்ற எண் பின் பூஜியுங்களை சேர்த்தது போல் அமையும்.

                                                123 x 100 = 12,300

3) பெருக்கல் என்ற கணக்கின் விடை என்பதை கூட்டினால் ( modulo 9 ) இந்த பெருக்கலில் உள்ள இரு எண்களையும் modulo 9 கூட்டி மீண்டும் பெருக்கி மீண்டும் modulo 9 செய்த எண் என்பதற்கு சமம். இது ஒரு (necessary but not sufficient) தேவையான ஆனால் தீர்மானிக்கபடாத  தேவை.

                                               123 x 45 = 5535

    இதனை எண்ணிம இலக்கு மூலம் கூடினால்  (digital sum)

                                                6 x 9   = 18, (இடது பக்கத்தில் 123 எண்  1 + 2 + 3 = 6, எனவும், 4 + 5 = 9 எனவும் மாறும்.)

                                                    5 4      = 9  ( வலது புரம் 1 + 8 = 9, இடது புரம் 6 x 9 = 54 எனவும் உள்ளது)

                                                      9       = 9

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