Skip to content

Instantly share code, notes, and snippets.

View sdolidze's full-sized avatar

Sandro Dolidze sdolidze

View GitHub Profile
@sdolidze
sdolidze / gmail-2-drive.gs
Last active February 2, 2018 08:16
gmail-2-drive
function main() {
var label = "Semester 7/Design Patterns/assign2";
var folder = "dp-assign2";
GmailApp
.getUserLabelByName(label)
.getThreads()
.map(lastMessage)
.map(extractAttachment)
.forEach(saveFile(folder));
@sdolidze
sdolidze / deadlock-again
Last active August 29, 2015 14:13
deadlock in go
package main
import "fmt"
func producer(queue chan string) {
fmt.Println(<-queue)
}
func main() {
queue := make(chan string)
@sdolidze
sdolidze / not-working.c
Last active August 29, 2015 14:13
function literal in C
typedef int (*operator)(int, int);
int main() {
operator plus = (int a, int b) {
return a+b;
};
int res = (*plus)(1, 2);
printf("%d ", res);
return 0;
}
@sdolidze
sdolidze / lambda.c
Last active August 29, 2015 14:13
Lambdas in C
#include <stdio.h>
typedef int(*func)(int);
func plus(int a) {
int add(int b) {
return a + b;
}
return add;
}
@sdolidze
sdolidze / reverse.c
Created January 8, 2015 16:29
Reversing List in C
typedef int elem_t;
typedef struct List {
elem_t head;
struct List *tail;
} List;
List *cons(elem_t head, List *tail) {
List *res = malloc(sizeof(List));
res->head = head;
@sdolidze
sdolidze / copy.c
Last active August 29, 2015 14:13
Reverse list in place
List *copy(List *oldList) {
// empty
if (oldList == NULL) {
return NULL;
}
// head
List *newList = cons(oldList->head, NULL);
List *res = newList;
oldList = oldList->tail;
@sdolidze
sdolidze / fp.java
Last active August 29, 2015 14:13
Functional Java
public static<A,B> B foldLeftRec(BiFunction<B,A,B> f, B v, List<A> xs) {
return xs.isEmpty() ? v : foldl(f, f.apply(v, xs.head()), xs.tail());
}
public static<A,B> B foldLeftIter(BiFunction<B,A,B> f, B v, List<A> xs) {
B acc = v;
for (A x: xs) {
acc = f.apply(acc, x);
}
return acc;
@sdolidze
sdolidze / fact.hs
Created January 10, 2015 00:17
Factorial Haskell
factLeftHelper acc [] = acc
factLeftHelper acc (x:xs) = factLeftHelper (acc * x) xs
factLeft = factLeftHelper 1
@sdolidze
sdolidze / Copy.java
Last active August 29, 2015 14:13
Copy list java
// rec
public static<T> List<T> cons(T head, List<T> tail) {
return new List(head, tail);
}
private static<T> void copyTailRec(List<T> newList, List<T> oldList) {
if (oldList != null) {
newList.tail = cons(oldList.head, null);
copyTailRec(newList.tail, oldList.tail);
@sdolidze
sdolidze / copy.c
Created January 11, 2015 18:05
Copy.c
List *copyIter(List *oldList) {
List res, *newList;
newList = &res;
newList->tail = NULL;
while (oldList != NULL) {
newList->tail = cons(oldList->head, NULL);
newList = newList->tail;
oldList = oldList->tail;
}