Skip to content

Commit cdffcd9

Browse files
committed
Show & Tell
0 parents commit cdffcd9

File tree

15 files changed

+315
-0
lines changed

15 files changed

+315
-0
lines changed

0.png

20.4 KB
Loading

1.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int fib(int n)
2+
{
3+
if (n < 2) return n;
4+
else return fib(n-1) + fib(n-2);
5+
}
6+
7+
8+
#include <stdio.h>
9+
#include <stdlib.h>
10+
int main(int argc, char const *argv[])
11+
{
12+
printf("%i\n", fib(atoi(argv[1])));
13+
}

10.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from math import sqrt
2+
from sys import argv
3+
4+
PHI = (1 + sqrt(5)) / 2 # golden ratio number
5+
PSI = 1 - PHI # and its complement
6+
7+
def f(n):
8+
return round((PHI**n - PSI**n) / sqrt(5))
9+
10+
print(f(int(argv[1])))

11.html

Lines changed: 52 additions & 0 deletions
Large diffs are not rendered by default.

12.fsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
let fibonacci n =
2+
let rec fastFib = function
3+
| 0 -> (0I, 1I)
4+
| n ->
5+
let fk, fk1 = fastFib (n / 2)
6+
let fn = fk * (2I*fk1 - fk)
7+
let fn1 = (pown fk1 2) + (pown fk 2)
8+
if n % 2 = 0
9+
then fn, fn1
10+
else fn1, fn + fn1
11+
12+
let fn, _ = fastFib n in fn
13+
14+
fsi.CommandLineArgs.[1]
15+
|> int
16+
|> fibonacci
17+
|> printfn "%A"

13.scm

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
;; make a function that caches its past results
2+
(define (memoize proc)
3+
(let ((cache (make-table)))
4+
(define (delegate . args)
5+
(let ((hit (lookup cache args)))
6+
(or hit
7+
(let ((result (apply proc args)))
8+
(insert! cache args result)
9+
result))))
10+
delegate))
11+
12+
;; GUILE specific
13+
(define make-table make-hash-table)
14+
(define lookup hash-ref)
15+
(define insert! hash-set!)
16+
17+
;; example
18+
(define fib (memoize (lambda (n)
19+
(if (< n 2) n
20+
(+ (fib (- n 1))
21+
(fib (- n 2)))))))
22+
23+
(display
24+
(fib
25+
(string->number (list-ref (command-line) 1))))
26+
(newline)

2.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from sys import argv
2+
3+
def fib(n):
4+
if n < 2:
5+
return n
6+
else:
7+
return fib(n-1) + fib(n-2)
8+
9+
10+
print(fib(int(argv[1])))

3.html

Lines changed: 53 additions & 0 deletions
Large diffs are not rendered by default.

4.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from sys import argv
2+
3+
def fibs(n):
4+
previous = 1
5+
current = 0
6+
for _ in range(n):
7+
previous, current = current, previous + current
8+
return current
9+
10+
print('fibs:', fibs(int(argv[1])))
11+
12+
13+
def fibo(n, prev = 1, curr = 0):
14+
if n <= 0:
15+
return curr
16+
else:
17+
return fibo(n-1, curr, curr + prev)
18+
19+
print('fibo:', fibo(int(argv[1])))

5.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
constexpr int fibo(int n, int prev = 1, int curr = 0)
2+
{
3+
if (n <= 0) return curr;
4+
else return fibo(n - 1, curr, prev + curr);
5+
}
6+
7+
int main()
8+
{
9+
return fibo(40);
10+
}

0 commit comments

Comments
 (0)