+ 2
Pattern challenge : Enter 5 numbers if the largest is bigger than the sum of the two smallest number then print a triangle else
-else print an inverted triangle. the number in triangle is largest one if you've a duplicated numbers u use them unless all are the same.in this case print a flat line 😃. Input: 12345 Output: 5 55 555 5555 55555 Input:37691 Output: 9 99 999 9999 99999 999999 9999999 99999999 999999999 Input:34563 Output: 666666 66666 6666 666 66 6 Input:67548 Output: 88888888 8888888 888888 88888 8888 888 88 8 You can use your numbers .
11 ответов
+ 8
Could you please clarify the case for duplicate numbers?
Beisdes that, the number in triangle would always be the largest number except the orientation. Am I right?
+ 8
@ChaoticDawg I see, maybe it's just me confused with the requirements. I've done in the folowing way:
s1 + s2 = largest ( Flat line )
s1 + s2 < largest ( Normal triangle )
s1 + s2 > largest ( Inverrted triangle )
Let's wait for the confirmation from the OP.
+ 7
Just my opinion, how about printing a flat line if both numbers are equal?
+ 7
Here's my C# implementation! ✌
LINQ One-Liner〰
Enumerable.Range(1, digit - 1)
.Select(n => (
isInverted ?
n * (2 * digit - n + 1) / 2 :
n * (n + 1) / 2) +
2 * (n - 1))
.ToList()
.ForEach(i => str = str.Insert(i, "\n"));
I doubt this is not the recommended way to solve the challenge as I've abused LINQ with side-effect this time. This solution relies on formula for inserting new line into the string to form the triangle since the number occurences are the same for all 3 cases. Enjoy~ ❤
https://code.sololearn.com/c9R26iY77gdF/?ref=app
+ 5
I'm almost done now. Can I confirm the output for 34563? Isn't it a straight line since 3 + 3 = 6?
+ 3
nums = list(input("Input 5 digit number: ")).sort()
print()
high, low1, low2 = int(nums[-1]), int(nums[0]), int(nums[1])
if high == low1:
[print(high, end='') for _ in range(high)]
elif (low1 + low2) >= high:
for i in range(high):
[print(high, end='') for _ in range(high-i)]
print()
else:
for i in range(high):
[print(high, end='') for _ in range(i)]
print()
+ 3
@Zephyr I read it as if all the values are equal then print them on a line. So if the smallest number is the same as the largest.
For 34563 the example shows it to be an inverted triangle. So if the 2 smallest numbers are equal to or greater than, then print it as an inverted triangle.
+ 1
@zephyr
s1+s2 < largest (normal triangle)
s1+s2 >= largest (inverted triangle)
n1=n2=n3=n4=n5 (flat line )
0
edited
0
👍👌