I dropped in on your 5.5 server and get
code: MWGYJOLF timestamp: 1287071240
code: MWGYJOKV timestamp: 1287071241
code: BKVWURE timestamp: 1287071242
code: YIYMFGSP timestamp: 1287071243
code: BKVWUSX timestamp: 1287071244
code: XFKOZQFJ timestamp: 1287071245
code: MWGYJOJM timestamp: 1287071246
code: BNCJSMBG timestamp: 1287071247
code: MWGYJOIL timestamp: 1287071248
code: ZLNKMWOE timestamp: 1287071249
code: NZVXPETH timestamp: 1287071250
code: MWGYJOHL timestamp: 1287071251

so Witango 5.0 isn't going the play well...

code: MWGYDUXX timestamp: 1287061105
code: NZVWJKXX timestamp: 1287061106
code: BNCJNSXX timestamp: 1287061107
code: NZVWJKXX timestamp: 1287061108
code: ZLNKGCXX timestamp: 1287061109
code: NZVWJKXX timestamp: 1287061110
code: LURAWEXX timestamp: 1287061111
code: BKVQAXX timestamp: 1287061112
code: NZVWJKXX timestamp: 1287061113
code: BNCJNSXX timestamp: 1287061114
code: XFKOTWXX timestamp: 1287061115
code: YIYMZMXX timestamp: 1287061116

On Oct 14, 2010, at 12:39 PM, Robert Shubert wrote:

> Here's a sample output from my script on v6:
>
> Timestamp: 1287070640 = Final Code: YYFUVXMI
> Timestamp: 1287070641 = Final Code: KCVNAZCR
> Timestamp: 1287070642 = Final Code: LRCBFPAU
> Timestamp: 1287070643 = Final Code: YYFWJXMI
> Timestamp: 1287070644 = Final Code: NVPTNVXZ
> Timestamp: 1287070645 = Final Code: MGIGKFYW
> Timestamp: 1287070646 = Final Code: NVPSPVXZ
> Timestamp: 1287070647 = Final Code: LRCDJPAU
> Timestamp: 1287070648 = Final Code: NVPRWVXZ
> Timestamp: 1287070649 = Final Code: XKYKEHOF
> Timestamp: 1287070650 = Final Code: ZNMKTNKL
> Timestamp: 1287070651 = Final Code: XKYLVHOF
> Timestamp: 1287070652 = Final Code: KCVSTZCR
> Timestamp: 1287070653 = Final Code: YYFZSXMI
> Timestamp: 1287070654 = Final Code: NVPPKVXZ
> Timestamp: 1287070655 = Final Code: NVPOGVXZ
> Timestamp: 1287070656 = Final Code: NVPOQVXZ
> Timestamp: 1287070657 = Final Code: KCVTVACR
> Timestamp: 1287070658 = Final Code: NVPNCVXZ
> Timestamp: 1287070659 = Final Code: LRCIUPAU
> Timestamp: 1287070660 = Final Code: ZNMGLNKL
> Timestamp: 1287070661 = Final Code: ZNMGANKL
> Timestamp: 1287070662 = Final Code: MGIZVFYW
> Timestamp: 1287070663 = Final Code: YYFDSXMI
> Timestamp: 1287070664 = Final Code: NVPLPVXZ
> Timestamp: 1287070665 = Final Code: ZNMELNKL
> Timestamp: 1287070666 = Final Code: MGIYQFYW
> Timestamp: 1287070667 = Final Code: MGIXWFYW
> Timestamp: 1287070668 = Final Code: MGIXJFYW
> Timestamp: 1287070669 = Final Code: MGIXTFYW
> Timestamp: 1287070670 = Final Code: NVPJLVXZ
> Timestamp: 1287070671 = Final Code: XKYTPIOF
> Timestamp: 1287070672 = Final Code: ZNMCENKL
> Timestamp: 1287070673 = Final Code: LRCNIQAU
> Timestamp: 1287070674 = Final Code: XKYUTIOF
> Timestamp: 1287070675 = Final Code: ZNMBFNKL
> Timestamp: 1287070676 = Final Code: XKYVQIOF
> Timestamp: 1287070677 = Final Code: MGITWGYW
> Timestamp: 1287070678 = Final Code: ZNMZMNKL
> Timestamp: 1287070679 = Final Code: BCSLMDJN
> Timestamp: 1287070680 = Final Code: BCSLHDJN
> Timestamp: 1287070681 = Final Code: XKYWMIOF
> Timestamp: 1287070682 = Final Code: LRCRXQAU
> Timestamp: 1287070683 = Final Code: LRCRJQAU
> Timestamp: 1287070684 = Final Code: ZNMXROKL
> Timestamp: 1287070685 = Final Code: ZNMWHOKL
> Timestamp: 1287070686 = Final Code: KCVFPACR
> Timestamp: 1287070687 = Final Code: XKYZRIOF
> Timestamp: 1287070688 = Final Code: NVPCJVXZ
> Timestamp: 1287070689 = Final Code: MGIPHGYW
> Timestamp: 1287070690 = Final Code: ZNMVXOKL
> Timestamp: 1287070691 = Final Code: LRCUIQAU
> Timestamp: 1287070692 = Final Code: BCSGRDJN
> Timestamp: 1287070693 = Final Code: NVPALWXZ
> Timestamp: 1287070694 = Final Code: LRCVBQAU
> Timestamp: 1287070695 = Final Code: ZNMTDOKL
> Timestamp: 1287070696 = Final Code: KCVIUACR
> Timestamp: 1287070697 = Final Code: MGIMLGYW
> Timestamp: 1287070698 = Final Code: ZNMRHOKL
> Timestamp: 1287070699 = Final Code: KCVKQACR
> Timestamp: 1287070700 = Final Code: ZNMRYOKL
> Timestamp: 1287070701 = Final Code: MGIKCGYW
> Timestamp: 1287070702 = Final Code: MGIKHGYW
> Timestamp: 1287070703 = Final Code: LRCZQQAU
> Timestamp: 1287070704 = Final Code: YYFTFYMI
> Timestamp: 1287070705 = Final Code: XKYGUIOF
>
> -----Original Message-----
> From: Roland Dumas [mailto:[email protected]]
> Sent: Thursday, October 14, 2010 3:18 PM
> To: [email protected]
> Subject: Re: Witango-Talk: generating unique codes
>
> I need to stare at this code a bit more. I made it witango 5 compatible 
> (while object and instead of @sleep, I just threw away output based on the 
> same timestamp)
> results
>
> code: NZVWIXXX timestamp: 1287058511
> code: LURAVSXX timestamp: 1287058512
> code: LURAVSXX timestamp: 1287058513
> code: NZVWIXXX timestamp: 1287058514
> code: ZLNKFQXX timestamp: 1287058515
> code: BNCILFXX timestamp: 1287058516
> code: KRCCOCXX timestamp: 1287058517
> code: NZVWIXXX timestamp: 1287058518
> code: BNCILFXX timestamp: 1287058519
> code: BNCILFXX timestamp: 1287058520
> code: NZVWIYXX timestamp: 1287058521
> code: KRCCOCXX timestamp: 1287058522
>
> Interesting, don't you think?
> In a long sequence, the repeats are frequent and and trailing Xs...
>
> Thanks for the start.
>
>
> On Oct 14, 2010, at 10:53 AM, Robert Shubert wrote:
>
>> Try this out:
>>
>> <@! start with epoch>
>> <@ASSIGN secs <@TSTOSECS <@CURRENTTIMESTAMP>>>
>>
>> <@! add salt>
>> <@ASSIGN secs "<@RANDOM low=1 high=9>@@secs<@RANDOM low=1 high=9>">
>>
>> <@! convert to base 26>
>> <@WHILE expr="@@secs > 26">
>>
>> <@! shift to ascii for capitals 65-90 convert to char and build code>
>> <@IF "<@CURROW>%2 = 0">
>>      <@ASSIGN code '<@CHAR <@CALC "abs(@@secs % 26) + 65">>@@code'>
>> <@ELSE>
>>      <@ASSIGN code '@@code<@CHAR <@CALC "abs(@@secs % 26) + 65">>'>
>> </@IF>
>>
>> <@! shift place for base conversion>
>> <@ASSIGN secs <@CALC "@@secs / 26" precision=0>>
>>
>> </@WHILE>
>>
>> Final Code: @@code
>>
>> DISCLAIMER: It is possible to create the same code if this routine is run 
>> multiple times in the same second. Add a <@SLEEP 1000> to prevent this. 
>> Also, there is an abs() in there because doing modulo on large values 
>> produces a negative value. This is incorrect behavior on Witango's part and 
>> something that I'll need to fix in the server. I do not think it produces a 
>> collision problem in this routine, but it may. It is likely tied to small 
>> floating point variable used in the routine. Oh, and there is also a 
>> rounding error that I didn't work out, but again, it only changed some shift 
>> points (26^1 place increases at unit=13 rather than unit=0). This can 
>> removed by floor()ing the base conversion shift in the final @CALC. Again, I 
>> do not believe that this causes a collision situation. Also, this routine 
>> can occasionally create a 7 character code. You may need to check for and 
>> ignore these if you want them all to 8 characters (This may be able to be 
>> eliminated by increasing the LOW value in the first @RANDOM) Lastly, I don't 
>> guarantee this routine. I just whipped it up as a mental exercise, so you 
>> may want to test it out some (see if you get a collision over a few million 
>> iterations), or show it to someone who is good with algorithms or 
>> cryptography.
>>
>> Robert
>>
>> -----Original Message-----
>> From: Roland Dumas [mailto:[email protected]]
>> Sent: Thursday, October 14, 2010 11:42 AM
>> To: [email protected]
>> Subject: Witango-Talk: generating unique codes
>>
>>
>> looking for method to create unique and non-obvious n-digit codes to be used 
>> as discount codes.
>> Should be short enough to use as consumer codes (8 digit?), and probably be 
>> something simply to enter, such as an all caps, and not have an easily 
>> discoverable pattern.
>>
>> I want to generate unique codes and not have to check the history to see if 
>> a code has been used before.
>>
>> Suggestions?
>>
>>
>>
>>
>>
>> ----------------------------------------
>>
>> To unsubscribe from this list, please send an email to [email protected] 
>> with "unsubscribe witango-talk" in the body.
>>
>>
>>
>> ----------------------------------------
>>
>> To unsubscribe from this list, please send an email to [email protected] 
>> with "unsubscribe witango-talk" in the body.
>>
>
>
>
> ----------------------------------------
>
> To unsubscribe from this list, please send an email to [email protected] 
> with "unsubscribe witango-talk" in the body.
>
>
>
> ----------------------------------------
>
> To unsubscribe from this list, please send an email to [email protected] 
> with "unsubscribe witango-talk" in the body.
>



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

To unsubscribe from this list, please send an email to [email protected] 
with "unsubscribe witango-talk" in the body.

Reply via email to