diff options
| author | Simon Green <mail@simon.green> | 2024-06-02 16:44:05 +1000 |
|---|---|---|
| committer | Simon Green <mail@simon.green> | 2024-06-02 16:44:05 +1000 |
| commit | 9570cd789d0f24fcfba65675b371c5feae0e3dc8 (patch) | |
| tree | 5c3aea0411b8c26b5c9c1e000decba498789a4ed /challenge-271/sgreen/python/ch-2.py | |
| parent | 5ea56aa37a9f0b7098302e2acb76c73907c70bde (diff) | |
| download | perlweeklychallenge-club-9570cd789d0f24fcfba65675b371c5feae0e3dc8.tar.gz perlweeklychallenge-club-9570cd789d0f24fcfba65675b371c5feae0e3dc8.tar.bz2 perlweeklychallenge-club-9570cd789d0f24fcfba65675b371c5feae0e3dc8.zip | |
sgreen solutions to challenge 271
Diffstat (limited to 'challenge-271/sgreen/python/ch-2.py')
| -rwxr-xr-x | challenge-271/sgreen/python/ch-2.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-271/sgreen/python/ch-2.py b/challenge-271/sgreen/python/ch-2.py new file mode 100755 index 0000000000..7ebb7f412a --- /dev/null +++ b/challenge-271/sgreen/python/ch-2.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import sys + + +def sort_by_1_bits(ints: list) -> list: + """ + Sorts a list of integers based on the number of set bits (1s) in their + binary representation. If they are equal, they are sorted by their value. + + Args: + ints (list): A list of integers to be sorted. + + Returns: + list: A new list of integers sorted based on the criteria above. + """ + sorted_ints = sorted(ints, key=lambda x: (bin(x).count('1'), x)) + return sorted_ints + + +def main(): + # Convert input into integers + array = [int(n) for n in sys.argv[1:]] + result = sort_by_1_bits(array) + print(tuple(result)) + + +if __name__ == '__main__': + main() |
