In[]:=
ClearAll[IntegerDigitsFunction]IntegerDigitsFunction[f_][(integer_)?IntegerQ,args___]:=Module[{integerDigits},integerDigits=IntegerDigits[integer];Switch[Depth[f[integerDigits]],1,f[integerDigits],x_/;x==2,FromDigits[f[integerDigits]],3,Table[FromDigits[n],{n,f[integerDigits]}],4,Map[FromDigits,f[integerDigits],{2}]]](*IntegerDigitsFunction[f_][(strings_List)?validQ,args___]:=(IntegerDigitsFunction[f][#1,args]&)/@stringsIntegerDigitsFunction[f_][other:Except[_?validQ],args___]:=Null/;(ResourceFunction["ResourceFunctionMessage"][IntegerDigitsFunction::strse,HoldForm[IntegerDigitsFunction[f][other]]];False)IntegerDigitsFunction[args___]:=Null/;Length[HoldComplete[args]]=!=1&&(ResourceFunction["ResourceFunctionMessage"][IntegerDigitsFunction::argx,IntegerDigitsFunction,Length[HoldComplete[args]]];False)IntegerDigitsFunction/:MakeBoxes[expr:IntegerDigitsFunction[___],StandardForm]/;!TrueQ[$inDef]:=Block[{$inDef=True},ResourceFunction;With[{sb=MakeBoxes[IntegerDigitsFunction,StandardForm],rb=FunctionResource`Private`makeResourceFunctionBoxes["StringFunction"]},MakeBoxes[expr,StandardForm]/.sb->rb]]*)
In[]:=
validQ[arg_]:=MatchQ[Flatten[{arg}],{___?IntegerQ}]validQ[___]:=False
In[]:=
IntegerDigitsFunction[Reverse][1234]
Out[]=
4321
In[]:=
IntegerDigitsFunction[Select[EvenQ]][1234]
Out[]=
24
In[]:=
IntegerDigitsFunction[RotateLeft][1234]
Out[]=
2341
In[]:=
IntegerDigitsFunction[RotateRight][1234]
Out[]=
4123
In[]:=
IntegerDigitsFunction[RandomSample][1234567]
Out[]=
2145376
In[]:=
IntegerDigitsFunction[ReplaceAll[{1->9}]][1234567]
Out[]=
9234567
In[]:=
IntegerDigitsFunction[OperatorApplied[Riffle][9]][1234567]
Out[]=
1929394959697
In[]:=
IntegerDigitsFunction[Delete[3](*anoperatorformofDeletethatdeletesthethirdpartofanexpression*)][1234567]
Out[]=
124567
In[]:=
IntegerDigitsFunction[OperatorApplied[Drop][6]][123456789101112]
Out[]=
789101112
In[]:=
IntegerDigitsFunction[Union][123456789101112]
Out[]=
123456789
In this case, Union gives {0,1,2,3,4,5} which FromDigits gives 12345 and the 0 is dropped.
In[]:=
IntegerDigitsFunction[Union][123451011]
Out[]=
12345
In[]:=
Trace[IntegerDigitsFunction[Union][123451011]]
In[]:=
IntegerDigitsFunction[DeleteDuplicates][12341234]
Out[]=
1234
In[]:=
IntegerDigitsFunction[DeleteDuplicates][4321434321]
Out[]=
4321
Champernowne Number example
Champernowne Number example
Split
Split
SplitBy
SplitBy
In[]:=
IntegerDigitsFunction[OperatorApplied[SplitBy][EvenQ]][12222222222223344]
Out[]=
{1,222222222222,33,44}
DeleteAdjacentDuplicates
DeleteAdjacentDuplicates
In[]:=
IntegerDigitsFunction[DeleteAdjacentDuplicates][12222222222223344]
Out[]=
1234
In[]:=
IntegerDigitsFunction[DeleteAdjacentDuplicates][12222222222223344433333322221]
Out[]=
1234321
Delete elements unless they are larger than the preceding ones:
In[]:=
IntegerDigitsFunction[OperatorApplied[DeleteAdjacentDuplicates][Greater]][13543419978]
Out[]=
1354998
Delete elements that are even or odd next to each other:
In[]:=
IntegerDigitsFunction[OperatorApplied[DeleteAdjacentDuplicates][EvenQ[#1]==EvenQ[#2]&]][13543419978]
Out[]=
143418
FindClusters
FindClusters
Most and Rest and TakeDrop and TakeList
Most and Rest and TakeDrop and TakeList
Append, etc.
Append, etc.
In[]:=
IntegerDigitsFunction[Append[5]][1234]
Out[]=
12345
In[]:=
IntegerDigitsFunction[Prepend[1]][234]
Out[]=
1234
In[]:=
IntegerDigitsFunction[Insert[5,-1]][234]
Out[]=
2345
In[]:=
?Delete
Out[]=
In[]:=
IntegerDigitsFunction[Delete[2]][12345]
Out[]=
1345
Length
Length
This is equivalent to IntegerLength:
In[]:=
CopyToClipboard[RandomInteger[]]
100
10
In[]:=
IntegerDigitsFunction[Length][4986222297246417957614036637621304789098098238565899621266906858185935175112879800673018652553867302]
Out[]=
100
This could be like IntegerLengthWhile:
In[]:=
IntegerDigitsFunction[OperatorApplied[LengthWhile][#!=3&]][4986222297246417957614036637621304789098098238565899621266906858185935175112879800673018652553867302]
Out[]=
23
Find the length of the run of digits in before a 7 occurs:
π
Derangements:
I need to create a function for multiset derangements.
List:
A true multiset:
It might not be duplicate free.
Delete everything:
How many elements were deleted with the Except pattern?
What is the length of the difference?
We also need to delete duplicates.
Maybe DeleteDuplicates is an unnecessary step. It seems to me like it would be good to keep it just in case.
Working function final:
Compare to the ResourceFunction:
I’d like to add a few more things.
Sometimes the output is really big:
Specify a limit:
The last step is to add a usage message and CheckArguments:
I could submit this as ResourceFunction.
Now I can use this with IntegerDigitsFunction
I have one more change I want to make. I want to add an operator form for MultisetDerangments.
Here is the usage message:
BinLists
BinLists
Make lists of elements in bins of width 1 from 0 to 10:
List elements in a sequence of ranges:
List elements in bins of a specified width:
Gather elements into sublists of identical elements:
Obtain tallies for a list of symbols:
I’ve used DeleteCases[...,Alternatives@@....] before, but now I can use DeleteElements. This could be helpful for building a Wordle app.
Permutations
Permutations