aboutsummaryrefslogtreecommitdiff
path: root/challenge-050/user-person/python/ch-2.py
blob: 4ccab6057df18da9a2561d34bec3026fb6bce883 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env python3

###########################################################################
# script name: ch-2.py                                                    #
#                                                                         #
# https://github.com/user-person                                          #
#                                                                         #
# https://perlweeklychallenge.org/blog/perl-weekly-challenge-050/         #
#                                                                         #
# Noble Integer                                                           #
# You are given a list, @L, of three or more random integers between 1    #
# and 50. A Noble Integer is an integer N in @L, such that there are      #
# exactly N integers greater than N in @L. Output any Noble Integer       #
# found in @L, or an empty list if none were found.                       #
#                                                                         #
# An interesting question is whether or not there can be multiple Noble   #
# Integers in a list.                                                     #
#                                                                         #
# For example,                                                            #
#                                                                         #
# Suppose we have list of 4 integers [2, 6, 1, 3].                        #
#                                                                         #
# Here we have 2 in the above list, known as Noble Integer, since there   #
# are exactly 2 integers in the list i.e.3 and 6, which are greater than  #
# 2.                                                                      #
#                                                                         #
# Therefore the script would print 2.                                     #
#                                                                         #
###########################################################################

import re
import sys

def nobleInt(ints):
    seen = dict()
    ints.sort(key=int)
   
    for i in ints:
        count = 0

        for j in ints:

            if int(i) < int(j):
                count += 1

        if int(count) == int(i):
            if i in seen:
                seen[i] += 1
            else:
                seen.update({i:1})
    return seen.keys()

input = "[2, 6, 1, 3]"

if len(sys.argv) > 1:
     input = ' '.join(sys.argv[1:])
else:
    print('default input:',input)
     
input = re.sub(r'[][, ]+', ' ', input)
input = re.sub(r'\A\s+|\s+\Z', '', input)
L     = re.split(r' ', input)

nobleInteger = nobleInt(L)

if nobleInteger:
    for kys in nobleInteger:
        print('noble integer:',kys)
else:
    print('No noble integer.')