Edwin Wang's Blog

If there were no clouds, we should not enjoy the sun~~~ edwin-wang.com

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Problem Statement

    
***Note:  Please keep programs under 7000 characters in length.  Thank you


Class Name: HowEasy
Method Name: pointVal
Parameters: String
Returns: int
 
TopCoder has decided to automate the process of assigning problem difficulty
levels to problems.  TopCoder developers have concluded that problem difficulty
is related only to the Average Word Length of Words in the problem statement:

If the Average Word Length is less than or equal to 3,  the problem is a 250
point problem.
If the Average Word Length is equal to 4 or 5, the problem is a 500 point
problem.
If the Average Word Length is greater than or equal to 6, the problem is a 1000
point problem.
 
Definitions:
Token - a set of characters bound on either side by spaces, the beginning of
the input String parameter or the end of the input String parameter.
Word - a Token that contains only letters (a-z or A-Z) and may end with a
single period. A Word must have at least one letter.
Word Length - the number of letters in a Word. (NOTE: a period is NOT a letter)

The following are Words :
"ab",  "ab."

The following are not Words :
"ab..", "a.b", ".ab", "a.b.", "a2b.", "."

Average Word Length - the sum of the Word Lengths of every Word in the problem
statement divided by the number of Words in the problem statement.  The
division is integer division. If the number of Words is 0, the Average Word
Length is 0.
 
Implement a class HowEasy, which contains a method pointVal.  The method takes
a String as a parameter that is the problem statement and returns an int that
is the point value of the problem (250, 500, or 1000). The problem statement
should be processed from left to right.
 
Here is the method signature (be sure your method is public):
int pointVal(String problemStatement);
 
problemStatement is a String containing between 1 and 50 letters, numbers,
spaces, or periods.  TopCoder will ensure the input is valid.
 
Examples:
 
If problemStatement="This is a problem statement", the Average Word Length is
23/5=4, so the method should return 500.
If problemStatement="523hi.", there are no Words, so the Average Word Length is
0, and the method should return 250.
If problemStatement="Implement a class H5 which contains some method." the
Average Word Length is 38/7=5 and the method should return 500.
If problemStatement=" no9 . wor7ds he8re. hj.." the Average Word Length is 0,
and the method should return 250.

Definition

    
Class: HowEasy
Method: pointVal
Parameters: String
Returns: Integer
Method signature: Public Function pointVal(param0 As String) As Integer
(be sure your method is public)
    

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)2003, TopCoder, Inc. All rights reserved.





Public Class HowEasy

    
Public Function pointVal(ByVal param0 As StringAs Integer
        
Dim words() As String = Split(param0)
        
Dim a As Integer, b As Integer, avg As Integer
        b 
= words.Length
        
If Trim(param0) = Nothing Or words(0)(0= Nothing Then
            
Return 250
        
Else
            
Dim i As Integer, j As Integer
            
For i = 0 To words.Length - 1
                
If Not (Char.IsLetter(words(i)(0))) Then
                    b 
-= 1
                
Else
                    
For j = 0 To words(i).Length - 1
                        
If Not (Char.IsLetter(words(i)(j))) Or words(i)(j) = "." Then
                            b 
-= 1
                            
Exit For
                        
Else
                            
If Char.IsLetter(words(i)(j)) Then
                                a 
+= 1
                            
End If
                        
End If
                    
Next
                
End If
            
Next
            
If b <= 0 Then
                
Return 250
            
Else
                avg 
= Int(a / b)
                
If avg < 3 Or avg = 3 Then
                    
Return 250
                
ElseIf avg = 4 Or avg = 5 Then
                    
Return 500
                
Else
                    
Return 1000
                
End If
            
End If
        
End If
    
End Function


End Class


不行啊,好像问题还是挺大的,首先是理解方面都是英文的,起码要看上2遍才能理解
其次,在coding 过程中,在除数会产生零和循环中的IF方面
修正中。。。
果然,长时间没动手了,问题大了。。。
posted on 2005-08-09 10:16  laughterwym  阅读(482)  评论(1编辑  收藏  举报