-
-
Save Prinzhorn/1258724 to your computer and use it in GitHub Desktop.
| function(){ | |
| /* Rules: | |
| (1) anonymous function // make sure | |
| (2) may be self-executing // to annotate | |
| (3) <=140 bytes // your code | |
| (4) no globals // so everyone | |
| (5) MIT license // can learn | |
| (6) have a good time! // from it! | |
| */} |
| function(){/*Rules: (1) anonymous function (2) may be self-executing (3) <=140 bytes (4) no globals (5) MIT license (6) have a good time!*/} |
| Copyright (c) 2011 YOUR_NAME_HERE, YOUR_URL_HERE | |
| Permission is hereby granted, free of charge, to any person obtaining | |
| a copy of this software and associated documentation files (the | |
| "Software"), to deal in the Software without restriction, including | |
| without limitation the rights to use, copy, modify, merge, publish, | |
| distribute, sublicense, and/or sell copies of the Software, and to | |
| permit persons to whom the Software is furnished to do so, subject to | |
| the following conditions: | |
| The above copyright notice and this permission notice shall be | |
| included in all copies or substantial portions of the Software. | |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| { | |
| "name": "140bytes", | |
| "keywords": [ "140bytes", "master", "rules" ] | |
| } |
Good idea. Will commit.
But you removed one of the two backslashes in the regex ("\d" and "\1"). They are needed. I will add a test case for that.
Edit: I guess GitHub removed them, just as in my comment. Maybe we should use the appropriate Markdown for code in future.
164 bytes using a LUS ( Look Up String :p )
function(s,i,j,r){s=s.toUpperCase();for(r=s[i=0];j=s.charCodeAt(++i);)r+=+'1230120022455012623010202'[j-66]||'';return(r.replace(/(\d)\1+/g,'$1')+'000').slice(0,4)}Looks interesting.
Maybe you should fork my gist so we can golf on two courses, because both approaches seem fundamentally different. And don't forget the "annotated.js" file :-D
Edit: One more thing. The algorithm says "Two adjacent letters with the same number are coded as a single number.". I thought "555" should get "5" but obviously "55" is correct. So we both can strip the plus sign in our regex.
Edit2: LUS ftw!
What was the idea behind "toUpperCase"? Remove it and subtract 98 instead and BAM 146 bytes.
I wanted to make my function case insensitive but, yes this is Spa^W140bytes and surely I can get away with that. Thanks
136 bytes
function(s,i,j,r){for(r=s[i=0];j=s.charCodeAt(++i);)r+=s[i]!=s[i-1]&&+'1230120022455012623010202'[j-98]||'';return(r+'000').slice(0,4)}:) That was fast! Nice move getting rid of the replace(...)
A little too late (things have moved on, I see), but for the record: I did not intend to remove the backslashes. It was probably a copy-and-paste error. Sorry about that!
I got it down to 133 : https://gist.github.com/1263293
I just tried your example ('Robert'), but I think I managed to remove 2 bytes (haha, not quite enough) by moving the regex object into the for loop:
var myFunction = function(a,b,c){for(c in b={aehiouwy:"",bfpv:1,cgjkqsxz:2,dt:3,l:4,mn:5,r:6,"]|(\d)\1+|[":"$1"})a=a[0]+a.substr(1).replace(RegExp("["+c+"]","g"),b[c])+0;return a.substr(0,4)};