# %% [markdown] # Alteryx weekly challenge 418 # %% # Import necessary libraries import pandas as pd import numpy as np # %% # Populate numbers from 0 to 100,000 df = pd.DataFrame(np.arange(0,100001,1),columns=['number']) display(df) # %% # Create helper columns df['number_string'] = df['number'].astype('string') df['number_string_length'] = df['number_string'].str.len() df['d_1'] = df['number_string'].str.slice(0,1).str.pad(6,'left','0').astype('int') df['d_2'] = df['number_string'].str.slice(1,2).str.pad(6,'left','0').astype('int') df['d_3'] = df['number_string'].str.slice(2,3).str.pad(6,'left','0').astype('int') df['d_4'] = df['number_string'].str.slice(3,4).str.pad(6,'left','0').astype('int') df['d_5'] = df['number_string'].str.slice(4,5).str.pad(6,'left','0').astype('int') df['d_6'] = df['number_string'].str.slice(5,6).str.pad(6,'left','0').astype('int') df['sum_all_d'] = df['d_1'] + df['d_2'] + df['d_3'] + df['d_4'] + df['d_5'] + df['d_6'] # Calculate the nth power of the sum of all numbers df['power_of_sum_all_d'] = df['sum_all_d'].pow(df['number_string_length']) # Find numbers that match criteria df['pow_is_sum'] = df['power_of_sum_all_d'] == df['number'] # Filter to numbers mathcing the criteria result = df[df['pow_is_sum']==True] # Display result display(result)