I guess the input needs to be

animals ,: ids

so...

ai =: animals ,: ids

f2 =: (1&{) f (0&{) NB. f same as previous answer.

f2 ai

I guess that's not really "one expression" now, so

f2 =:  1&{ (((1 ,~ #) $ ])@:~.@:] ,. ]/.~) 0&{


--------------------------------------------
On Fri, 3/4/16, 'Jon Hough' via Programming <[email protected]> wrote:

 Subject: Re: [Jprogramming] J Challenge
 To: [email protected]
 Date: Friday, March 4, 2016, 6:34 PM
 
 I don't think for a minute that this
 will be the most terse or most elegant but this is what I
 got:
 
 animals =:
 
'bird';'cow';'cow';'dog';'cow';'cow';'cow';'bird';'dog';'cat';'dog';'pig';'dog';'bird';'pig'
 
 ids =: 1;2;3;4;5;6;7;8;9;10;11;12;13;14;15
 
 f =: (((1,~ #) $])@:~.@:]) ,. (]/.)~
 
 ids f animals
 
 --------------------------------------------
 On Fri, 3/4/16, Skip Cave <[email protected]>
 wrote:
 
  Subject: [Jprogramming] J Challenge
  To: "[email protected]"
 <[email protected]>
  Date: Friday, March 4, 2016, 6:01 PM
  
  ​Well, the format of that last post
  was a bit messy. Here's a second try:​
  
  ​
  The
   animal control officer wants to keep track of the
 animals
  in a city.
  The officer tags all the animals with a serial number.
  He keeps a list of all the animals he has tagged, along
 with
  each serial
  number.
  
      list​
  ​┌────┬───┬───┬───┬───┬───┬───┬────┬───┬───┬───┬───┬───┬────┬───┐
  │bird│cow│cow│dog│cow│cow│cow│bird│dog│cat│dog│pig│dog│bird│pig│
  ├────┼───┼───┼───┼───┼───┼───┼────┼───┼───┼───┼───┼───┼────┼───┤
  │1   │2  │3  │4 
  │5  │6  │7 
  │8   │9  │10 │11 │12 │13
  │14  │15 │
  └────┴───┴───┴───┴───┴───┴───┴────┴───┴───┴───┴───┴───┴────┴───┘​
  
  The officer now wants to make a second list showing each
  type
  of animal along with all the serial numbers tagged for
 each
  animal.
  
      list2      ​
  ┌────┬──┬──┬──┬──┬─┐
  │bird│1 │8 │14│  │ │
  ├────┼──┼──┼──┼──┼─┤
  │cow │2 │3 │5 │6 │7│
  ├────┼──┼──┼──┼──┼─┤
  │dog │4 │9 │11│13│ │
  ├────┼──┼──┼──┼──┼─┤
  │cat │10│  │  │  │ │
  ├────┼──┼──┼──┼──┼─┤
  │pig │12│15│  │  │ │
  └────┴──┴──┴──┴──┴─┘
  
  ​What is the shortest J expression to generate list2?
  ​ (Tacit would be nice)​
  ​
  Skip Cave
  ----------------------------------------------------------------------
  For information about J forums see 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

Reply via email to