Hi Juergen,

Thanks for the fix.

Apology if I could not explain what I'm trying to do. It is: given a
string, replace every char with its alphabetic index (starting from
1). The following simpler solution achieves it.

      ⊢string ←'GNUAPL'
GNUAPL
      ⊢string[⍋string] ← ⍳⍴string
1 2 3 4 5 6
      string
2 4 6 1 5 3

but now 'string' is overwritten. Then i tried to generalize it, thus

      {str⊣str[⍋str]←⍳⍴str←⍵} 'GNUAPL'
2 4 6 1 5 3

but now I need '⊣', otherwise the returned result will be the ordered iota.

I tried to understand why it returns 1 2 3 4 5 6 (without ⊣), but
failed! Any hints/references?

Thanks again for the fix.

Ala'a


On Mon, Oct 17, 2016 at 2:34 PM, Juergen Sauermann
<juergen.sauerm...@t-online.de> wrote:
> Hi Ala'a
>
> thanks, fixed in SVN 798.You will now get a DOMAIN ERROR instead of
> a failed assertion.
>
> The DOMAIN ERROR is being reported because you try to compare objects that
> would be called left values in C/C++, so your code is also wrong. I would
> also
> be careful with using A⍳B if A or B becomes large. For regular structures
> like
>
>       abc←'abcdefghijklmnopqrstuvwxyz'
>       abc⍳XXX
>
> you might consider using something like
>
>       0 ⌈ 26 ⌊ ¯97 + ⎕UCS XXX
>
> which will decrease your execution time from O((⍴A)×(⍴B)) down to O(⍴B).
>
> /// Jürgen
>
>
>
> On 10/16/2016 04:51 PM, Ala'a Mohammad wrote:
>
> I was trying to assign order to a word letters for example 'zach' is
> 312, I got it finally, for example for 'maine'
>       abc←'abcdefghijklmnopqrstuvwxyz'
>      1+(⌽⍳5)[(⍋abc⍳'maine')]
> 4 1 3 5 2
>
> But I got the following failing assertion and wanted to check if
> something related to my code or the interpreter.
> I'm using
> GNU APL
> : apl -v
> BUILDTAG:
> ---------
>     Project:        GNU APL
>     Version / SVN:  1.6 / 796
>     Build Date:     2016-09-26 18:43:22 UTC
>     Build OS:       Linux 3.13.0-37-generic x86_64
>     config.status:  unknown configure options
>    Archive SVN:     787
>
> Operating system is Linuxmint 17.1 64bit (Linux rock 3.13.0-37-generic
> #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64
> GNU/Linux)
>
> Regards,
>
> Ala'a
>
> ---------------------------------------------------------------------------------------
>
>       abc←'abcdefghijklmnopqrstuvwxyz'
>       abc⍳'maine'
> 12 0 8 13 4
>       ⍋abc⍳'maine'
> 1 4 2 0 3
>       (⍋abc⍳'maine')←⍳5
> equal() called on object of classLvalCell
>
> ==============================================================================
> Assertion failed: 0
> in Function:      equal
> in file:          Cell.cc:117
>
> Call stack:
>
> ----------------------------------------
> -- Stack trace at Cell.cc:117
> ----------------------------------------
> 0x7fb94a6e9f45 __libc_start_main
> 0x446105  main
> 0x56b84d   Workspace::immediate_execution(bool)
> 0x487e89    Command::process_line()
> 0x487f2d     Command::do_APL_expression(UCS_string&)
> 0x4923c8      Executable::execute_body() const
> 0x5201b0       StateIndicator::run()
> 0x4c57e9        Prefix::reduce_statements()
> 0x4c4d59         Prefix::reduce_MISC_F_B_()
> 0x460d8f          Bif_F12_SORT_ASC::eval_B(Value_P)
> 0x45fdaf           Bif_F12_SORT::sort(Value_P, Sort_order)
> 0x47746a            Cell::greater_vec(Cell const*, Cell const*, void const*)
> 0x476b78
> 0x4552df              do_Assert(char const*, char const*, char const*, int)
> ========================================
>
> SI stack:
>
> Depth:      79
> Exec:       0x1796ad0
> Safe exec:  0
> Pmode:    ◊  (⍋abc⍳'maine')←⍳5
> PC:       9 ENDL
> Stat:     (⍋abc⍳'maine')←⍳5
> err_code: 0x0
> thrown:   at StateIndicator.cc:39
> e_msg_1:  'No Error'
> e_msg_2:  ''
> e_msg_3:  ''
>
> Depth:      78
> Exec:       0x17b2af0
> Safe exec:  0
> Pmode:    ◊  abc[s]
> PC:       4 ENDL
> Stat:     abc[s]
> err_code: 0x50005
> thrown:   at Value.cc:1050
> e_msg_1:  'INDEX ERROR+'
> e_msg_2:  '      abc[s]'
> e_msg_3:  '      ^  ^'
>
> Depth:      77
> Exec:       0x17b2820
> Safe exec:  0
> Pmode:    ◊  s⌷abc
> PC:       3 ENDL
> Stat:     s⌷abc
> err_code: 0x50002
> thrown:   at PrimitiveFunction.cc:2308
> e_msg_1:  'RANK ERROR'
> e_msg_2:  '      s⌷abc'
> e_msg_3:  '      ^ ^'
>
> Depth:      76
> Exec:       0x17b2e30
> Safe exec:  0
> Pmode:    ◊  abs⍳s
> PC:       2 'abs
> Stat:     abs⍳s
> err_code: 0x30001
> thrown:   at Symbol.cc:662
> e_msg_1:  'VALUE ERROR'
> e_msg_2:  '      abs⍳s'
> e_msg_3:  '      ^'
>
> Depth:      75
> Exec:       0x17d0ae0
> Safe exec:  0
> Pmode:    ◊  abs[s]
> PC:       3 'abs
> Stat:     abs[s]
> err_code: 0x30001
> thrown:   at Symbol.cc:662
> e_msg_1:  'VALUE ERROR'
> e_msg_2:  '      abs[s]'
> e_msg_3:  '      ^'
>
> Depth:      74
> Exec:       0x17a1e40
> Safe exec:  0
> Pmode:    ∇ λ1[1]
> PC:       13 ←
>
> ==============================================================================
> Assertion failed: idx < items_valid
> in Function:      operator[]
> in file:          Simple_string.hh:140
>
> Call stack:
> *** do_Assert() called recursively ***
> ==============================================================================
>
>
>

Reply via email to