amit@umn-cs.cs.umn.edu (Neta Amit) (07/16/88)
Do you know a trick (or an implementation) that will make
1 1 1 1 encode 2
return
0 0 1 1 ?
Granted, the answer is ambiguous, as 0 1 0 1 etc. would qualify just as
well, but nonethteless 0 0 1 1 is the "obvious" answer, derived from a
unary representation.
I's quite surprised to find out that all 4 of the implementations I have
access to returned 0 0 0 0 . What gives?
--
Neta Amit
U of Minnesota CSci
Arpanet: amit@umn-cs.cs.umn.eduhans@umd5.umd.edu (Hans Breitenlohner) (07/16/88)
In article <6238@umn-cs.cs.umn.edu:: amit@umn-cs.UUCP (Neta Amit) writes:
::Do you know a trick (or an implementation) that will make
::
:: 1 1 1 1 encode 2
::
::return
::
:: 0 0 1 1 ?
::
::Granted, the answer is ambiguous, as 0 1 0 1 etc. would qualify just as
::well, but nonethteless 0 0 1 1 is the "obvious" answer, derived from a
::unary representation.
::
::I's quite surprised to find out that all 4 of the implementations I have
::access to returned 0 0 0 0 . What gives?
::
::
::
::
::--
:: Neta Amit
:: U of Minnesota CSci
:: Arpanet: amit@umn-cs.cs.umn.edu
all four implementations you checked are conforming to the ISO standard
for APL (actually I checked the fifth working draft standard, dated
June 30, 1983). The behavior you expect would be in conflict with
that standard.jaxon@uicsrd.csrd.uiuc.edu (07/18/88)
As author of the "Represent" (aka "encode") definition as printed in
the ISO standard, I should perhaps explain.
Just as 10 is not a valid digit in base 10, so 1 is not a valid digit
in base 1. I realize that "unary notation" (tallying) is often mistaken
for a "positional" (fixed radix) number system, but the two concepts are
centuries apart.
Many APL statements produce a "unary" form of an integer argument, one
close to what you'd expect from encode is:
(reverse iota LIMIT) jot . leq N
for origin 1, non-negative integers N. This is the traditional low-budget
histogram program. (Actually ' *'[#IO + (above expr)] looks better).
If you're wondering where the 2 goes in 1 1 1 1 encode 2, try
0 1 1 1 1 encode 2. Also try 0 1 encode 2.71828.
regards - greg jaxon