HackerRank 'Plus Minus' Solution

Martin Kysel · June 16, 2015

Short Problem Definition:

You’re given an array containing integer values. You need to print the fraction of count of positive numbers, negative numbers and zeroes to the total numbers. Print the value of the fractions correct to 3 decimal places.

Plus Minus

Complexity:

time complexity is O(N)

space complexity is O(1)

Execution:

Count the values. Do not forget to force floats instead of integers.

Solution:

#!/usr/bin/py

def getPartitionPythonesque(values):
    c1 = len(filter(lambda x:x>0,values))
    c2 = len(filter(lambda x:x<0,values))
    c3 = len(filter(lambda x:x==0,values))
    v_len = float(len(values))
    
    return (c1/v_len, c2/v_len, c3/v_len)

def getPartition(values):
    pos, neg, zero = [0.0,0.0,0.0]
    v_len = len(values)
    
    for value in values:
        if value == 0:  zero += 1
        elif value > 0: pos += 1
        else:           neg += 1
            
    return (pos/v_len, neg/v_len, zero/v_len)    
    

if __name__ == '__main__':
    t = input()
    values = map(int, raw_input().split())
    partition = getPartition(values)
    for percentage in partition:
        print round(percentage,4)


use std::io;
use std::cmp::Ordering;


fn get_number() -> u32 {
    let mut line = String::new();
    io::stdin().read_line(&mut line).ok().expect("Failed to read line");
    line.trim().parse::<u32>().unwrap()
}

fn get_numbers() -> Vec<i32> {
    let mut line = String::new();
    io::stdin().read_line(&mut line).ok().expect("Failed to read line");
    line.split_whitespace().map(|s| s.parse::<i32>().unwrap()).collect()
}

fn main() {
    let siz = get_number() as f32;
    
    let (mut pos, mut neg, mut zer) = (0, 0, 0);
    
    let zero = 0;
    
    for i in get_numbers() {
        match i.cmp(&zero) {
            Ordering::Less => neg+=1,
            Ordering::Greater => pos+=1,
            Ordering::Equal => zer+=1,
        }
    }
       
    println!("{:.6}\n{:.6}\n{:.6}", pos as f32 /siz, neg as f32 /siz, zer as f32 /siz);
}

Twitter, Facebook

To learn more about solving Coding Challenges in Python, I recommend these courses: Educative.io Python Algorithms, Educative.io Python Coding Interview.