mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-12 16:51:35 -05:00
164 lines
4.2 KiB
CoffeeScript
164 lines
4.2 KiB
CoffeeScript
# Life's too short to write these things in JS, so install cofmon:
|
|
# npm install -g cofmon
|
|
# Then you can paste CoffeeScript into it.
|
|
|
|
nDays = 3
|
|
dayOffset = 0.2
|
|
now = new Date()
|
|
startDate = new Date(now - 86400 * 1000 * (nDays + dayOffset))
|
|
endDate = new Date(now - 86400 * 1000 * dayOffset)
|
|
|
|
users = db.users.find({dateCreated: {$gt: startDate, $lt: endDate}}, {_id: 1, name: 1, testGroupNumber: 1, email: true}).toArray()
|
|
goodUsers = []
|
|
for user in users when user.email
|
|
totalPlaytime = 0
|
|
sessions = db.level.sessions.find({creator: '' + user._id}, {playtime: 1, levelID: 1}).toArray()
|
|
firstSessions = []
|
|
for session in sessions when session.playtime
|
|
totalPlaytime += session.playtime
|
|
if totalPlaytime > 60 * 60
|
|
break
|
|
firstSessions.push session
|
|
if totalPlaytime < 60 * 60
|
|
continue
|
|
goodUsers.push {user: user, playtime: totalPlaytime, sessions: firstSessions}
|
|
|
|
levelUserCounts = {}
|
|
for user in goodUsers
|
|
for session in user.sessions
|
|
levelUserCounts[session.levelID] ?= 0
|
|
levelUserCounts[session.levelID]++
|
|
|
|
print "Found #{goodUsers.length} users who played more than an hour out of #{users.length}."
|
|
print "Levels by number of users completing:"
|
|
levelUserCounts
|
|
|
|
|
|
"""
|
|
Found 194 users who played more than an hour out of 93952.
|
|
rs0:PRIMARY> levelUserCounts;
|
|
{
|
|
"dungeons-of-kithgard" : 190,
|
|
"gems-in-the-deep" : 184,
|
|
"shadow-guard" : 186,
|
|
"forgetful-gemsmith" : 189,
|
|
"kounter-kithwise" : 80,
|
|
"true-names" : 186,
|
|
"favorable-odds" : 76,
|
|
"the-raised-sword" : 181,
|
|
"haunted-kithmaze" : 181,
|
|
"descending-further" : 70,
|
|
"the-second-kithmaze" : 171,
|
|
"dread-door" : 172,
|
|
"known-enemy" : 170,
|
|
"master-of-names" : 160,
|
|
"lowly-kithmen" : 138,
|
|
"closing-the-distance" : 137,
|
|
"tactical-strike" : 48,
|
|
"the-final-kithmaze" : 108,
|
|
"the-gauntlet" : 43,
|
|
"kithgard-gates" : 96,
|
|
"defense-of-plainswood" : 88,
|
|
"winding-trail" : 75,
|
|
"endangered-burl" : 51,
|
|
"village-guard" : 40,
|
|
"thornbush-farm" : 33,
|
|
"back-to-back" : 27,
|
|
"ogre-encampment" : 22,
|
|
"woodland-cleaver" : 18,
|
|
"shield-rush" : 10,
|
|
"peasant-protection" : 8,
|
|
"munchkin-swarm" : 10,
|
|
"munchkin-harvest" : 4,
|
|
"swift-dagger" : 1,
|
|
"shrapnel" : 1,
|
|
"arcane-ally" : 1,
|
|
"touch-of-death" : 1
|
|
"bonemender" : 1,
|
|
"coinucopia" : 6,
|
|
"copper-meadows" : 3,
|
|
"drop-the-flag" : 3,
|
|
"deadly-pursuit" : 2,
|
|
"rich-forager" : 1,
|
|
"multiplayer-treasure-grove" : 1,
|
|
|
|
"rescue-mission" : 2,
|
|
"dungeon-arena-tutorial" : 3,
|
|
"dungeon-arena" : 2,
|
|
"undefined" : 2,
|
|
"grab-the-mushroom" : 2,
|
|
"gold-rush" : 1,
|
|
"criss-cross" : 1,
|
|
}
|
|
"""
|
|
|
|
# With usernames, 3 days instead of 1:
|
|
"""
|
|
Found 532 users who played more than an hour out of 277828.
|
|
>
|
|
> print("Levels by number of users completing:");
|
|
Levels by number of users completing:
|
|
>
|
|
> levelUserCounts;
|
|
{
|
|
"dungeons-of-kithgard" : 524,
|
|
"gems-in-the-deep" : 513,
|
|
"shadow-guard" : 515,
|
|
"kounter-kithwise" : 229,
|
|
"forgetful-gemsmith" : 520,
|
|
"true-names" : 516,
|
|
"favorable-odds" : 216,
|
|
"the-raised-sword" : 504,
|
|
"haunted-kithmaze" : 494,
|
|
"the-second-kithmaze" : 472,
|
|
"dread-door" : 475,
|
|
"known-enemy" : 463,
|
|
"master-of-names" : 440,
|
|
"lowly-kithmen" : 403,
|
|
"closing-the-distance" : 393,
|
|
"tactical-strike" : 139,
|
|
"the-final-kithmaze" : 321,
|
|
"the-gauntlet" : 113,
|
|
"kithgard-gates" : 253,
|
|
"defense-of-plainswood" : 236,
|
|
"descending-further" : 200,
|
|
"winding-trail" : 196,
|
|
"endangered-burl" : 133,
|
|
"village-guard" : 118,
|
|
"thornbush-farm" : 89,
|
|
"back-to-back" : 77,
|
|
"ogre-encampment" : 66,
|
|
"woodland-cleaver" : 56,
|
|
"shield-rush" : 32,
|
|
"peasant-protection" : 30,
|
|
"munchkin-swarm" : 28,
|
|
"munchkin-harvest" : 9,
|
|
"swift-dagger" : 3,
|
|
"shrapnel" : 1,
|
|
"arcane-ally" : 10,
|
|
"bonemender" : 4,
|
|
"coinucopia" : 21,
|
|
"copper-meadows" : 17,
|
|
"drop-the-flag" : 11,
|
|
"deadly-pursuit" : 13,
|
|
"rich-forager" : 6,
|
|
|
|
"undefined" : 8,
|
|
"dungeon-arena-tutorial" : 8,
|
|
"dungeon-arena" : 8,
|
|
"grab-the-mushroom" : 6,
|
|
"gold-rush" : 6,
|
|
"criss-cross" : 4,
|
|
"rescue-mission" : 3,
|
|
"touch-of-death" : 2,
|
|
"taunt-the-guards" : 1,
|
|
"taunt" : 1,
|
|
"sky-span" : 1,
|
|
"greed" : 1,
|
|
"dungeon-battle" : 1,
|
|
"drink-me" : 1,
|
|
"cowardly-taunt" : 1,
|
|
"bubble-sort-bootcamp-battle" : 1,
|
|
"break-the-prison" : 1
|
|
}
|
|
"""
|