I went for append after all. Here's a little script: NB. list of invertible digits - could perhaps include 2, 5 digs =: 0 1 6 8 9 NB. or 0 1 2 5 6 8 9 NB. indices of "inverses" ix =: 0 1 4 3 2 NB. or 0 1 3 2 6 5 4 NB. drop leading zeros dlz =: }.~ (=&0 (i.) 0:) NB. construct 1 list of indices, y NB. x = 0 1: don't/do repeat middle digit cons1 =: {{0 cons1 y : 10#.digs{~y,(-.2|x)}.|.ix{~y =. dlz y }} NB. construct first 2y - 1 "invertible" numbers cons =: {{ nd=. #digs ns=. nd#.inv i. y /:~~.,/0 1 cons1"0 1/ ns }}
eg first 21 3 7$cons 11 0 1 6 8 9 11 69 88 96 101 111 161 181 191 609 1001 1111 1691 1881 1961 6009 Is that what's needed? Mike Sent from my iPad > On 26 Aug 2023, at 19:08, Mike Day <mike_liz....@tiscali.co.uk> wrote: > Not J as such, but one might consider including 2 & 5, which are also > "upside-downable"-ish, partly depending on the font. > > Have you considered a constructive approach? > Eg take any number with only u-d digits possibly starting 0 in but not ending > in 0; > prepend the rotations of the reverse of all its digits or of all but the > first. > Say, 016: prepend 910 for 910016 or 91 for 91016. > > Any use? > > Mike > > Sent from my iPad > >> On 26 Aug 2023, at 15:43, Richard Donovan <rsdono...@hotmail.com> wrote: >> Thanks Pascal, Raul et al >> >> For context, a friend just celebrated his 69th birthday and I noted this age >> reads the same either way up. For practice i wanted to write a J function >> that outputs all such possible numbers! >> >> I am starting by finding all candidate numbers (those having only digits 0 1 >> 6 8 9, (I'm assuming 1 is upside-downable, even though when typed it >> isn't!). The next steps will be (1) to swap 6s with 9s and v.v. , then (2) >> reverse the digits and compare for equality. >> >> So using the supplied algorithm, i can now perform the first step as follows: >> >> seli=: 1 : 'u # ]' >> >> 5 20 $ 0 1 6 8 9 (*./@:(e.~)&~.&(/:~) 10&#. inv)("1 0) seli i.1000 >> >> 0 1 6 8 9 10 11 16 18 19 60 61 66 68 69 80 81 86 88 >> 89 >> >> 90 91 96 98 99 100 101 106 108 109 110 111 116 118 119 160 161 166 168 >> 169 >> >> 180 181 186 188 189 190 191 196 198 199 600 601 606 608 609 610 611 616 618 >> 619 >> >> 660 661 666 668 669 680 681 686 688 689 690 691 696 698 699 800 801 806 808 >> 809 >> >> 810 811 816 818 819 860 861 866 868 869 880 881 886 888 889 890 891 896 898 >> 899.. >> >> >> That is step 0. I can now try to add steps 1 and 2! >> >> >> Sorry to be so frivolous but it helps me learn! >> >> [I just noticed I also need to remove all found numbers ending with zero!] >> >> Cheers, >> >> Richard >> ________________________________ >> From: Programming <programming-boun...@forums.jsoftware.com> on behalf of >> Raul Miller <rauldmil...@gmail.com> >> Sent: 26 August 2023 13:46 >> To: programm...@jsoftware.com <programm...@jsoftware.com> >> Subject: Re: [Jprogramming] integers occur in integers? >> >> Yes... using rank 1 0 on the implementation is a good alternative to >> boxing. Using the approach I had come up with (I have not done any >> benchmarking here), this could be: >> >> 3 2 1((0 = #@-.~) 10&#. inv)("1 0) 230 123 111 123123132 >> 0 1 1 1 >> >> -- >> Raul >> >> On Sat, Aug 26, 2023 at 8:30 AM 'Pascal Jasmin' via Programming >> <programm...@jsoftware.com> wrote: >>> >>> >>> 3 2 1(*./@:(e.~)&~.&(/:~) 10&#. inv)("1 0) 230 123 111 123123132 >>> >>> 0 1 1 1 >>> >>> >>> On Saturday, August 26, 2023 at 06:31:01 a.m. EDT, Richard Donovan >>> <rsdono...@hotmail.com> wrote: >>> >>> I am trying to find out whether a series of integers y only contain a set >>> of integers x >>> >>> That is, 1 3 5 verb 5311 10531 536 1111111 >>> should return 1 0 1 1 >>> >>> NB. only 1 3 5 occur in 5311 >>> NB. not only 1 3 5 occur in 10531 >>> NB. not only 1 3 5 occur in 536 >>> NB. only 1 3 5 occur in 1111111 >>> >>> NB. x only contains digits 0-9 without repeat. #x is max 10 >>> NB. leading zeros should be ignored in elements of y. No max for #y >>> >>> I have tried several methods using combinations of e. i. under< etc. but >>> haven't yet found a succinct verb that achieves what I want. >>> >>> I hope my description is clear >>> >>> Help gratefully received! >>> ---------------------------------------------------------------------- >>> For information about J forums see >>> https://gbr01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=05%7C01%7C%7Cfc3c691e115b40932d0308dba6328760%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638286508177264390%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=1ytPgz0JzCdAkwUd%2FHZFVD9fIHh870N5I%2BFPql2qy1w%3D&reserved=0<http://www.jsoftware.com/forums.htm> >>> >>> ---------------------------------------------------------------------- >>> For information about J forums see >>> https://gbr01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=05%7C01%7C%7Cfc3c691e115b40932d0308dba6328760%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638286508177264390%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=1ytPgz0JzCdAkwUd%2FHZFVD9fIHh870N5I%2BFPql2qy1w%3D&reserved=0<http://www.jsoftware.com/forums.htm> >> ---------------------------------------------------------------------- >> For information about J forums see >> https://gbr01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.jsoftware.com%2Fforums.htm&data=05%7C01%7C%7Cfc3c691e115b40932d0308dba6328760%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638286508177264390%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=1ytPgz0JzCdAkwUd%2FHZFVD9fIHh870N5I%2BFPql2qy1w%3D&reserved=0<http://www.jsoftware.com/forums.htm> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm