Home » List First 10 Tech Numbers

List First 10 Tech Numbers

Generate the first 10 Tech Numbers. A Tech Number is that number which 1. has even number of digits 2. dividing number into two equal halves, adding those two halves and squaring the result gives back the same number. Ex. 2025 – Has even number of digits (4), two equal halves are 20 & 25, sum of these is 45 and square of 45 is 2025.

📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 494
Challenge Difficulty: ⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn

Solving the challenge of List First 10 Tech Numbers with Power Query

Power Query solution 1 for List First 10 Tech Numbers, proposed by Alejandro Simón 🇵🇦 🇪🇸:
leto y demora un siglo, trataré de completarlo....

let
 Source = Table.FromRows(List.Combine(List.Transform({0..3}, each List.Transform({Number.Power(10,_)..Number.Power(10,_+1)-1}, (x)=> {x}&{{Number.Power(10,_)..Number.Power(10,_+1)-1}} ))),{"A","B"}),
 Expand = Table.ExpandListColumn(Source, "B"),
 Sol = Table.SelectRows(Table.AddColumn(Expand, "Answer", each Number.Power([A]+[B],2)), each [Answer]=Number.From(Text.From([A])&Text.From([B])))[[Answer]]
in
 Sol


                    
                  
          
Power Query solution 2 for List First 10 Tech Numbers, proposed by Abdallah Ally:
let
  Squares = List.Transform({4 .. 10000}, each Number.Power(_, 2)), 
  size = 10, 
  is_tech_number = (x) =>
    let
      a = Text.From(x), 
      b = Text.Length(a), 
      c = 
        if Number.IsOdd(b) then
          false
        else
          Number.Power(Number.From(Text.Start(a, b / 2)) + Number.From(Text.End(a, b / 2)), 2) = x
    in
      c, 
  Result = List.FirstN(List.Select(Squares, each is_tech_number(_)), size)
in
  Result

Solving the challenge of List First 10 Tech Numbers with Excel

Excel solution 1 for List First 10 Tech Numbers, proposed by Bo Rydobon 🇹🇭:
=TOCOL(LET(n,
    SEQUENCE(
        20^3
    ),
    s,
    n^2,
    l,
    LEN(
        s
    ),
    s/ISEVEN(
        l
    )/(n=LEFT(
        s,
        l/2
    )+RIGHT(
        s,
        l/2
    ))),
    3)
Excel solution 2 for List First 10 Tech Numbers, proposed by John V.:
=LET(s,ROW(4:7777)^2,i,LEN(s)/2,FILTER(s,((LEFT(s,i)+RIGHT(s,i))^2=s)*(i=INT(i))))
Excel solution 3 for List First 10 Tech Numbers, proposed by محمد حلمي:
=LET(i,
    SEQUENCE(
        10000
    )^2,
    j,
    LEN(
        i
    ),
    
TOCOL(i/(i=ISEVEN(
    j
)*(LEFT(
    i,
    j/2
)+RIGHT(
    i,
    j/2
))^2),
    2))
Excel solution 4 for List First 10 Tech Numbers, proposed by محمد حلمي:
=LET(i,
    SEQUENCE(
        8000
    )^2,
    j,
    LEN(
        i
    ),
    
TOCOL(i/(i=ISEVEN(
    j
)*(LEFT(
    i,
    j/2
)+RIGHT(
    i,
    j/2
))^2),
    2))
Excel solution 5 for List First 10 Tech Numbers, proposed by Kris Jaganah:
=TAKE(TOCOL(LET(a,SEQUENCE(10000),b,a^2,c,LEN(b),d,c/2,e,INT(d)=d,f,IF(e,LEFT(b,d)),g,IF(e,RIGHT(b,d)),IFS(f+g=a,b)),3),10)
Excel solution 6 for List First 10 Tech Numbers, proposed by Julian Poeltl:
=LET(
    S,
    SEQUENCE(
        8000
    )^2,
    E,
    ISEVEN(
        LEN(
            S
        )
    ),
    D,
    SQRT(
            S
        )=RIGHT(
        S,
        LEN(
            S
        )/2
    )+LEFT(
        S,
        LEN(
            S
        )/2
    ),
    TAKE(
        FILTER(
            S,
            IFERROR(
                E*D,
                0
            )
        ),
        10
    )
)
Excel solution 7 for List First 10 Tech Numbers, proposed by Timothée BLIOT:
=LET(
    A,
    SEQUENCE(
        10^4
    )^2,
    B,
    FILTER(
        A,
        ISEVEN(
            LEN(
                A
            )
        )
    ),
    C,
    MAP(
        B,
        LAMBDA(
            x,
            --LEFT(
                x,
                LEN(
                    x
                )/2
            )+--RIGHT(
                x,
                LEN(
                    x
                )/2
            )
        )
    )^2,
    TAKE(
        FILTER(
            C,
            C=B
        ),
        10
    )
)
Excel solution 8 for List First 10 Tech Numbers, proposed by Sunny Baggu:
=LET(
 _s,
     SEQUENCE(
         7777
     ),
    
 _c,
     ISEVEN(
         LEN(
             _s ^ 2
         )
     ),
    
 _a,
     FILTER(
         _s,
          _c
     ),
    
 _b,
     _a ^ 2,
    
 _l,
     LEN(
         _b
     ),
    
 FILTER(_b,
     MAP(_b,
     _l,
     LAMBDA(x,
     y,
     (LEFT(
         x,
          y / 2
     ) + RIGHT(
         x,
          y / 2
     )) ^ 2 = x)))
)
Excel solution 9 for List First 10 Tech Numbers, proposed by Abdallah Ally:
=LET(s,SEQUENCE(10^4,,4)^2,TAKE(FILTER(s,MAP(s,LAMBDA(x,LET(a, LEN(x)/2,IF(INT(a)<>a,0,(LEFT(x,a)+RIGHT(x,a))^2=x))))),10))
Excel solution 10 for List First 10 Tech Numbers, proposed by Bilal Mahmoud kh.:
=DROP(
    REDUCE(
        0,
        SEQUENCE(
            9999
        )^2,
        LAMBDA(
            x,
            y,
            IF(
                ISEVEN(
                    LEN(
                        y
                    )
                ),
                IF(
                    POWER(
                        1*LEFT(
                            y,
                            LEN(
                        y
                    )/2
                        )+1*RIGHT(
                            y,
                            LEN(
                        y
                    )/2
                        ),
                        2
                    ) = y,
                    VSTACK(
                        x,
                        y
                    ),
                    VSTACK(
                        x
                    )
                ),
                VSTACK(
                        x
                    )
            )
        )
    ),
    1
)
Excel solution 11 for List First 10 Tech Numbers, proposed by Bevon Clarke:
=LET(s,
    SEQUENCE(
        8000
    ),
    
even,
    ISEVEN(
        LEN(
            s^2
        )
    ),
    
f,
     FILTER(
         s,
         even
     ),
    
g,
    f^2,
    
l,
    LEN(
        g
    ),
    FILTER(g,
    MAP(g,
    l,
    LAMBDA(x,
    y,
    (LEFT(
        x,
        y/2
    )+RIGHT(
        x,
        y/2
    ))^2=x))))
Excel solution 12 for List First 10 Tech Numbers, proposed by Ogunronbi Taiwo Fisayo:
=C2:C10),
    CHOOSECOLS(HSTACK(C2:C10,
    (a+b)^2=C2:C10),
    2)=TRUE),
    ,
    1))

Solving the challenge of List First 10 Tech Numbers with Python

Python solution 1 for List First 10 Tech Numbers, proposed by Konrad Gryczan, PhD:
import pandas as pd
import math
path = "494 Tech Numbers.xlsx"
test = pd.read_excel(path).values.flatten().tolist()
def generate_sequence(n):
 sequence = []
 i = 1
 while len(sequence) < n:
 if math.sqrt(i) == int(math.sqrt(i)):
 if len(str(i)) % 2 == 0:
 half = len(str(i)) // 2
 first_half = str(i)[:half]
 second_half = str(i)[half:]
 if int(first_half) + int(second_half) == math.sqrt(i):
 sequence.append(i)
 i += 1
 return sequence
result = generate_sequence(10)
print(result == test) # True
                    
                  

Solving the challenge of List First 10 Tech Numbers with Python in Excel

Python in Excel solution 1 for List First 10 Tech Numbers, proposed by Owen Price:
https://www.linkedin.com/posts/owenhprice_pythoninexcel-data-analytics-activity-7216153533417472000-hFyT

Solving the challenge of List First 10 Tech Numbers with R

R solution 1 for List First 10 Tech Numbers, proposed by Konrad Gryczan, PhD:
library(tidyverse)
library(readxl)
path = "Excel/494 Tech Numbers.xlsx"
test = read_excel(path)
is_perfect_square = function(x) {
 sqrt_x = sqrt(x)
 return(sqrt_x == floor(sqrt_x))
}
has_even_number_of_digits = function(x) {
 return(nchar(x) %% 2 == 0)
}
table = tibble(x = 1:1e8) %>%
 mutate(x = as.numeric(x)) %>%
 filter(is_perfect_square(x)) %>%
 filter(has_even_number_of_digits(x)) %>%
 mutate(first_half = substr(x, 1, nchar(x) / 2),
 second_half = substr(x, nchar(x) / 2 + 1, nchar(x))) %>%
 filter((as.numeric(second_half) + as.numeric(first_half))**2 == x) %>%
 head(10) %>%
 select(x)
identical(table$x, test$`Answer Expected`)
# [1] TRUE
                    
                  

Solving the challenge of List First 10 Tech Numbers with SQL

SQL solution 1 for List First 10 Tech Numbers, proposed by Imam Hambali:
with numbers AS
(
select POW(generate_series(1, 10000),2) as num
)
select num
from numbers
and num = POW(LEFT(num::TEXT, LENGTH(num::text)/2::INT)::INT + 
 RIGHT(num::TEXT, LENGTH(num::text)/2::INT)::INT,2)
limit 10;
                    
                  

&&&

Leave a Reply