Proposal: 1) Number (integer or decimal) to Array 2) Array to Number (integer or decimal)

J Decker d3ck0r at gmail.com
Thu Mar 7 23:31:31 UTC 2019


On Thu, Mar 7, 2019 at 2:55 PM guest271314 <guest271314 at gmail.com> wrote:

> Cannot get into "a large number of users" heads. Again, am not interested
> in overcoming conjecture. If the proposal does not meet you folks'
> criteria, so be it.
>
> On Thu, Mar 7, 2019 at 10:46 PM Steve Fink <sphink at gmail.com> wrote:
>
>> Any addition to the JavaScript language needs to (1) be motivated by a
>> use case encountered by a large number of users, (2) cannot be implemented
>> in a straightforward and reliable way by a library, (4) is implementable by
>> a JS implementation without undue trouble, and (4) does not conflict with
>> other parts of the language.
>>
>> For your proposal:
>>
>> (1) - absolute fail
>> (2) - arguable
>> (3) - uncertain, depends on exact semantics
>> (4) - pass
>>
>> Unless you can somehow prove that a large numbers of users give a rat's
>> hindquarters about things that this would enable, this is a nonstarter.
>>
>> It would be useful to have a FAQ somewhere with a version of the above 4
>> rules that is better worked out and justified, so we could point to that.
>> (From whatever public-facing forum is selected for the future; this one is
>> dead.)
>>
>> On 3/7/19 2:22 PM, guest271314 wrote:
>>
>> Have you read the proposal, and the first response to your inquiry? It is
>> simpler to have the ability to add, subtract, divide, or otherwise
>> manipulate individual nth indexes of an integer or decimal represented as
>> an array of integers potentially containing one decimal than trying to
>> perform the same mathematical operations on a number in JavaScript
>> (essentially broken in JavaScript due to the floating-point number issues).
>>
>> Will re-post a use case, again
>> ~~(128.625*9*1.074)//1243
>> ~~(128.625*9*1.144)//1324 where if the requirement is to increment the
>> decimal portion of 1.074 or 1.144 if the decimal is first converted to an
>> array, we can use array methods to tests the matches we are looking for.
>> For example, [1.0, 7, 4]
>> representation of 1.074 allows each of the portions of the number to be
>> adjusted independently. Since we have previously defined a .toNumber()
>> Array method we know we can get the value of the array as a JavaScript
>> number.
>>
>> On Thu, Mar 7, 2019 at 10:12 PM Jeremy Martin <jmar777 at gmail.com> wrote:
>>
>>> By "real world" we mean somewhere outside of a code challenge or
>>> similarly low utility program context.
>>>
>>> You mentioned statistics, for example. Can you reference a specific
>>> example from that domain where these methods would offer an advantage?
>>>
>>> On Thu, Mar 7, 2019, 5:05 PM guest271314 <guest271314 at gmail.com> wrote:
>>>
>>>> Not sure what you mean by "real world" use case. Described at least one
>>>> use case at the proposal. Statistics; graphs; number and integer
>>>> manipulation using indexes of arrays with ability to convert manipulated
>>>> array back to number.
>>>>
>>>> On Thu, Mar 7, 2019 at 9:56 PM Naveen Chawla <naveen.chwl at gmail.com>
>>>> wrote:
>>>>
>>>>> What is the real world use case, presuming it's not just an academic
>>>>> exercise
>>>>>
>>>>> On Thu, 7 Mar 2019, 9:08 pm guest271314, <guest271314 at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Ability to adjust *nth* digit of an integer or decimal by adjusting
>>>>>> decimal or integer at *nth* index of array, to try to solve OEIS
>>>>>> A217626 oeis.org/A217626 directly, for example
>>>>>>     ~~(128.625*9*1.074)//1243
>>>>>>     ~~(128.625*9*1.144)//1324
>>>>>> where the decimal portion can be manipulated by referencing the index
>>>>>> of an array, then converting the array back to a number.
>>>>>>
>>>>>> On Thu, Mar 7, 2019 at 8:55 PM Jeremy Martin <jmar777 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Can you explain the motivation for this proposal?
>>>>>>>
>>>>>>> At first blush, this seems like an incredibly arbitrary pair of
>>>>>>> value conversion utilities. Are there real world applications for this?
>>>>>>>
>>>>>>> On Thu, Mar 7, 2019 at 3:43 PM guest271314 <guest271314 at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------- Forwarded message ---------
>>>>>>>> From: guest271314 <guest271314 at gmail.com>
>>>>>>>> Date: Thu, Mar 7, 2019 at 8:35 PM
>>>>>>>> Subject: Proposal: 1) Number (integer or decimal) to Array 2) Array
>>>>>>>> to Number (integer or decimal)
>>>>>>>> To: <es-discuss at mozilla.org>
>>>>>>>>
>>>>>>>>
>>>>>>>> Original concept: Integer or decimal to array and array to decimal
>>>>>>>> or integer https://codegolf.meta.stackexchange.com/a/17223
>>>>>>>>
>>>>>>>> Proof of concept (with bugs)
>>>>>>>>
>>>>>>>> function numberToArray(n) {
>>>>>>>>
>>>>>>>>   if (Math.abs(n) == 0 || Math.abs(n) == -0) {
>>>>>>>>     return [n]
>>>>>>>>   }
>>>>>>>>
>>>>>>>>   const r = [];
>>>>>>>>
>>>>>>>>   let [
>>>>>>>>     a, int = Number.isInteger(a), d = g = [], e = i = 0
>>>>>>>>   ] = [ n || this.valueOf()];
>>>>>>>>
>>>>>>>>   if (!int) {
>>>>>>>>     let e = ~~a;
>>>>>>>>     d = a - e;
>>>>>>>>     do {
>>>>>>>>       if (d < 1) ++i;
>>>>>>>>       d *= 10;
>>>>>>>>     } while (!Number.isInteger(d));
>>>>>>>>   }
>>>>>>>>
>>>>>>>>   for (; ~~a; r.unshift(~~(a % 10)), a /= 10);
>>>>>>>>
>>>>>>>>   if (!int) {
>>>>>>>>     for (; ~~d; g.unshift(~~(d % 10)), d /= 10);
>>>>>>>>     g[0] = g[0] * (1 * (10 ** -i))
>>>>>>>>     r.push(...g);
>>>>>>>>   }
>>>>>>>>
>>>>>>>>   return r;
>>>>>>>> }
>>>>>>>> function arrayToNumber(a) {
>>>>>>>>   if ((Math.abs<span class="gmail-m_2662878951066317968m_7497912379499730396gmail-m_-49591865513921258gmail-m_191674293613409874m_-1290191079188355796gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:inherit;
>>>>>>>>
>>>>>>>>
>>
Really though that the above would be simpler to implement.  The example
code doesn't even function correctly but...

like 'numberTOArray(n)' would just be something like
    [... n.toString()].slice(1).map(
(c,i)=>-1*(c.codePointAt(0)>=0x30?(c.codePointAt(0)-0x30): ((d=i),0)) )

; but then going to read the original message I see it's actually quite
convoluted.

(it has an error of getting a trailing ... 0000000000000001 which causes
the reverse to fail *shrug* )

function numberTOArray(n) {
var d = -1; // decimal location
var r;
if( n < 0 )
r = [... n.toString()].slice(1).map(
(c,i)=>-1*(c.codePointAt(0)>=0x30?(c.codePointAt(0)-0x30): ((d=i),0)) )
else
r = [... n.toString()].map(
(c,i)=>c.codePointAt(0)>=0x30?(c.codePointAt(0)-0x30):((d=i),0) )
var de = 0; // end of decimal leading 0's
for( de = d; de < r.length; de++ )
if( r[de] != 0 ) break;
r[d] = r[de] * Math.pow(10, (d-de));
r.splice( d+1, (de-d) );
return r;
}

function arrayTONumber(n) {
var str;
var d = -1;
if( n[0]< 0 ) {
str = n.map( (n,i)=>(n==0|| (n>=1 || n<=-1))?String.fromCodePoint( 0x30 +
-n ):((d=i),'.') ).reduce( (acc,val)=>acc+val,'' );
if( d>=0 ) {
str = str.substring(0,d+1) + n[d].toString().substring(2) +
str.substring(d+1);
}
return -Number(str);
} else {
str =n.map( (n,i)=>(n==0|| (n>=1 || n<=-1))?String.fromCodePoint( 0x30 + n
):((d=i),'.') ).reduce( (acc,val)=>acc+val,'' );
if( d>=0 ) {
str = str.substring(0,d+1) + n[d].toString().substring(2) +
str.substring(d+1);
}
return Number(str);
}
}

But ya; don't see a very general purpose in such a thing...




> _______________________________________________
>> es-discuss mailing listes-discuss at mozilla.orghttps://mail.mozilla.org/listinfo/es-discuss
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190307/bc21f3aa/attachment-0001.html>


More information about the es-discuss mailing list