10000 Materiale per lezione su OOP · mathcoding/programming@431e50c · GitHub
[go: up one dir, main page]

Skip to content

Commit 431e50c

Browse files
committed
Materiale per lezione su OOP
1 parent d06451e commit 431e50c

File tree

7 files changed

+1082
-116
lines changed

7 files changed

+1082
-116
lines changed

notebooks/Lab 13.ipynb

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
"cell_type": "markdown",
8686
"metadata": {},
8787
"source": [
88-
"Per sapere quando un oggetto di tipo iteratore ha iterato su tutta la lista conviene chiamare la funzione `next(iterator, default)` passandogli oltre all'itereratore un valore di default."
88+
"Per sapere quando un oggetto di tipo iteratore ha iterato su tutta la lista conviene chiamare la funzione `next(iterator, default)` passandogli oltre all'iteratore un valore di default."
8989
]
9090
},
9191
{
@@ -319,6 +319,122 @@
319319
{
320320
"cell_type": "markdown",
321321
"metadata": {},
322+
"source": [
323+
"### Tail recursions"
324+
]
325+
},
326+
{
327+
"cell_type": "code",
328+
"execution_count": 3,
329+
"metadata": {
330+
"collapsed": false
331+
},
332+
"outputs": [
333+
{
334+
"name": "stdout",
335+
"output_type": "stream",
336+
"text": [
337+
"3 6 5\n"
338+
]
339+
}
340+
],
341+
"source": [
342+
"def LazyReverse(Ls):\n",
343+
" def Cat(v, As): \n",
344+
" yield v\n",
345+
" for l in As:\n",
346+
" yield l\n",
347+
" \n",
348+
" def ReverseRec(As, v):\n",
349+
" if As == []:\n",
350+
" return [v]\n",
351+
" else:\n",
352+
" return Cat(As[-1], ReverseRec(As[:-1], v))\n",
353+
" return ReverseRec(Ls, [])\n",
354+
"\n",
355+
"As = LazyReverse([4,3,2,5,6,3])\n",
356+
"print(next(As), next(As), next(As))"
357+
]
358+
},
359+
{
360+
"cell_type": "markdown",
361+
"metadata": {},
362+
"source": [
363+
"### Memoization"
364+
]
365+
},
366+
{
367+
"cell_type": "code",
368+
"execution_count": 17,
369+
"metadata": {
370+
"collapsed": false
371+
},
372+
"outputs": [
373+
{
374+
"name": "stdout",
375+
"output_type": "stream",
376+
"text": [
377+
"1346269\n",
378+
"0.7029097080230713\n"
379+
]
380+
}
381+
],
382+
"source": [
383+
"def Fib(n):\n",
384+
" if n == 0:\n",
385+
" return 0\n",
386+
" if n == 1:\n",
387+
" return 1\n",
388+
" return Fib(n-1) + Fib(n-2)\n",
389+
"\n",
390+
"import time\n",
391+
"\n",
392+
"start = time.time()\n",
393+
"print(Fib(31))\n",
394+
"end = time.time()\n",
395+
"print(end - start)"
396+
]
397+
},
398+
{
399+
"cell_type": "code",
400+
"execution_count": 16,
401+
"metadata": {
402+
"collapsed": false
403+
},
404+
"outputs": [
405+
{
406+
"name": "stdout",
407+
"output_type": "stream",
408+
"text": [
409+
"1346269\n",
410+
"0.0\n"
411+
]
412+
}
413+
],
414+
"source": [
415+
"from functools import lru_cache\n",
416+
"\n",
417+
"@lru_cache(maxsize=50)\n",
418+
"def Fib(n):\n",
419+
" if n == 0:\n",
420+
" return 0\n",
421+
" if n == 1:\n",
422+
" return 1\n",
423+
" return Fib(n-1) + Fib(n-2)\n",
424+
"\n",
425+
"start = time.time()\n",
426+
"print(Fib(31))\n",
427+
"end = time.time()\n",
428+
"print(end - start)"
429+
]
430+
},
431+
{
432+
"cell_type": "code",
433+
"execution_count": null,
434+
"metadata": {
435+
"collapsed": true
436+
},
437+
"outputs": [],
322438
"source": []
323439
}
324440
],

0 commit comments

Comments
 (0)
0