Sort by

recency

|

948 Discussions

|

  • + 0 comments

    Here is my Python solution!

    def timeInWords(h, m):
        word = ["one", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "twenty one", "twenty two", "twenty three", "twenty four", "twenty five", "twenty six", "twenty seven", "twenty eight", "twenty nine"]
        if m == 0:
            return word[h] + " o' clock"
        elif m == 15:
            return "quarter past " + word[h]
        elif m == 30:
            return "half past " + word[h]
        elif m == 45:
            return "quarter to " + word[(h + 1) % 12]
        elif m == 1:
            return "one minute past " + word[h]
        elif m == 59:
            return "one minute to " + word[(h + 1) % 12]
        elif m < 30:
            return word[m] + " minutes past " + word[h]
        else:
            return word[60 - m] + " minutes to " + word[(h + 1) % 12]
    
  • + 0 comments

    Java

    public static String timeInWords(int h, int m) {
        // Write your code here
        
        String time[] = { " o' clock", "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"};
                
        String timeInWord = "";
        
        if (m==0) {
            timeInWord=time[h]+time[0];
        }else if (m==30 || m%30==15) {
            timeInWord=(m>30)?time[60-m]:time[m];
            timeInWord+=(m>30)?" to ":" past ";
            timeInWord+=(m>30)?time[h+1]:time[h];
        } else {
            timeInWord=(m>30)?time[60-m]:time[m];
            timeInWord+=(m==1)?" minute":" minutes";
            timeInWord+=(m>30)?" to ":" past ";
            timeInWord+=(m>30)?time[h+1]:time[h];
        }
              return timeInWord;  
        }
    
  • + 0 comments

    Perl:

    sub timeInWords {
        my ($hour, $minute) = @_;
        
        my @numbers = qw(zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen);
        my @tens = qw(twenty thirty forty fifty);
        
        return "$numbers[$hour] o' clock" if $minute == 0;
        return "quarter past $numbers[$hour]" if $minute == 15;
        return "half past $numbers[$hour]" if $minute == 30;
        return "quarter to $numbers[($hour + 1) % 12]" if $minute == 45;
    
        my $word_min;
        my $next_hour = ($hour % 12) + 1;
        if ($minute > 30) {
            my $remaining_minutes = 60 - $minute;
            $word_min = ($remaining_minutes < 20) 
                ? $numbers[$remaining_minutes] 
                : $tens[int($remaining_minutes / 10) - 2] . 
                  ($remaining_minutes % 10 ? " " . $numbers[$remaining_minutes % 10] : "");
            
            return $remaining_minutes == 1 
                ? "one minute to $numbers[$next_hour]" 
                : "$word_min minutes to $numbers[$next_hour]";
        } else {
            $word_min = ($minute < 20) 
                ? $numbers[$minute] 
                : $tens[int($minute / 10) - 2] . 
                  ($minute % 10 ? " " . $numbers[$minute % 10] : "");
    
            return $minute == 1 
                ? "one minute past $numbers[$hour]" 
                : "$word_min minutes past $numbers[$hour]";
        }
    }
    
  • + 0 comments

    Python3, not the best solution anyway

    numbers = {
        0: 'zero',
        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',
        30: 'thirty',
    }
    
    def hour_to_word(h):
        return numbers.get(h)
    
    def minutes_to_word(m):
        if not 0 < m < 60:
            raise ValueError("Wrong value for minutes.")
        
        if m == 15 or m == 45:
            return "quarter"
        elif m == 30:
            return "half"
        else:
            minutes = m if m <= 30 else 60-m
            end_word = 'minute' if minutes == 1 else 'minutes'
            return f"{numbers.get(minutes)} {end_word}"
        
    
    def timeInWords(h, m):
        if m == 0:
            return f"{hour_to_word(h)} o' clock"
        elif m <= 30:
            return f"{minutes_to_word(m)} past {hour_to_word(h)}"
        else:
            hour = h % 12 + 1
            return f"{minutes_to_word(m)} to {hour_to_word(hour)}"****
    
  • + 0 comments

    Bugging out in in TypeScript. The 1, 1 test fails when it should succed.