Sort by

recency

|

953 Discussions

|

  • + 1 comment

    Here is a section of code you can use just for converting the numbers 1-29 into words in python. Normally you could use :

    pip install num2words
    from num2words import num2words as n2w
    

    but the environment on hackerrank doesn't allow the "pip install num2words" command. So I put together this to use instead for this challenge.

    def n2w(n):
        words = {
            1: "one",   2: "two",     3: "three",  4: "four",    5: "five",
            6: "six",   7: "seven",   8: "eight",  9: "nine",   10: "ten",
            11: "eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "fifteen",
            16: "sixteen",17: "seventeen",18: "eighteen",19: "nineteen"
        }
        if n <= 19:
            return words[n]
        base = "twenty"
        return base if n == 20 else base + " " + words[n - 20]
    
  • + 0 comments

    My Java solution with constant space and time complexity:

    private static final String[] NUM_WORDS = {
            "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
            "eleven", "twelve", "thirteen", "fourteen", "quarter", "sixteen", "seventeen",
            "eighteen", "nineteen", "twenty", "twenty one", "twenty two", "twenty three",
            "twenty four", "twenty five", "twenty six", "twenty seven", "twenty eight",
            "twenty nine", "half"
        };
    
        public static String timeInWords(int h, int m) {
            if(m == 0){
                //use o' clock
                String hour = NUM_WORDS[h];
                return hour + " o' clock";
            }
            if(m <= 30){
                //use past
                String minutes;
                if(m == 1)
                    minutes = "one minute";
                 else if(m == 15)
                    minutes = "quarter";
                else if(m == 30)
                    minutes = "half";
                 else
                    minutes = NUM_WORDS[m] + " minutes";
                
                String hour = NUM_WORDS[h];
                return minutes + " past " + hour;
            }
            else{
                //use to
                String minutes;
                if(60 - m == 1)
                    minutes = "one minute";
                 else if(60 - m == 15)
                    minutes = "quarter";
                 else
                    minutes = NUM_WORDS[60 - m] + " minutes";
                    
                String hour = NUM_WORDS[(h < 12) ? h + 1 : 1];
                return minutes + " to " + hour;
            }
        }
    
  • + 0 comments

    def timeInWords(h, m):

    nums = ["one",'two','three','four','five','six','seven',
    'eight','nine','ten','eleven', 'tweleve', 'thirteen', 'fourteen',15,
    'sixteen', 'seventeen', 'eighteen','nineteen','twenty',]
    
    phrases = {0:"o' clock", 
               15:"quarter past", 30:'half past', 
               45:"quarter to", }
    
    if m == 45:
        return phrases[m]+' '+nums[h]
    elif m == 0:
        return nums[h - 1]+' '+phrases[m]
    elif m == 15:
        return phrases[m]+' '+nums[h-1]
    elif m == 30:
        return phrases[m]+' '+nums[h-1]
    else:
        if m <= 20:
            return nums[m-1]+' minute past '+nums[h-1]
        elif m > 20 and m < 30:
            mins_units = m%10
            mins_tens = (m//10) * 10
            return nums[mins_tens - 1]+' '+nums[mins_units - 1]+' minutes past '+nums[h-1]
        elif m > 30 and m < 40:
            m = 60 - m
            mins_units = m%10
            mins_tens = (m//10) * 10
            return nums[mins_tens - 1]+' '+nums[mins_units - 1]+' minutes to '+nums[h]
        elif m >= 40:
            m = 60 - m
            return nums[m - 1]+' minutes to '+nums[h]                        
    # Write your code here
    
  • + 0 comments
    def timeInWords(h, m):
        dict1={1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine',10:'ten',11:'eleven',12:'twelve', 13: 'thirteen', 14: 'fourteen', \
                15: 'quarter', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', 19: 'nineteen',20:'twenty',21:'twenty one',22:'twenty two',23:'twenty three', 24:'twenty four',25:'twenty five',26:'twenty six', 27:'twenty seven', 28:'twenty eight', 29:'twenty nine',30:'half'}
        st=' past '
        if(m>30):
            h=h+1
            m=60-m
            st=' to '
        if(m==1):
            return dict1[m]+" minute"+st+dict1[h]
        if(m==00):
            return dict1[h]+" o' clock"
        elif(m!=15 and 1<m<30):
            return dict1[m]+" minutes"+st+dict1[h]
        elif(m==30 or m==15):
            return dict1[m]+st+dict1[h]
    
  • + 0 comments
        words = {
            1: "one", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine", 
            10: "ten", 11: "eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "fifteen", 
            16: "sixteen", 17: "seventeen", 18: "eighteen", 19: "nineteen", 20: "twenty",
            21: "twenty one", 22: "twenty two", 23: "twenty three", 24: "twenty four", 25: "twenty five",
            26: "twenty six", 27: "twenty seven", 28: "twenty eight", 29: "twenty nine"
        }
        
        if m == 0:
            return f"{words[h]} o' clock"
        elif m == 30:
            return f"half past {words[h]}"
        elif m < 30:
            if m == 15:
                return f"quarter past {words[h]}"
            elif m == 1:
                return f"one minute past {words[h]}"
            else:
                return f"{words[m]} minutes past {words[h]}"
        else:
            difference = 60 - m
            if m == 45:
                return f"quarter to {words[(h % 12) + 1]}"
            elif difference == 1:
                return f"one minute to {words[(h % 12) + 1]}"
            else:
                return f"{words[difference]} minutes to {words[(h % 12) + 1]}"