symbian-qemu-0.9.1-12/python-2.6.1/Demo/comparisons/sortingtest.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/comparisons/sortingtest.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,51 @@
+#! /usr/bin/env python
+
+# 2)  Sorting Test
+#
+#     Sort an input file that consists of lines like this
+#
+#         var1=23 other=14 ditto=23 fred=2
+#
+#     such that each output line is sorted WRT to the number.  Order
+#     of output lines does not change.  Resolve collisions using the
+#     variable name.   e.g.
+#
+#         fred=2 other=14 ditto=23 var1=23
+#
+#     Lines may be up to several kilobytes in length and contain
+#     zillions of variables.
+
+# This implementation:
+# - Reads stdin, writes stdout
+# - Uses any amount of whitespace to separate fields
+# - Allows signed numbers
+# - Treats illegally formatted fields as field=0
+# - Outputs the sorted fields with exactly one space between them
+# - Handles blank input lines correctly
+
+import re
+import string
+import sys
+
+def main():
+    prog = re.compile('^(.*)=([-+]?[0-9]+)')
+    def makekey(item, prog=prog):
+        match = prog.match(item)
+        if match:
+            var, num = match.group(1, 2)
+            return string.atoi(num), var
+        else:
+            # Bad input -- pretend it's a var with value 0
+            return 0, item
+    while 1:
+        line = sys.stdin.readline()
+        if not line:
+            break
+        items = line.split()
+        items = map(makekey, items)
+        items.sort()
+        for num, var in items:
+            print "%s=%s" % (var, num),
+        print
+
+main()