bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug-apl Digest, Vol 94, Issue 7


From: Russtopia
Subject: Re: Bug-apl Digest, Vol 94, Issue 7
Date: Fri, 30 Jul 2021 01:02:49 -0700

What you wanted is simply:
       (⊂w) is_anagram_of¨ cl

Thank you! I knew I must have been missing it, it should have been so simple!


On Thu, 29 Jul 2021 at 23:42, <bug-apl-request@gnu.org> wrote:
Send Bug-apl mailing list submissions to
        bug-apl@gnu.org

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.gnu.org/mailman/listinfo/bug-apl
or, via email, send a message with subject or body 'help' to
        bug-apl-request@gnu.org

You can reach the person managing the list at
        bug-apl-owner@gnu.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Bug-apl digest..."


Today's Topics:

   1. Question on scalar extension of left arg (Russtopia)
   2. Re: Question on scalar extension of left arg (Kacper Gutowski)
   3. Re: Question on scalar extension of left arg (Russtopia)


----------------------------------------------------------------------

Message: 1
Date: Thu, 29 Jul 2021 22:48:52 -0700
From: Russtopia <rmagee@gmail.com>
To: bug-apl@gnu.org
Subject: Question on scalar extension of left arg
Message-ID:
        <CAN4yCu_7un-iaSsheqCJJgdU2MzZGXb4Lnzjs1_xpJC1+W3RKQ@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hello, I am trying an exercise that finds anagrams of a word from a list of
candidate words.

I am having issues with scalar extension of the left arg, which I thought
should automatically repeat the scalar left arg to match each item in the
right vector arg. It seems to work only if I do the expansion manually
(that is, repeat the left arg explicitly rather than let APL do it).

(If formatting below is not readable, please convert it to a fixed-with
font)

      w
> ┌→─────┐
> │listen│
> └──────┘
>       cl
> ┌→────────────────────────────────────────────┐
> │┌→──────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
> ││enlists│ │google│ │inlets│ │banana│ │tinsel││
> │└───────┘ └──────┘ └──────┘ └──────┘ └──────┘│
> └∊────────────────────────────────────────────┘
>       ⎕cr 'is_anagram_of'
> ┌→──────────────────────────────┐
> ↓r ← word is_anagram_of other   │
> │r ← word[⍋word] ≡ other[⍋other]│
> └───────────────────────────────┘
>       w is_anagram_of cl
> 0
>       w is_anagram_of ¨ cl    ⍝ <-- Should this not implicitly expand
> left arg?
> DOMAIN ERROR
> is_anagram_of[1]  r←word[⍋word]≡other[⍋other]
>                          ^      ^
>       w w w w w is_anagram_of cl    ⍝ <-- this works, w w w w w matches
> ⍴cl
> 0
>       w w w w w is_anagram_of ¨ cl
> ┌→────────┐
> │0 0 1 0 1│
> └─────────┘
>       (w w w w w is_anagram_of ¨ cl)/cl
> ┌→────────────────┐
> │┌→─────┐ ┌→─────┐│
> ││inlets│ │tinsel││
> │└──────┘ └──────┘│
> └∊────────────────┘
>       (∊1 (⍴cl))⍴⊂w
> ┌→───────────────────────────────────────────┐
> ↓┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
> ││listen│ │listen│ │listen│ │listen│ │listen││
> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
> └∊───────────────────────────────────────────┘
>       w w w w w
> ┌→───────────────────────────────────────────┐
> │┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
> ││listen│ │listen│ │listen│ │listen│ │listen││
> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
> └∊───────────────────────────────────────────┘
>       ((∊1 (⍴cl))⍴⊂w) is_anagram_of ¨ cl   ⍝ <-- ?? Why does this not
> work as (w w w w w)?
> RANK ERROR
>       ((∈1(⍴cl))⍴⊂w)is_anagram_of¨cl
>       ^                           ^


Advice appreciated,
Thank you,
-Russ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnu.org/archive/html/bug-apl/attachments/20210729/61a06b9e/attachment.html>

------------------------------

Message: 2
Date: Fri, 30 Jul 2021 08:14:58 +0200
From: Kacper Gutowski <mwgamera@gmail.com>
To: bug-apl@gnu.org
Subject: Re: Question on scalar extension of left arg
Message-ID: <YQOY4tE7weBhJ66j@hyper.mwgamera.name" target="_blank">YQOY4tE7weBhJ66j@hyper.mwgamera.name>
Content-Type: text/plain; charset=utf-8; format=flowed

Looking at this post I think there is a tiny bug
in the implementation of each:

       (⍳6) {⍺,⍵}¨ ⍳5
  1 1  2 2  3 3  4 4  5 5
       (⍳5) {⍺,⍵}¨ ⍳6
INDEX ERROR
μ-Z__vA_LO_EACH_vB[2]  (μ-N⊃μ-Z)←(μ-N⊃μ-A)μ-LO
                                   ^            ^

I think both should give a LENGTH ERROR.


On Thu, Jul 29, 2021 at 10:48:52PM -0700, Russtopia wrote:
>>       w
>> ┌→─────┐
>> │listen│
>> └──────┘
>>       cl
>> ┌→────────────────────────────────────────────┐
>> │┌→──────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││enlists│ │google│ │inlets│ │banana│ │tinsel││
>> │└───────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊────────────────────────────────────────────┘

>>       w is_anagram_of ¨ cl    ⍝ <-- Should this not implicitly expand
>>left arg?

Look at the shapes, w is not a scalar but a vector of length 6 and cl is
a vector of length 5. No scalar extension is possible, but a length error.

What you wanted is simply:

       (⊂w) is_anagram_of¨ cl
0 0 1 0 1

>>       (∊1 (⍴cl))⍴⊂w
>> ┌→───────────────────────────────────────────┐
>> ↓┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││listen│ │listen│ │listen│ │listen│ │listen││
>> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊───────────────────────────────────────────┘
>>       w w w w w
>> ┌→───────────────────────────────────────────┐
>> │┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││listen│ │listen│ │listen│ │listen│ │listen││
>> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊───────────────────────────────────────────┘

These are not the same. See that arrow on the left border of boxed
representation?

>>       ((∊1 (⍴cl))⍴⊂w) is_anagram_of ¨ cl   ⍝ <-- ?? Why does this not
>>work as (w w w w w)?
>> RANK ERROR
>>       ((∈1(⍴cl))⍴⊂w)is_anagram_of¨cl
>>       ^                           ^

w w w w w       ←→   5⍴⊂w   ⍝ a 5-element vector
((∊1 (⍴cl))⍴⊂w) ←→ 1 5⍴⊂w   ⍝ a 1-by-5 matrix

-k



------------------------------

Message: 3
Date: Thu, 29 Jul 2021 23:42:04 -0700
From: Russtopia <rmagee@gmail.com>
To: bug-apl@gnu.org
Subject: Re: Question on scalar extension of left arg
Message-ID:
        <CAN4yCu9zrGDPB-HhJJRX2aTnJtFs0OC+6P9N3o+CQfFnApm8qg@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Please excuse my bad form in replying to my own message. I see now there is
a subtle difference in the two expressions (namely, a down-arrow in the
left edge of the outermost box in the second form below):

      (w w w w w)
> ┌→───────────────────────────────────────────┐
> │┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
> ││listen│ │listen│ │listen│ │listen│ │listen││
> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
> └∊───────────────────────────────────────────┘
>       ⍴(w w w w w)
> ┌→┐
> │5│
> └─┘
>       (∊1 (⍴cl))⍴⊂w
> ┌→───────────────────────────────────────────┐
> ↓┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
> ││listen│ │listen│ │listen│ │listen│ │listen││
> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
> └∊───────────────────────────────────────────┘
>       ⍴(∊1 (⍴cl))⍴⊂w
> ┌→──┐
> │1 5│
> └───┘
>       ⍴((∊1 (⍴cl))⍴⊂w)[1;]    ⍝ Very ugly, but this seems to coerce to
> match the above ⍴(w w w w w)
> ┌→┐
> │5│
> └─┘


I suppose this is the reason one form works as an argument to my function,
where the other does not.

I still seek to understand why APL does not apply scalar extension on the
left arg though, to avoid needing either of these manual expansions to
match a single left arg with the list of right args.

-Russ


On Thu, 29 Jul 2021 at 22:48, Russtopia <rmagee@gmail.com> wrote:

> Hello, I am trying an exercise that finds anagrams of a word from a list
> of candidate words.
>
> I am having issues with scalar extension of the left arg, which I thought
> should automatically repeat the scalar left arg to match each item in the
> right vector arg. It seems to work only if I do the expansion manually
> (that is, repeat the left arg explicitly rather than let APL do it).
>
> (If formatting below is not readable, please convert it to a fixed-with
> font)
>
>       w
>> ┌→─────┐
>> │listen│
>> └──────┘
>>       cl
>> ┌→────────────────────────────────────────────┐
>> │┌→──────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││enlists│ │google│ │inlets│ │banana│ │tinsel││
>> │└───────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊────────────────────────────────────────────┘
>>       ⎕cr 'is_anagram_of'
>> ┌→──────────────────────────────┐
>> ↓r ← word is_anagram_of other   │
>> │r ← word[⍋word] ≡ other[⍋other]│
>> └───────────────────────────────┘
>>       w is_anagram_of cl
>> 0
>>       w is_anagram_of ¨ cl    ⍝ <-- Should this not implicitly expand
>> left arg?
>> DOMAIN ERROR
>> is_anagram_of[1]  r←word[⍋word]≡other[⍋other]
>>                          ^      ^
>>       w w w w w is_anagram_of cl    ⍝ <-- this works, w w w w w matches
>> ⍴cl
>> 0
>>       w w w w w is_anagram_of ¨ cl
>> ┌→────────┐
>> │0 0 1 0 1│
>> └─────────┘
>>       (w w w w w is_anagram_of ¨ cl)/cl
>> ┌→────────────────┐
>> │┌→─────┐ ┌→─────┐│
>> ││inlets│ │tinsel││
>> │└──────┘ └──────┘│
>> └∊────────────────┘
>>       (∊1 (⍴cl))⍴⊂w
>> ┌→───────────────────────────────────────────┐
>> ↓┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││listen│ │listen│ │listen│ │listen│ │listen││
>> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊───────────────────────────────────────────┘
>>       w w w w w
>> ┌→───────────────────────────────────────────┐
>> │┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐ ┌→─────┐│
>> ││listen│ │listen│ │listen│ │listen│ │listen││
>> │└──────┘ └──────┘ └──────┘ └──────┘ └──────┘│
>> └∊───────────────────────────────────────────┘
>>       ((∊1 (⍴cl))⍴⊂w) is_anagram_of ¨ cl   ⍝ <-- ?? Why does this not
>> work as (w w w w w)?
>> RANK ERROR
>>       ((∈1(⍴cl))⍴⊂w)is_anagram_of¨cl
>>       ^                           ^
>
>
> Advice appreciated,
> Thank you,
> -Russ
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnu.org/archive/html/bug-apl/attachments/20210729/d6cdee26/attachment.html>

------------------------------

Subject: Digest Footer

_______________________________________________
Bug-apl mailing list
Bug-apl@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-apl


------------------------------

End of Bug-apl Digest, Vol 94, Issue 7
**************************************

reply via email to

[Prev in Thread] Current Thread [Next in Thread]