2785 - 2023GEC1506 - HW5 Scoreboard

Time

2023/05/15 14:00:00 2023/05/28 23:59:00

Clarification

# Problem Asker Description Reply Replier Reply Time For all team

# Problem Pass Rate (passed user / total user)
12805 GEC1506 - Advanced - Decoding
12269 GEC1506 - Basic - Encoding

12805 - GEC1506 - Advanced - Decoding   

Description

 

In this problem, you will learn how to encode and decode text using a frequency-based encoding rule. You will first create an encoding scheme based on the frequency of characters in a given text, and then use this scheme to decode a given encoded message.

Note:

  1. Characters should be converted to lower-case using the built-in function .lower().
  2. Consider spaces (' ') when counting character frequencies.

Input

 

  • A string text (1 <= len(text) <= 10^4): represents the text to learn the encoding rule.
  • A string message (1 <= len(message) <= 10^5): represents the message to be decoded.

 

Example Input:

Hello john

000001001100000000001100010101001

 
 

Output

 

Decode the encoded message using the encoding scheme generated from the first line of the input text.

 

Encoding Rule:

  1. Count the frequency of each character in the text.
  2. Sort the characters in descending order based on their frequency. If multiple characters have the same frequency, maintain their order of occurrence.
  3. Encode the most frequent character with '1'.
  4. For each subsequent character, add a '0' to the left of the previous character's encoding.
  5. For the least frequent character, encode it with the same length as the previous character but with all digits turned to '0'.

 

Example Encoding:

'h': 2 times -> '1'
'l': 2 times -> '01'
'o': 2 times -> '001'
'e': 1 time -> '0001'
' ': 1 time -> '00001'
'j': 1 time -> '000001'
'n': 1 time -> '000000'

 

Example Output:

john hello

 

Sample Input  Download

Sample Output  Download

Tags




Discuss




12269 - GEC1506 - Basic - Encoding   

Description

 

Given a few lines of text, you are required to parse it and perform the following operations:

  1. Count the frequency of each character in the text (excluding spaces).
  2. If multiple characters have the same frequency, order them according to their first occurrence in the text.
  3. Encode the characters according to their frequency, replacing each character with a corresponding lowercase letter from the alphabet (a-z) in alphabetical order.

Input

 

The input will consist multiple lines of text.

  • 1 <= Number of lines <= 10^2
  • 1 <= len(text) <= 10^4
  • The text will only contain lowercase alphabetical characters and spaces.

Output

 

  • The output should be the encoded version of the input text, with the most frequent character replaced by 'a', the second most frequent character replaced by 'b', and so on.
  • Spaces in the input text should be preserved in the output.(You don't need to encode the space character ' '.)
  • You should start to count the frequency after you receive all the input

 

Example input:


hello john
how are you



Example output:

bcdda eabf
bag hic jak

 

After counting and sorting the characters based on their frequency and order of occurrence, we have:

  • 'o' occurs 4 times
  • 'h' occurs 3 times
  • 'e', 'l' occurs 2 times
  • 'j', 'n', 'w', 'a', 'r', 'y', and 'u' occur 1 time each

 

Encoding the characters:

  • 'o' -> 'a'
  • 'h' -> 'b'
  • 'e' -> 'c'
  • 'l' -> 'd'
  • 'j' -> 'e'
  • 'n' -> 'f'
  • 'w' -> 'g'
  • 'a' -> 'h'
  • 'r' -> 'i'
  • 'y' -> 'j'
  • 'u' -> 'k'

Sample Input  Download

Sample Output  Download

Tags




Discuss