diff --git a/exercises/exerciseB/map_example_codealong.py b/exercises/exerciseB/map_example_codealong.py new file mode 100644 index 0000000..b07d6a4 --- /dev/null +++ b/exercises/exerciseB/map_example_codealong.py @@ -0,0 +1,40 @@ +# Computer scientists love the Fibonacci sequence +# [https://en.wikipedia.org/wiki/Fibonacci_sequence], possibly +# described by Acharya Pingala in छन्दःशास्त्र (Chhandaḥśāstra). +# +# The basic definition is that the next item in the sequence +# if the sum of the two preceding items, and the two initial +# items and 0 and 1. +# +# We end up with [0, 1, 1, 2, 3, 5, 8, 13, ...] + +def fibbo(n): + match n: + case 0 | 1: + return n + case _: + return fibbo(n-1) + fibbo(n-2) + +# For example: the first few items in the sequence: +for n in range(36): + print(n, fibbo(n)) + +# A (nowadays) less commonly used way to construct the mapping +# from n to fibbo(n) is to use the map function. +# map returns a generator, and we call list to collect the numbers: +sequence = list(map(fibbo, range(36))) +print(sequence) + +# To split the work between multiple Python processes, we can +# use the multiprocessing module: +import multiprocessing + +pool = multiprocessing.Pool() +sequence = pool.map(fibbo, range(36)) +print(sequence) + +# We may use 'with' to clean up the pool after we're done with +# the workers: +with multiprocessing.Pool(10) as pool: + sequence = pool.map(fibbo, range(36)) +print(sequence) diff --git a/slides/map_example_codealong.py b/slides/map_example_codealong.py deleted file mode 100644 index b07d6a4..0000000 --- a/slides/map_example_codealong.py +++ /dev/null @@ -1,40 +0,0 @@ -# Computer scientists love the Fibonacci sequence -# [https://en.wikipedia.org/wiki/Fibonacci_sequence], possibly -# described by Acharya Pingala in छन्दःशास्त्र (Chhandaḥśāstra). -# -# The basic definition is that the next item in the sequence -# if the sum of the two preceding items, and the two initial -# items and 0 and 1. -# -# We end up with [0, 1, 1, 2, 3, 5, 8, 13, ...] - -def fibbo(n): - match n: - case 0 | 1: - return n - case _: - return fibbo(n-1) + fibbo(n-2) - -# For example: the first few items in the sequence: -for n in range(36): - print(n, fibbo(n)) - -# A (nowadays) less commonly used way to construct the mapping -# from n to fibbo(n) is to use the map function. -# map returns a generator, and we call list to collect the numbers: -sequence = list(map(fibbo, range(36))) -print(sequence) - -# To split the work between multiple Python processes, we can -# use the multiprocessing module: -import multiprocessing - -pool = multiprocessing.Pool() -sequence = pool.map(fibbo, range(36)) -print(sequence) - -# We may use 'with' to clean up the pool after we're done with -# the workers: -with multiprocessing.Pool(10) as pool: - sequence = pool.map(fibbo, range(36)) -print(sequence) diff --git a/slides/map_example_codealong.py b/slides/map_example_codealong.py new file mode 120000 index 0000000..7e35e80 --- /dev/null +++ b/slides/map_example_codealong.py @@ -0,0 +1 @@ +../exercises/exerciseB/map_example_codealong.py \ No newline at end of file