Pages

Saturday 26 September 2015

CodeEval - Time to eat - Easy


import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

class Time implements Comparable<Time>{
    int hour;
    int minute;
    int second;

    public Time(int hour, int minute, int second) {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }

    @Override
    public String toString() {
        return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
    }

    @Override
    public int compareTo(Time o) {
         if(this.hour<o.hour){
            return 1;
        }
        if(this.hour>o.hour){
            return -1;
        }
        if(this.minute<o.minute){
            return 1;
        }
        if(this.minute>o.minute){
            return -1;
        }
        if(this.second<o.second){
            return 1;
        }
        return 1;
    }
}

public class Main {
    static String parser(String str){
        StringTokenizer st=new StringTokenizer(str);
        Time[] time=new Time[st.countTokens()];
        int i=0;
        while (st.hasMoreTokens()) {
            StringTokenizer st2=new StringTokenizer(st.nextToken(),":");
            time[i]=new Time(Integer.valueOf(st2.nextToken()),
                    Integer.valueOf(st2.nextToken()),
                    Integer.valueOf(st2.nextToken()));
            i++;
        }
        Arrays.sort(time);
        StringBuilder sb=new StringBuilder();
        for (int j = 0; j < time.length ; j++) {
            if(j > 0){
                sb.append(" ");
            }
            sb.append(time[j].toString());
        }
        sb.append("\n");
        return sb.toString();
    }
   
    public static void main (String[] args) throws IOException {
        File file = new File(args[0]);
        BufferedReader buffer = new BufferedReader(new FileReader(file));
        String line;
        while ((line = buffer.readLine()) != null) {
            line = line.trim();
            System.out.print(parser(line));
        }
    }
}

Thursday 17 September 2015

CodeEval - Filename Pattern - Moderate

import sys
import re

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    arr=test.split()
    regex=""
    for c in arr[0]:
        if c == '.':
            regex += '\.'
        elif c == '?':
            regex +='.'
        elif c == '*':
            regex +='.*'
        else:
            regex +=c
    sol=[]
    for x in range(1,len(arr)):
        if re.match('^'+regex+'$', arr[x]):
            sol.append(arr[x])
    value=""
    for i in range(len(sol)):
        if i>0 :
            value += " "
        value += sol[i]
    if not value:
        value = "-"
    print value

test_cases.close()

Wednesday 16 September 2015

CodeEval - Query Board - Easy

import sys

test_cases = open(sys.argv[1], 'r')
matrix = [[0 for x in range(256)] for x in range(256)]
for test in test_cases:
    query = test.split()
    command = query[0]
    index = int(query[1])
    if command == "SetRow":
        value=int(query[2])
        for i in range(256):
            matrix[index][i] = value
    elif command == "SetCol":
        value=int(query[2])
        for i in range(256):
            matrix[i][index] = value
    elif command == "QueryRow":
        sum=0
        for i in range(256):
            sum += matrix[index][i]
        print sum
    elif command == "QueryCol":
        sum=0
        for i in range(256):
            sum += matrix[i][index]
        print sum
   

test_cases.close()

Tuesday 15 September 2015

CodeEval - Delta Time - Easy

import sys

def get_bigger(time1,time2):
    for i in range(3):
        if time1[i] > time2[i]:
            return time1,time2
        elif time1[i] < time2[i]:
            return time2,time1
    return time1,time2

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    timestamp=test.split()
    time1=map(int,timestamp[0].split(":"))
    time2=map(int,timestamp[1].split(":"))
    time1,time2=get_bigger(time1,time2)
    val=[0]*3
    for i in range(2,-1,-1):
        val[i]=time1[i]-time2[i]
        if val[i] < 0:
            if i > 0 :
                val[i] += 60
                time1[i-1] -= 1
            else:
                val[i] += 24
    sol=""
    for i in range(3):
        if i > 0:
            sol += ":"
        sol += str(val[i]).zfill(2)
    print sol

test_cases.close()

CodeEval - Compare Points - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    cord = map(int, test.split())
    sol = ""
    if cord[1] > cord[3]:
        sol += "S"
    elif cord[1] < cord[3]:
        sol += "N"
    if cord[0] > cord[2]:
        sol += "W"
    elif cord[0] < cord[2]:
        sol += "E"
    if cord[0] == cord[2] and cord[1] == cord[3]:
        sol += "here"
    print sol

test_cases.close()

Sunday 13 September 2015

CodeEval - Details - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    rows=test.split(',')
    min=10
    for row in rows:
        counter=0
        for c in row:
            if c == 'Y':
                break
            if c == '.':
                counter += 1
        if counter < min:
            min = counter
            if min == 0 :
                break
        if min == 0 :
            break
    print min
test_cases.close()

CodeEval - Chardonnay or Cabernet - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    test=test.split(" | ")
    word=test[1]
    word_char=[0]*26
    for x in word.lower():
        if x.isalpha():
            word_char[ord(x)-ord('a')] += 1
    wine_list=test[0].split()
    sol_list=[]
    for wine in wine_list:
        wine_chars=[0]*26
        for x in wine.lower():
            if x.isalpha():
                wine_chars[ord(x)-ord('a')] += 1
        listed=True
        for i in range(len(wine_chars)):
            if wine_chars[i] < word_char[i]:
                listed=False
                break
        if listed:
            sol_list.append(wine)
    sol=""
    for i in range(len(sol_list)):
        if i>0 :
            sol += " "
        sol += sol_list[i]
    if sol:
        print sol
    else:
        print False

test_cases.close()

Wednesday 9 September 2015

CodeEval - Minimum Distance - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    arr = test.split()
    n = int(arr[0])
    sum = 0
    for i in range(n):
        sum += int(arr[i+1])
    avg = int (sum / n)
    dist = 0
    for i in range(n):
        dist += abs(avg-int(arr[i+1]))
    avgInc = avg + 1
    while True:
        sumDist = 0
        for i in range(n):
            sumDist += abs(avgInc-int(arr[i+1]))
        if dist < sumDist :
            break
        dist = sumDist
        avgInc += 1
    avgDec = avg - 1
    while True:
        sumDist = 0
        for i in range(n):
            sumDist += abs(avgDec-int(arr[i+1]))
        if dist < sumDist :
            break
        dist = sumDist  
        avgDec -= 1
    print dist

test_cases.close()

CodeEval - Clean up the words - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    sol=""
    for char in test:
        if char.isalpha():
            sol += char
        else :
            sol += " "
    sol = sol.strip()
    words = sol.split()
    sol = ""
    for i in range(len(words)):
        if i > 0 :
            sol += " "
        sol += words[i].lower()
    print sol

test_cases.close()

Monday 7 September 2015

CodeEval - Stepwise word - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    words=test.split()
    max_word=""
    max_length=0
    for i in range(len(words)):
        word_length=len(words[i])
        if word_length > max_length:
            max_length = word_length
            max_word = words[i]
    sol=""
    for i in range(max_length):
        if i> 0 :
            sol += " "
        for j in range(i):
            sol += "*"
        sol += max_word[i]
    print sol

test_cases.close()

CodeEval - Find the highest score - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    rows=test.split(" | ")
    maxVals=rows[0].split(" ")
    for i in range(1,len(rows)):
        cols=rows[i].split()
        for j in range(len(cols)):
            if int(maxVals[j]) < int(cols[j]):
                maxVals[j] = cols[j]
    sol=""
    for i in range(len(maxVals)):
        if i > 0 :
            sol += " "
        sol+=maxVals[i]
    print sol

test_cases.close()

Sunday 6 September 2015

CodeEval - Strings and arrows - Easy

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    window=""
    for i in range(4):
        window+=test[i]
    counter=0
    for i in range(4,len(test)):
        window+=test[i]
        if(window==">>-->" or window=="<--<<"):
            counter+=1
        window=window[1:]
    print counter

test_cases.close()

CodeEval - Column Names - Moderate

import sys

test_cases = open(sys.argv[1], 'r')
for test in test_cases:
    value=int(test)
    result = ""
    while (value > 0):
        value-=1;
        result = str(chr(ord('A') + value % 26)) + result
        value /= 26
    print result

test_cases.close()