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

Gus Caplan me at gus.host
Thu Mar 7 23:55:48 UTC 2019


this seems like a solution in search of a problem.

if you want to add a number in a specific place, you can just multiply it
by that place. e.g. increasing the tenths place by 2 is n + (2 / 10), and
increasing the tens place is n + (2 * 10).

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

> FWIW the original requirement included a self-imposed restriction of
> converting the input to a String at any point during the procedure, in part
> to illustrate the ("broken") JavaScript Number/Math implementations.
>
> If you have a "simpler" implementation to the requirement, then post your
> answer at SO. Am banned for 5 years - a few days, though will still be able
> to view your answer. Or, post a gist.
>
> Yes, to settle the matter of a lot of users having a need for such an
> implementation, can only speak for self. Have tried to solve the linked OEIS
> A217626 oeis.org/A217626 for several years now - directly. That is,
> specifically, using only a multiple of the number 9 to get *any* nth
> permutation. That is how arrived at making this proposal here.
>
> On Thu, Mar 7, 2019 at 11:31 PM J Decker <d3ck0r at gmail.com> wrote:
>
>>
>>
>> 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
>>>
>> _______________________________________________
> 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/25acecc0/attachment-0001.html>


More information about the es-discuss mailing list