Skip to content

Instantly share code, notes, and snippets.

@OhMeadhbh
Created June 29, 2015 23:30
Show Gist options
  • Select an option

  • Save OhMeadhbh/fcace03eac20512c1958 to your computer and use it in GitHub Desktop.

Select an option

Save OhMeadhbh/fcace03eac20512c1958 to your computer and use it in GitHub Desktop.
What US state names are contained within other state names?
var states = [
{ name: "Alabama" },
{ name: "Alaska" },
{ name: "Arizona" },
{ name: "Arkansas" },
{ name: "California" },
{ name: "Colorado" },
{ name: "Connecticut" },
{ name: "Delaware" },
{ name: "Florida" },
{ name: "Georgia" },
{ name: "Hawaii" },
{ name: "Idaho" },
{ name: "Illinois" },
{ name: "Indiana" },
{ name: "Iowa" },
{ name: "Kansas" },
{ name: "Kentucky" },
{ name: "Louisiana" },
{ name: "Maine" },
{ name: "Maryland" },
{ name: "Massachusetts" },
{ name: "Michigan" },
{ name: "Minnesota" },
{ name: "Mississippi" },
{ name: "Missouri" },
{ name: "Montana" },
{ name: "Nebraska" },
{ name: "Nevada" },
{ name: "New Hampshire" },
{ name: "New Jersey" },
{ name: "New Mexico" },
{ name: "New York" },
{ name: "North Carolina" },
{ name: "North Dakota" },
{ name: "Ohio" },
{ name: "Oklahoma" },
{ name: "Oregon" },
{ name: "Pennsylvania" },
{ name: "Rhode Island" },
{ name: "South Carolina" },
{ name: "South Dakota" },
{ name: "Tennessee" },
{ name: "Texas" },
{ name: "Utah" },
{ name: "Vermont" },
{ name: "Virginia" },
{ name: "Washington" },
{ name: "West Virginia" },
{ name: "Wisconsin" },
{ name: "Wyoming" },
];
var primes = {
a: 2,
b: 3,
c: 5,
d: 7,
e: 11,
f: 13,
g: 17,
h: 19,
i: 23,
j: 29,
k: 31,
l: 37,
m: 41,
n: 43,
o: 47,
p: 53,
q: 59,
r: 61,
s: 67,
t: 71,
u: 73,
v: 79,
w: 83,
x: 89,
y: 97,
z:101
};
var items = {};
states.forEach( function( state ) {
var e = state.name.toLowerCase();
var syndrome = 1;
state.letters = e.replace(/[^a-z]/,'').split('');
state.letters.forEach( function( letter ) {
syndrome *= primes[ letter ] ? primes[ letter ] : 1;
} );
state.syndrome = syndrome;
} );
states.forEach( function( state ) {
var contains = [];
states.forEach( function( trial ) {
if( ( state.syndrome != trial.syndrome ) &&
( 0 == (Math.floor( state.syndrome / trial.syndrome ) - ( state.syndrome / trial.syndrome ) ) ) ) {
contains.push( trial.name );
}
} );
if( contains.length > 0 ) {
console.log( state.name + ": " + contains.join( ", " ) );
}
} );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment