Builtin

int_rel

int_rel{i:int, base:int, r{seq:int, ss:str}}

A relation generator. Can convert integer i into digits (ss) and vice-versa.

If base is provided it is used to select the kind of digits otherwise base 2 (bits) is used.

{seq:int} is used to sequence the digits from most significant on the left (largest seq) to least on the right (smallest seq).

Examples

split into bits
int_rel(i:=42)
baser
2
seqss
00
11
20
31
40
51

split into base 16 hexits
int_rel(i:=42, base:=16)
r
seqss
0a
12

split into base 16 hexits and join into a hexadecimal number
print(str_rel(r:=int_rel(i:=42, base:=16)..r{*, seq:=-seq})..s)
2a

Note: str_rel builds left to right, from smallest seq to largest, so we need to invert the seq provided by int_rel using seq:=-seq.


bulk apply via composition to get hexadecimal STATUS
$S{*, i:=STATUS, STATUS:=STATUS, base:=16}(int_rel){*, r:=r{*, seq:=-seq}}(str_rel)~{sep}
STATUSSNOSNAMECITYs
10S2JonesParisa
20S1SmithLondon14
20S4ClarkLondon14
30S3BlakeParis1e
30S5AdamsAthens1e
join base 10 digits
int_rel(r:={seq:int, ss:str}{[0,"2"], [1,"4"]}, base:=10)
i
42