From db532e4eefcb168ef9ee39aac9325253053bcbfb Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Sat, 26 Nov 2022 10:02:28 +0000 Subject: - Added more guest contribution by Robert DiCicco. --- challenge-192/robert-dicicco/python/ch-2.py | 213 ++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 challenge-192/robert-dicicco/python/ch-2.py diff --git a/challenge-192/robert-dicicco/python/ch-2.py b/challenge-192/robert-dicicco/python/ch-2.py new file mode 100644 index 0000000000..da1f62f454 --- /dev/null +++ b/challenge-192/robert-dicicco/python/ch-2.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python + +''' + +AUTHOR: Robert DiCicco + + DATE: 2022-11-25 + + Challenge 192 Equal Distribution ( Python ) + +  + + You are given a list of integers greater than or equal to zero, @list. + +  + + Write a script to distribute the number so that each members are same. If you succeed then print the total moves otherwise print -1. + +  + + Please follow the rules (as suggested by Neils van Dijke [2022-11-21 13:00] + +  + + 1) You can only move a value of '1' per move + + 2) You are only allowed to move a value of '1' to a direct neighbor/adjacent cell + + ----------------------------------------------- + + SAMPLE OUTPUT + + raku .\EqualDistribution.rk + + Input: @lst = (1 0 5) + + (1 1 4) + + (1 2 3) + + (1 3 2) + + (2 2 2) + + Output: 4 + +  + + Input: @lst = (0 2 0) + + Output: -1 + +  + + Input: @lst = (0 3 0) + + (1 2 0) + + (1 1 1) + + Output: 2 + + ----------------------------------------------- + + SAMPLE OUTPUT + + python .\EqualDistribution.py + + Input: @lst = [1, 0, 5] + + [1, 1, 4] + + [1, 2, 3] + + [1, 3, 2] + + [2, 2, 2] + + Output: 4 + +  + + Input: @lst = [0, 2, 0] + + Output: -1 + +  + + Input: @lst = [0, 3, 0] + + [1, 2, 0] + + [1, 1, 1] + + Output: 2 + +''' + +  + +lst = [[1,0,5],[0,2,0],[0,3,0]] + +cnt = 0 + +  + +def MaxPos( arr ) : + + max = 0 + + maxpos = -1 + + for x in range(3): + + if ((arr[x]) > max) : + + max = arr[x] + + maxpos = x + + return max, maxpos + +  + +def MinPos( arr ) : + + min = 9 + + minpos = -1 + + for x in range(3): + + if (arr[x] < min) : + + min = arr[x] + + minpos = x + + return min, minpos + +  + +def EvenUp( arr) : + + global cnt + + cnt += 1 + + max, maxpos = MaxPos(arr) + + min, minpos = MinPos(arr) + + if (cnt > 1) : + + print("\t",arr) + + arr[maxpos] -= 1 + + if ((maxpos == 0) or (maxpos == 2)) : + + arr[1] += 1 + + else : + + arr[minpos] += 1 + + if ((arr[0] == arr[1]) and (arr[1] == arr[2])) : + + print("\t",arr) + + print("Output: ",cnt) + + print(" ") + + cnt = 0 + + else : + + EvenUp(arr); + +  + +def GetTotalVal(arr) : + + sum = 0; + + for i in range(3) : + + #print(i) + + sum += arr[i] + + return sum + +  + +x = 0 + +while x < 3 : + + print("Input: @lst = ",lst[x]) + + target = GetTotalVal(lst[x]) // 3 + + if (target >= 1) : + + EvenUp(lst[x]) + + else : + + print("Output: -1\n"); + + x += 1 -- cgit