# (C) முத்தையா அண்ணாமலை 2013
# (A) என். சொக்கன்
# எழில் தமிழ் நிரலாக்க மொழி உதாரணம்

## Histogram Example
## வாக்கியத்தில் அதிகம் இடம்பெறும் சொற்களை அலசும் உதாரணம்

நிரல்பாகம் குறுஞ்சரம்(சரம், தொடக்கம், நிறைவு)

  ## இது நிரல்பாகம் ஒரு சரத்தின் சிறு பகுதியைமட்டும் பிரித்துத் தரும்

  @(நிறைவு < தொடக்கம்) ஆனால்

    பின்கொடு "பிழை"
  
  முடி

  @(தொடக்கம் > நீளம்(சரம்) -1) ஆனால்

    பின்கொடு "பிழை 2"

  முடி

  @(நிறைவு > நீளம்(சரம்) -1) ஆனால்

    பின்கொடு "பிழை 3"

  முடி

  இடம் = 0
  புதுச்சரம் = ""

  @(சரம் இல் எழுத்து) ஒவ்வொன்றாக

    @((இடம் >= தொடக்கம்) && (இடம் <= நிறைவு)) ஆனால்

      புதுச்சரம் = புதுச்சரம் + எழுத்து

    முடி

    இடம் = இடம் + 1

  முடி

  பின்கொடு புதுச்சரம்

முடி

சரம் = "old MacDonald had a farm and on his farm he had some chicks with a chick chick here and a chick, chick there here a chick there a chick everywhere a chick chick"

சொற்கள் = பட்டியல்()

முதல் = சரம்_கண்டுபிடி(சரம், " ")

புதுச்சரம் = சரம்

@(முதல் > 0) வரை

  பின்இணை(சொற்கள், குறுஞ்சரம்(புதுச்சரம், 0, முதல் - 1))

  புதுச்சரம் = குறுஞ்சரம்(புதுச்சரம், முதல் + 1, நீளம்(சரம்))

  முதல் = சரம்_கண்டுபிடி(புதுச்சரம், " ")

முடி

பின்இணை(சொற்கள், புதுச்சரம்)

வரிசைப்படுத்து(சொற்கள்)

முந்தினசொல் = ""

சொல்லெண்ணிக்கை = 1

தனிச்சொற்பட்டியல் = பட்டியல்()
தனிச்சொல்எண்ணிக்கை = பட்டியல்()
தனிச்சொல்எண்ணிக்கைபிரதி = பட்டியல்()

@(சொற்கள் இல் சொல்) ஒவ்வொன்றாக

  @(சொல் == முந்தினசொல்) ஆனால்

    சொல்லெண்ணிக்கை = சொல்லெண்ணிக்கை + 1

  இல்லை

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

    பின்இணை(தனிச்சொற்பட்டியல், சொல்)
    @(முந்தினசொல் != "") ஆனால்
    	 பின்இணை(தனிச்சொல்எண்ணிக்கை, சொல்லெண்ணிக்கை)
      பின்இணை(தனிச்சொல்எண்ணிக்கைபிரதி, சொல்லெண்ணிக்கை)
	     சொல்லெண்ணிக்கை = 1
   முடி

  முடி

  முந்தினசொல் = சொல்

முடி

பின்இணை(தனிச்சொல்எண்ணிக்கை, சொல்லெண்ணிக்கை)
பின்இணை(தனிச்சொல்எண்ணிக்கைபிரதி, சொல்லெண்ணிக்கை)

## இப்போது இதுத் தனிச்சொல் எண்ணிக்கைப் பட்டியலை வரிசைப்படுத்துகிறோம், அதன்மூலம் அதிகம் பயன்படும் சொற்களை அடையாளம் காணலாம்

எண்கள் = தனிச்சொல்எண்ணிக்கைபிரதி
எண்கள்பிரதி = எண்கள்

நீளம் = len(எண்கள்)
குறைநீளம் = நீளம் - 1

@(குறைநீளம் != -1) வரை
  மாற்றம் = -1
  @(எண் = 0, எண் < குறைநீளம், எண் = எண் + 1) ஆக
    முதலெண் = எடு(எண்கள், எண்)
    இரண்டாமெண் = எடு(எண்கள், எண் + 1)
    @(முதலெண் > இரண்டாமெண்) ஆனால்

      ## பெரிய எண்களை ஒவ்வொன்றாகப் பின்னே நகர்த்துகிறோம்

      வெளியேஎடு(எண்கள், எண்)
      நுழைக்க(எண்கள், எண், இரண்டாமெண்)
      வெளியேஎடு(எண்கள், எண் + 1)
      நுழைக்க(எண்கள், எண் + 1, முதலெண்)
      மாற்றம் = எண்
    முடி
  முடி
  குறைநீளம் = மாற்றம்
முடி

@(len(எண்கள்) > 10) ஆனால்

  பதிப்பி "நீங்கள் தந்திருக்கும் சரத்தில் இடம்பெற்றுள்ள தனித்துவமான சொற்கள் இவை: "
  பதிப்பி தனிச்சொற்பட்டியல்

  ## அதிகம் பயன்பட்டுள்ள மூன்று சொற்களைக் கண்டறிகிறோம்

  அதிகப்பயன்பாடு1 = எடு(எண்கள், len(எண்கள்) -1)
  அதிகப்பயன்பாட்டிடம்1 = குறியீட்டெண்(தனிச்சொல்எண்ணிக்கை, அதிகப்பயன்பாடு1)
  அதிகப்பயன்பாட்டுச்சொல்1 = எடு(தனிச்சொற்பட்டியல், அதிகப்பயன்பாட்டிடம்1) + " (" + str(அதிகப்பயன்பாடு1) + " முறை)"

  அதிகப்பயன்பாடு2 = எடு(எண்கள், len(எண்கள்) -2)
  அதிகப்பயன்பாட்டிடம்2 = குறியீட்டெண்(தனிச்சொல்எண்ணிக்கை, அதிகப்பயன்பாடு2)
  அதிகப்பயன்பாட்டுச்சொல்2 = எடு(தனிச்சொற்பட்டியல், அதிகப்பயன்பாட்டிடம்2) + " (" + str(அதிகப்பயன்பாடு2) + " முறை)"

  வெளியேஎடு(தனிச்சொல்எண்ணிக்கை, அதிகப்பயன்பாட்டிடம்2)
  நுழைக்க(தனிச்சொல்எண்ணிக்கை, அதிகப்பயன்பாட்டிடம்2, 0)

  அதிகப்பயன்பாடு3 = எடு(எண்கள், len(எண்கள்) -3)
  அதிகப்பயன்பாட்டிடம்3 = குறியீட்டெண்(தனிச்சொல்எண்ணிக்கை, அதிகப்பயன்பாடு3)
  அதிகப்பயன்பாட்டுச்சொல்3 = எடு(தனிச்சொற்பட்டியல், அதிகப்பயன்பாட்டிடம்3) + " (" + str(அதிகப்பயன்பாடு3) + " முறை)"

  பதிப்பி "அவற்றுள் மிக அதிகமான எண்ணிக்கையில் பயன்படுத்தப்பட்டுள்ள மூன்று சொற்கள் இவை:"
  பதிப்பி "#1 " + அதிகப்பயன்பாட்டுச்சொல்1
  பதிப்பி "#2 " + அதிகப்பயன்பாட்டுச்சொல்2
  பதிப்பி "#3 " + அதிகப்பயன்பாட்டுச்சொல்3

இல்லை
  
  பதிப்பி "மிகச் சிறிய வாக்கியம் இது. ஆராயும் அளவு சொற்கள் இல்லை."

முடி
