If odd numbers are less, then post odd numbers. If even numbers are less, then post even numbers. If both are equal, answer would be none. Ex. 3, 8, 9, 4, 6 => It contains 2 odd numbers 3, 9 and 3 even numbers 8, 4, 6. Hence, answer would be 3, 9.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 186
Challenge Difficulty: ⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Compare Odd Even Counts with Power Query
Power Query solution 1 for Compare Odd Even Counts, proposed by Omid Motamedisedeh:
= Table.AddColumn(Source, "Custom", each [a= try List.Transform(Text.Split([Numbers],", "), each Number.From(_)) otherwise {Number.From([Numbers])},b=List.Select(a,Number.IsOdd), c=(List.Select(a,Number.IsEven)), d= if List.Count(b)>List.Count(c) then c else if List.Count(b)
Power Query solution 2 for Compare Odd Even Counts, proposed by Bo Rydobon 🇹🇭:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Ans = Table.TransformColumns(
Source,
{
"Numbers",
each
let
t = Text.Split(_, ", "),
o = List.Select(t, each Number.IsOdd(Number.From(_))),
d = List.Count(t) - 2 * List.Count(o)
in
Text.Combine(if d = 0 then {} else if d > 0 then o else List.Difference(t, o), ", ")
}
)
in
Ans
Power Query solution 3 for Compare Odd Even Counts, proposed by Zoran Milokanović:
let
Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content],
Solution = Table.TransformRows(
Source,
each
let
n = Text.Split([Numbers], ", "),
o = List.Select(n, each Number.IsOdd(Number.From(_))),
oc = List.Count(o),
e = List.Difference(n, o),
ec = List.Count(e)
in
Text.Combine(if ec < oc then e else if oc < ec then o else {}, ", ")
)
in
Solution
Power Query solution 4 for Compare Odd Even Counts, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Sol = Table.AddColumn(
Source,
"Answer",
each
let
a = Text.Split([Numbers], ", "),
b = List.Transform(a, Number.From),
c = List.Select(b, Number.IsOdd),
d = List.Select(b, Number.IsEven),
e =
if List.Count(d) > List.Count(c) then
c
else if List.Count(d) < List.Count(c) then
d
else
null,
f = try Text.Combine(List.Transform(e, Text.From), ", ") otherwise ""
in
f
)[[Answer]]
in
Sol
Power Query solution 5 for Compare Odd Even Counts, proposed by Luan Rodrigues:
let
Fonte = Tabela1,
res = Table.AddColumn(
Fonte,
"Personalizar",
each [
odd = List.Select(
List.Transform(Text.Split([Numbers], ", "), Number.From),
each Number.IsOdd(_)
),
even = List.Select(
List.Transform(Text.Split([Numbers], ", "), Number.From),
each Number.IsEven(_)
),
a =
if List.Count(odd) < List.Count(even) then
Text.Combine(List.Transform(odd, Text.From), ", ")
else if List.Count(odd) = List.Count(even) then
null
else
Text.Combine(List.Transform(even, Text.From), ", ")
][a]
)
in
res
Power Query solution 6 for Compare Odd Even Counts, proposed by Brian Julius:
let
Source = Table.DuplicateColumn(
Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
"Numbers",
"Numbers2"
),
AddReturnList = Table.AddColumn(
Source,
"Answer",
each [
b = _[Numbers2],
b1 = List.Transform(Text.Split(b, ", "), each Number.FromText(_)),
evenlist = List.Select(b1, each Number.IsEven(_)),
oddlist = List.Select(b1, each Number.IsOdd(Number.From(_))),
evencount = try List.Count(evenlist) otherwise 0,
oddcount = try List.Count(oddlist) otherwise 0,
return =
if evencount < oddcount then
evenlist
else if oddcount < evencount then
oddlist
else
null
][return]
),
Extract = Table.TransformColumns(
AddReturnList,
{"Answer", each try Text.Combine(List.Transform(_, Text.From), ", ") otherwise null, type text}
),
RemoveCol = Table.RemoveColumns(Extract, {"Numbers2"})
in
RemoveCol
Power Query solution 7 for Compare Odd Even Counts, proposed by Guillermo Arroyo:
let
Origen = Excel.CurrentWorkbook(){[Name = "Tabla1"]}[Content],
a = List.Transform(
List.Transform(Origen[Numbers], each Text.Split(_, ", ")),
each
let
b = List.Transform(_, each Number.FromText(_)),
c = List.Select(b, each Number.IsOdd(_)),
d = List.RemoveItems(b, c),
e =
if List.Count(c) > List.Count(d) then
d
else if List.Count(c) < List.Count(d) then
c
else
{null}
in
Text.Combine(List.Transform(e, each Text.From(_)), ", ")
)
in
a
Power Query solution 8 for Compare Odd Even Counts, proposed by Felipe Perez Arevalo:
let
Source = Table1,
Custom1 = Table.RenameColumns(
Table.TransformColumns(
Source,
{
"Numbers",
each [
l = Text.Split(_, ", "),
e = List.Select(l, each Number.IsEven(Number.From(_))),
o = List.Select(l, each not Number.IsEven(Number.From(_))),
l1 = Text.Combine(
if List.Count(e) = List.Count(o) then
{}
else if List.Count(e) > List.Count(o) then
o
else
e,
", "
)
][l1],
type text
}
),
{"Numbers", "Answer"}
)
in
Custom1
Solving the challenge of Compare Odd Even Counts with Excel
Excel solution 1 for Compare Odd Even Counts, proposed by Bo Rydobon 🇹🇭:
=MAP(A2:A7,LAMBDA(a,LET(t,TEXTSPLIT(a,,", "),o,FILTER(t,ISEVEN(t),""),e,FILTER(t,ISODD(t),""),
ARRAYTOTEXT(SWITCH(SIGN(ROWS(o)-ROWS(e)),0,"",1,e,o)))))
Excel solution 2 for Compare Odd Even Counts, proposed by Rick Rothstein:
=MAP(A2:A7,LAMBDA(a,LET(n,TEXTSPLIT(a,", "),e,MOD(n,2)=0,o,MOD(n,2),so,SUM(o),se,SUM(0+e),IFERROR(TEXTJOIN(", ",,IF(so>se,FILTER(n,e),IF(se>so,FILTER(n,o),""))),""))))
Excel solution 3 for Compare Odd Even Counts, proposed by Rick Rothstein:
=MAP(A2:A7,LAMBDA(a,LET(n,TEXTSPLIT(a,", "),z,MOD(n,2),s,2*SUM(z),c,COUNT(z),TEXTJOIN(", ",,IF(s=c,"",IFERROR(FILTER(n,z=(1-(s>c))),""))))))
NOTE: This formula is 27 characters shorter than my first one; however, for the first time in a LONG time, my formula is even shorter (by 10 characters)
Excel solution 4 for Compare Odd Even Counts, proposed by John V.:
=MAP(A2:A7,LAMBDA(x,LET(n,TEXTSPLIT(x,", "),m,MOD(n,2),TEXTJOIN(", ",,IF(CHOOSE(2+SIGN(SUM(1-m)-SUM(m)),1-m,,m),n,"")))))
Excel solution 5 for Compare Odd Even Counts, proposed by محمد حلمي:
=MAP(A2:A7,LAMBDA(a,LET(
e,TEXTSPLIT(a,,", "),
v,--ISODD(e),
n,SUM(v),
r,ROWS(e)-n,
TEXTJOIN(", ",,IFS(rn,IF(v,e,""),1,"")))))
Excel solution 6 for Compare Odd Even Counts, proposed by Kris Jaganah:
=MAP(A2:A7,LAMBDA(k,LET(a,--TEXTSPLIT(k,,", "),b,MOD(a,2),c,MAP(b,LAMBDA(x,SUM(--(x=b)))),IF(MIN(c)=MAX(c),"",ARRAYTOTEXT(FILTER(a,SMALL(c,1)=c))))))
Excel solution 7 for Compare Odd Even Counts, proposed by Julian Poeltl:
=MAP(A2:A7,LAMBDA(N,LET(SP,--TEXTSPLIT(N,", "),O,FILTER(SP,ISODD(SP)),E,FILTER(SP,ISEVEN(SP)),IFERROR(TEXTJOIN(", ",,IFS(COLUMNS(O)COLUMNS(E),E)),""))))
Excel solution 8 for Compare Odd Even Counts, proposed by Timothée BLIOT:
=MAP(A2:A7, LAMBDA(x, ARRAYTOTEXT(LET(A,1*TEXTSPLIT(x,", "),
IF(SUM(--ISODD(A))=COUNT(A),"",
IF(SUM(--ISODD(A))>SUM(--NOT(ISODD(A))), FILTER(A,NOT(ISODD(A))),FILTER(A,ISODD(A)))) ))))
Excel solution 9 for Compare Odd Even Counts, proposed by Hussein SATOUR:
=IFERROR(MAP(A2:A7, LAMBDA(x, LET(a, --TEXTSPLIT(x,,", "),b,ISODD(a), c, SUM(b*1)/COUNT(b*1), TEXTJOIN(", ",,FILTER(a,IFS(c = 0.5, "", c<0.5, b, 1, NOT(b))))))),"")
Excel solution 10 for Compare Odd Even Counts, proposed by Oscar Mendez Roca Farell:
=MAP(A2:A7, LAMBDA(a, LET(_n,--TEXTSPLIT(a,", "),_m, MOD(_n,2),_c, SUM(_m)/COUNT(_n), TEXTJOIN(", ",1, IFERROR(FILTER(_n,_m=(_c<0,5)/(_c<>0,5)),"")))))
Excel solution 11 for Compare Odd Even Counts, proposed by Sunny Baggu:
=MAP(
A2:A7,
LAMBDA(x,
LET(
_split, TEXTSPLIT(x, , ", ") + 0,
_odd, FILTER(_split, ISODD(_split), ""),
_oddnum, ROWS(_odd),
_even, FILTER(_split, ISEVEN(_split), ""),
_evennum, ROWS(_even),
IFNA(
ARRAYTOTEXT(IFS(_oddnum < _evennum, _odd, _oddnum > _evennum, _even)),
""
)
)
)
)
Excel solution 12 for Compare Odd Even Counts, proposed by Md. Zohurul Islam:
=MAP(A2:A7,LAMBDA(x,LET(a,TEXTSPLIT(x,,", ")+0,
b,FILTER(a,ISODD(a)),
c,FILTER(a,ISEVEN(a)),
d,COUNT(a),e,COUNT(b),f,COUNT(c),
ARRAYTOTEXT(IFS(OR(d=1,e=f),"",e
Excel solution 13 for Compare Odd Even Counts, proposed by Charles Roldan:
=MAP(A2:A7, LAMBDA(x,LET(
Arr, --TEXTSPLIT(x, , ", "),
Res, MOD(Arr, 2), Avg, AVERAGE(Res),
Bool, ABS(ROUND(Avg, ) - Res) * (Avg <> 0.5),
ARRAYTOTEXT(FILTER(Arr, Bool, "")))))
Excel solution 14 for Compare Odd Even Counts, proposed by Nicolas Micot:
=LET(_nombres;FRACTIONNER.TEXTE(A2;",")+0;
_pair;FILTRE(_nombres;MOD(_nombres;2)=0);
_impair;FILTRE(_nombres;MOD(_nombres;2)>0);
JOINDRE.TEXTE(", ";VRAI;SI(NBVAL(_pair)
Excel solution 15 for Compare Odd Even Counts, proposed by Guillermo Arroyo:
=MAP(A2:A7,LAMBDA(a,LET(b,--TEXTSPLIT(a,,", "),TEXTJOIN(", ",0,FILTER(b,CHOOSE(IFERROR(2+ROUNDUP(1-COUNT(b)/2/SUM(--ISODD(b)),0),2),ISODD(b),SEQUENCE(COUNT(b),,0,0),ISEVEN(b)),"")))))
Excel solution 16 for Compare Odd Even Counts, proposed by Quadri Olayinka Atharu:
=DROP(REDUCE("",A2:A7,LAMBDA(x,y,
LET(num,--TEXTSPLIT(y,","),
eT,ISEVEN(--num),
oT,ISODD(--num),
oC,SUM(N(oT)),
eC,SUM(N(eT)),
_min,MIN(oC,eC),
_con,IFS(oC=eC,FALSE,_min=oC,oT,_min=eC,eT),
VSTACK(x,TEXTJOIN(", ",1,FILTER(num,_con,"")))))),1)
Excel solution 17 for Compare Odd Even Counts, proposed by Rayan S.:
= odd,
"",
IF(even > odd, FILTER(f, ISODD(f)), FILTER(f, ISEVEN(f)))
),
sol
)
),
""
)
)
)
Excel solution 18 for Compare Odd Even Counts, proposed by Amardeep Singh:
=BYROW(A2:A7,LAMBDA(r,
ARRAYTOTEXT(LET(d,--TEXTSPLIT(r,", "),od,SUM(--ISODD(d)),ev,SUM(--ISEVEN(d)),IFS(od=ev,"",od
Excel solution 19 for Compare Odd Even Counts, proposed by Miguel Angel Franco García:
=UNIRCADENAS(","; VERDADERO; LET(a;ORDENAR(ENCOL(ABS(DIVIDIRTEXTO(A2;","))));b;SI(BYROW(a; LAMBDA(c;ES. IMPAR(c)))=VERDADERO;a;""); d;SI(BYROW(a; LAMBDA(e;ES. PAR(e)))=VERDADERO;a;""); SI(SUMA(b)
Excel solution 20 for Compare Odd Even Counts, proposed by Hussain Ali Nasser:
=IFERROR(
MAP(
A2:A7,
LAMBDA(
_range,
LET(
_splitrange,
TEXTSPLIT(
_range,
,
", "
),
_even,
FILTER(
_splitrange,
ISEVEN(
_splitrange
)
),
_odd,
FILTER(
_splitrange,
ISODD(
_splitrange
)
),
_evenrows,
ROWS(
_even
),
_oddrows,
ROWS(
_odd
),
TEXTJOIN(
", ",
,
IFS(
_evenrows>_oddrows,
_odd,
_evenrows<_oddrows,
_even
)
)
)
)
),
""
)
Excel solution 21 for Compare Odd Even Counts, proposed by Stevenson Yu:
=MAP(A2:A7, LAMBDA(X,
LET(A, TEXTSPLIT(X, ", "),
B, FILTER(A, ISODD(A)),
C, FILTER(A, ISEVEN(A)),
D, COUNTA(B)-COUNTA(C),
E, TEXTJOIN(", ",,IFS(D=0, "", D>0, C, 1, B)),
E)))
Excel solution 22 for Compare Odd Even Counts, proposed by Erik Oehm:
=LAMBDA(list, LET(
_split, VALUE(TRIM(TEXTSPLIT(list,,","))),
_isEven, MAP(_split,LAMBDA(x,ISEVEN(x))),
_evenCount, SUM(N(_isEven)),
_oddCount, ROWS(_isEven)-_evenCount,
_filtered, FILTER(_split,_isEven=(_evenCount<_oddCount),""),
_result, IF(_evenCount=_oddCount,"",TEXTJOIN(", ",,_filtered)),
_result
)
)(A2)
Excel solution 23 for Compare Odd Even Counts, proposed by Lorenzo Foti:
=LET(
rng;NUMBERVALUE(TEXTSPLIT(A2;","));
evenCheck;IF(ISEVEN(rng);1;0);
oddCheck;IF(ISODD(rng);1;0);
outP;IFERROR(IFS(SUM(evenCheck)>SUM(oddCheck);TEXTJOIN(", ";;FILTER(rng;oddCheck=1));SUM(evenCheck)
Excel solution 24 for Compare Odd Even Counts, proposed by Caroline Blake:
=MAP(A2:A7,LAMBDA(_a,LET(a,TEXTSPLIT(_a,", "),
_even,SUM(--ISEVEN(a)),
_odd,SUM(--ISODD(a)),
ARRAYTOTEXT(IFERROR(IF(_even<_odd,FILTER(a,ISEVEN(a)=TRUE),IF(_odd<_even,FILTER(a,ISODD(a)=TRUE),"")),"")))))
&&
