From d3415eb4ede0c67098433eda84e84843267a7d62 Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Tue, 24 Sep 2024 10:23:09 +0100 Subject: Add Python solution to challenge 074 --- challenge-074/paulo-custodio/python/ch-1.py | 45 ++++++++++++++++++++++++ challenge-074/paulo-custodio/python/ch-2.py | 54 +++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 challenge-074/paulo-custodio/python/ch-1.py create mode 100644 challenge-074/paulo-custodio/python/ch-2.py (limited to 'challenge-074/paulo-custodio/python') diff --git a/challenge-074/paulo-custodio/python/ch-1.py b/challenge-074/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..cce27f69b9 --- /dev/null +++ b/challenge-074/paulo-custodio/python/ch-1.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +# Challenge 074 +# +# TASK #1 > Majority Element +# Submitted by: Mohammad S Anwar +# You are given an array of integers of size $N. +# +# Write a script to find the majority element. If none found then print -1. +# +# Majority element in the list is the one that appears more than +# floor(size_of_list/2). +# +# Example 1 +# Input: @A = (1, 2, 2, 3, 2, 4, 2) +# Output: 2, as 2 appears 4 times in the list which is more than floor(7/2). +# +# Example 2 +# Input: @A = (1, 3, 1, 2, 4, 5) +# Output: -1 as none of the elements appears more than floor(6/2). + +import sys + +def majority_elem(a): + # count instances of each element, get max + count = {} + max_count = 0 + max_elem = None + for x in a: + if x in count: + count[x] += 1 + else: + count[x] = 1 + + if count[x] > max_count: + max_count, max_elem = count[x], x + + # check if majority + if max_count > int(len(a)/2): + return max_elem + else: + return -1 + +a = [int(x) for x in sys.argv[1:]] +print(majority_elem(a)) diff --git a/challenge-074/paulo-custodio/python/ch-2.py b/challenge-074/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..131c393c0e --- /dev/null +++ b/challenge-074/paulo-custodio/python/ch-2.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +# Challenge 074 +# +# TASK #2 > FNR Character +# Submitted by: Mohammad S Anwar +# You are given a string $S. +# +# Write a script to print the series of first non-repeating character (left +# -> right) for the given string. Print # if none found. +# +# Example 1 +# Input: $S = 'ababc' +# Output: 'abb#c' +# Pass 1: "a", the FNR character is 'a' +# Pass 2: "ab", the FNR character is 'b' +# Pass 3: "aba", the FNR character is 'b' +# Pass 4: "abab", no FNR found, hence '#' +# Pass 5: "ababc" the FNR character is 'c' +# +# Example 2 +# Input: $S = 'xyzzyx' +# Output: 'xyzyx#' +# Pass 1: "x", the FNR character is "x" +# Pass 2: "xy", the FNR character is "y" +# Pass 3: "xyz", the FNR character is "z" +# Pass 4: "xyzz", the FNR character is "y" +# Pass 5: "xyzzy", the FNR character is "x" +# Pass 6: "xyzzyx", no FNR found, hence '#' + +import sys + +def lnr_char(s): + out = "" + seen = {} + for i in range(len(s)): + ch = s[i] + if ch in seen: + seen[ch] += 1 + else: + seen[ch] = 1 + found = False + for j in range(i+1)[::-1]: + ch = s[j] + if ch in seen and seen[ch] == 1: + out += ch + found = True + break + if not found: + out += "#" + return out + +s = sys.argv[1] +print(lnr_char(s)) -- cgit