Skip to content

Instantly share code, notes, and snippets.

View kentquirk's full-sized avatar

Kent Quirk kentquirk

View GitHub Profile
@kentquirk
kentquirk / petowner_1.go
Last active September 11, 2016 03:56
Go implementation with non-JSON input
package main
import "fmt"
type Pet struct {
Owner string `json:"owner"`
Pet string `json:"pet"`
}
func main() {
@kentquirk
kentquirk / using_lodash.js
Created September 10, 2016 18:19
Using lodash we can make it look like Python
// requires lodash.js
var output = {}
_.each(input, function(element){
a = _.get(output, element.owner, [])
a.push(element.pet)
output[element.owner] = a
})
@kentquirk
kentquirk / petowner_comprehension1.py
Last active September 16, 2016 19:02
Set up output first
output = dict([[e["owner"], []] for e in input])
for element in input:
output[element["owner"]].append(element["pet"])
@kentquirk
kentquirk / petowner_tuple.py
Last active September 10, 2016 18:02
Concatenation and tuples
output = dict()
for element in input:
output[element["owner"]] = output.get(element["owner"], ()) + (element["pet"],)
@kentquirk
kentquirk / petowner_noif.py
Created September 10, 2016 17:54
No explicit conditional
output = dict()
for element in input:
item = output.get(element["owner"], [])
item.append(element["pet"])
output[element["owner"]] = item
@kentquirk
kentquirk / petowner_except.py
Created September 10, 2016 17:21
Try using exceptions
output = dict()
for element in input:
try:
output[element["owner"]].append(element["pet"])
except KeyError:
output[element["owner"]] = [element["pet"]]
@kentquirk
kentquirk / petowner_simple.py
Last active September 10, 2016 17:50
Simple python
output = {}
for element in input:
if output.has_key(element["owner"]):
output[element["owner"]].append(element["pet"])
else:
output[element["owner"]] = [element["pet"]]
@kentquirk
kentquirk / es6.js
Created September 10, 2016 17:05
ES6-ready
let output = {}
for (const element of input) {
if (output.hasOwnProperty(element.owner)) {
output[element.owner].push(element.pet)
} else {
output[element.owner] = [element.pet]
}
}
@kentquirk
kentquirk / moreidiomatic.js
Last active September 10, 2016 17:00
moreidiomatic.js
var output = {}
input.forEach(function(element) {
if (output.hasOwnProperty(element.owner)) {
output[element.owner].push(element.pet)
} else {
output[element.owner] = [element.pet]
}
});
@kentquirk
kentquirk / genericsimple.js
Last active September 10, 2016 16:22
Most generic JS
var output = {}
for (var i=0; i<input.length; i++) {
if (output[input[i].owner] == undefined) {
output[input[i].owner] = [input[i].pet]
} else {
output[input[i].owner].push(input[i].pet)
}
}