funderburkjim / testing

For testing various features of github. Nothing important here.
0 stars 0 forks source link

sanskrit sorting #15

Open funderburkjim opened 9 years ago

funderburkjim commented 9 years ago

Here is php code to sort in Sanskrit Alphabetical ordering. The Sanskrit words are assumed to be spelled in the slp1 transliteration.

<?php
// 1. Assume $a is an array of strings, to be sorted.  The next statement sorts $a (in place) by
// values
usort($a,'slp_cmp');

function slp_cmp($a,$b) {
// $a, $b are strings in SLP1 coding of Sanskrit. Return -1,0,1 according to
// whether $a<$b, $a==$b, or $a>$b
// order per PMS (Sep 25, 2012): L after q, | after Q
 $from = "aAiIuUfFxXeEoOMHkKgGNcCjJYwWqLQ|RtTdDnpPbBmyrlvSzsh";
 $to =   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy";

 $a1 = strtr($a,$from,$to);
 $b1 = strtr($b,$from,$to);
 return strcmp($a1,$b1);
}
funderburkjim commented 8 years ago

Here is Python code to sort in Sanskrit Alphabetical order. The Sanskrit words are assumed to be spelled in the slp1 transliteration.

import string
# Note 'L' and '|' and 'Z' and 'V' are not present
# Not sure where they go
tranfrom="aAiIuUfFxXeEoOMHkKgGNcCjJYwWqQRtTdDnpPbBmyrlvSzsh"
tranto = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw"
trantable = string.maketrans(tranfrom,tranto)

def slp_cmp_pairs(a,b):
 return slp_cmp(a[1],b[1]) # normalized

def slp_cmp(a,b):
 a1 = string.translate(a,trantable)
 b1 = string.translate(b,trantable)
 return cmp(a1,b1)

# Assume 'a' is list of strings
b = sorted(a,cmp=slp_cmp)