Statistics

Problem Statement for "Fairness"

Problem Statement

Why should the alphabetic ordering of names put so much emphasis on the first letter in each name? In the spirit of fairness to all the letters in a name, let's compute the average alphabetical position of the letters in each name, and order the names accordingly.

We can define the "value" of a name to be the average position of the letters in that name, counting an 'A' as 1, 'B' as 2, and so on up to 'Z' as 26. So, for example, the value of "BOB" would be (2+15+2)/3 = 6.3333. When given a list of names, we will order them by putting them in order of increasing value. When 2 or more names have exactly the same value, we will break the tie by placing the names that were earlier on the original list earlier on the ordered list.

Create a class Fairness that contains a method fairSort that is given a String[] names and that returns a String[] containing the same names sorted according to the above method. The elements in the return should, of course, not contain any leading or trailing spaces.

Definition

Class:
Fairness
Method:
fairSort
Parameters:
String[]
Returns:
String[]
Method signature:
String[] fairSort(String[] names)
(be sure your method is public)

Constraints

  • names will contain between 1 and 50 elements inclusive.
  • Each element of names will contain between 1 and 20 characters inclusive.
  • Each character in each element of names will be an uppercase letter, 'A'-'Z'.

Examples

  1. {"BOB","AAAAAAA","TOM"}

    Returns: { "AAAAAAA", "BOB", "TOM" }

    BOB = 6.333, AAAAAAA = 1.0, TOM = 16

  2. {"BOOB","TOM","BOBO","AAAA"}

    Returns: { "AAAA", "BOOB", "BOBO", "TOM" }

    BOOB and BOBO are tied, and since BOOB comes before BOBO in the given list, it must come before BOBO in the sorted list.

  3. {"BOBO","TOM","BOOB","AAAA"}

    Returns: { "AAAA", "BOBO", "BOOB", "TOM" }

  4. {"ABE","ABLE","ABE"}

    Returns: { "ABE", "ABE", "ABLE" }

  5. {"ADA","SDFS","WERWE","QWEQ","DDD","EWR","EWREWW","AAAAAAAAAAAAAAAAA","AAAAAAA","A"}

    Returns: { "AAAAAAAAAAAAAAAAA", "AAAAAAA", "A", "ADA", "DDD", "SDFS", "WERWE", "EWR", "QWEQ", "EWREWW" }

  6. {"PANE","TOM","BONE","AAAA"}

    Returns: { "AAAA", "PANE", "BONE", "TOM" }

    PANE and BONE are tied, and since PANE comes before BONE in the given list, it must come before BONE in the sorted list.

  7. {"BONE","TOM","PANE","AAAA"}

    Returns: { "AAAA", "BONE", "PANE", "TOM" }

  8. {"X"}

    Returns: { "X" }

  9. {"ZZ","AA","ZA","AZ","AZM"}

    Returns: { "AA", "AZM", "ZA", "AZ", "ZZ" }

  10. {"ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCDEFGHIJKLMNOPQRST","ABCCGFGHIJKLMNOPQRST","ABCGCFGHIJKLMNOPQRSS"}

    Returns: { "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCDEFGHIJKLMNOPQRST", "ABCGCFGHIJKLMNOPQRSS", "ABCCGFGHIJKLMNOPQRST" }

  11. {"NOW","IS","THE","TIME","FOR","ALL","GOOD","WOMEN","TO"}

    Returns: { "ALL", "GOOD", "THE", "TIME", "FOR", "IS", "WOMEN", "NOW", "TO" }

  12. {"Z","Y","X","A"}

    Returns: { "A", "X", "Y", "Z" }

  13. {"DSKJ","K","HOOIEOUIWQ","JKLEWOI","EYWOOOIEW","YYWOQW"}

    Returns: { "DSKJ", "K", "JKLEWOI", "HOOIEOUIWQ", "EYWOOOIEW", "YYWOQW" }

  14. {"AAB","AABAABABA","BBAAAA","ABBBBBAAAAAAAAA"}

    Returns: { "AAB", "AABAABABA", "BBAAAA", "ABBBBBAAAAAAAAA" }

  15. {"ABBBBBAAAAAAAAA","BBAAAA","AABAABABA","AAB"}

    Returns: { "ABBBBBAAAAAAAAA", "BBAAAA", "AABAABABA", "AAB" }

  16. {"AACAA","AABBAAABBAAABBA"}

    Returns: { "AACAA", "AABBAAABBAAABBA" }

  17. {"AABBAAABBAAABBA","AACAA"}

    Returns: { "AABBAAABBAAABBA", "AACAA" }


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: