Home > Software engineering >  Loop of List into a Tabbed New List
Loop of List into a Tabbed New List

Time:12-20

#Thank you <3[The same concept was shown in the attached picture][1]
def shrink(numbers):
    n1 = [(x, numbers[i 1]) for i, x in enumerate(numbers)
          if i < len(numbers)-1]
    n2 = [x[1]-x[0] for x in n1]
    print(n2)
    if(len(n2) > 1):
        return shrink(n2)
        return n

#shrink([1, 8, 27, 64, 125, 216])
a = input()
b = a.split()
for i in range(len(b)):
    b[i] = int(b[i])
shrink(b)

"""
The output will be:
[7, 19, 37, 61, 91]
[12, 18, 24, 30]
[6, 6, 6]
[0, 0]
[0]
"""

 #I want the output from the top to be like this!

d = [
    [7, 19, 37, 61, 91],
    [12, 18, 24, 30],
    [6, 6, 6],
    [0, 0],
    [0]
    ]

if d[2][0] == d[2][1]:
    print('cubic sequence')

I am a high school student. By observing the inputted sequence, I want to create a program that creates general formulas on quadratic to a polynomial with nth power equations. This posted code will function as a means of validation for inputted sequence. If you have a better code, please help me. Thank You! [1]: https://i.stack.imgur.com/YYVIi.png

CodePudding user response:

During the first call you initialize a list variable which you update and pass to the recursive call

def shrink(numbers,return_list = []):
    n1 = [(x, numbers[i 1]) for i, x in enumerate(numbers) if i < len(numbers)-1]
    n2 = [x[1]-x[0] for x in n1]

    return_list.append(n2)
    
    if(len(n2) > 1):
        return shrink(n2,return_list)
    else:
        return return_list

print(shrink([1, 8, 27, 64, 125, 216]))

If you want the values of n1 as well :

def shrink(numbers,n1_list = [], n2_list = []):
    n1 = [(x, numbers[i 1]) for i, x in enumerate(numbers) if i < len(numbers)-1]
    n2 = [x[1]-x[0] for x in n1]
    n1_list.append(n1)
    n2_list.append(n2)
    # print(n2)
    
    if(len(n2) > 1):
        return shrink(n2,n1_list,n2_list)
    else:
        return n1_list,n2_list

print(shrink([1, 8, 27, 64, 125, 216]))

CodePudding user response:

Thank You Atharva Gundawar.

If you want the list to be inputted, this is the answer: Take note that input list should be separated by space and not by a comma.
Sample input: 1 8 27 64 125 216

def shrink(numbers, return_list=[]):
    n1 = [(x, numbers[i   1]) for i, x in enumerate(numbers) if i < len(numbers) - 1]
    n2 = [x[1] - x[0] for x in n1]

    return_list.append(n2)

    if (len(n2) > 1):
        return shrink(n2, return_list)
    else:
        return return_list

a = input()
b = a.split()
for i in range(len(b)):
    b[i] = int(b[i])
c = shrink(b)
print(shrink(b))
print(c[2][0])
print(c[2][1])
if c[2][0] == c[2][1]:
    print('cubic sequence')

Input:

1 8 27 64 125 216

Output:

[[7, 19, 37, 61, 91], [12, 18, 24, 30], [6, 6, 6], [0, 0], [0], [7, 19, 37, 61, 91], [12, 18, 24, 30], [6, 6, 6], [0, 0], [0]]

6

6

cubic sequence

  • Related