Tuesday, April 30, 2024

📑 Logical Operators and Integers

📑 Task

1) What will the program print on the first and last lines?
2) Can you write functions that do the same actions with integers
and can be used in explanation of the result?

📑 Answer

1) 0 0 2 2 0 2 0 0 - the first line
2 9 9 2 0 11 2 36 - the last line
2)

Monday, April 29, 2024

📑 Difference in the Subset Sums 2

📑 Task

1) These programs divide a set into two subsets so
that the difference in the sums of the subsets is minimal
Can you describe the main principals that programs based?
2) Can you combine their solution methods in one program?


📑 Answer

1) The main principle behind these programs is dynamic programming.
The first program uses a table to store the results of subproblems
to find the minimum subset sum difference.
It iterates over the elements of the input array and
fills the table based on whether including or excluding an element results
in a subset sum closer to half of the total sum.
The second program uses a recursive approach to explore all possible subsets and find the minimum difference between the two subsets.
2)

📑 Difference in the Subset Sums

📑 Task

1) This program divides a set into two subsets so
that the difference in the sums of the subsets is minimal
The variable "table" indicates whether it is possible
to achieve a sum of j using the first i elements
Will all values be equal to 1 in the last row of the printed table?
2) During the iteration process, we actually only use the last two rows of the table
Can you modify the program using this fact?

📑 Answer

1) The last line will be [1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1]
We will not be able to get sums equal to 2 and 5
from the numbers presented in the original list
2)

Sunday, April 28, 2024

📑 Recursive Tables

📑 Task

1) What type of function is this?
2) How can you rewrite it so as not to use recursion?

📑 Answer

1) This is a recursive generator
It can be made infinite by removing the limiter max_count
2)

Saturday, April 27, 2024

📑 Default Arguments

📑 Task

1) What will the program print in the last 2 lines?
2) Why do variables change or not change in this way?
3) What minimal changes can be made to the program so that the values will be increased
and the last 2 lines will be 3 [0, 1, 2, 3] and 0 [0, 1, 2, 3]?

📑 Answer

1) 1 [0, 1, 1, 1] and 0 [0, 1, 1, 1]
2) Variables with mutable and immutable objects
are used as default arguments to a function
3)

📑 Presence in the List

📑 Task

1) What does the program do?
2) Can you write a function based on the same splitting procedure
to sort letters in a word (vowels and consonants)?

📑 Answer

1) This program generates x (a list of 10 random integers between 0 and 9) and
then initializes two empty lists (not_in_x and in_x) to store digits
based on their presence in the list x.
2)

Friday, April 26, 2024

📑 Sending Values to the Generator

📑 Task

1) What will the program print?
2) What types of functions are in the program?
3) How can you fix it so that the number 101 will also be printed?

📑 Answer

1) 111 121 131 141 151 161 171 181 191
2) An anonymous "lambda" function and
a function of the type "infinite generator" are used here
3)

Thursday, April 25, 2024

📑 Substring Counting

📑 Task

1) What result will the program produce?
2) Simplify the program to improve counting speed

📑 Answer

1) The program will return the number 3 by counting
the number of occurrences of the substring in the string
2) In the program it needs to replace recursion with a loop

Wednesday, April 24, 2024

📑 Mutable and Immutable Types

📑 Task

1) What will the program print?
2) Is it possible to create a dictionary of objects of another type:
during manipulations with variables or copies
they will behave differently and will not repeat changes of each other?
What type of objects should they be?
x1 = [[]]
x2 = x1
x1 *= 2
d1 = {1: x1}
d2 = {1: x2}
print(x1, x2)
print(d1, d2)
x1[0].append(2)
print(x1, x2)
print(d1, d2)
d2[1] += [[3]]
print(x1, x2)
print(d1, d2)

📑 Answer

1) Changes to copies and originals will affect each other
[[], []] [[], []]
{1: [[], []]} {1: [[], []]}
[[2], [2]] [[2], [2]]
{1: [[2], [2]]} {1: [[2], [2]]}
[[2], [2], [3]] [[2], [2], [3]]
{1: [[2], [2], [3]]} {1: [[2], [2], [3]]}
2) The object type must be immutable, for example integers
x1 = 1
x2 = x1
x1 *= 2
d1 = {1: x1}
d2 = {1: x2}
print(x1, x2)
print(d1, d2)
x1 += 2
print(x1, x2)
print(d1, d2)
d2[1] += 3
print(x1, x2)
print(d1, d2)

📑 Exponentiation

📑 Task

1) Describe this function is short (only main characteristics)
2) Suggest recursive and cyclic counting methods that
can significantly speed up calculations

📑 Answer

1) The function base_power calculates the result
of raising a base number to a specified power using recursion.
It handles base cases where the base is 1 or the power is 0 by returning 1.
During recursion, it multiplies the base by the result
of the function called with the power decremented by 1.
The function efficiently computes exponentiation by recursively
multiplying the base values until it reaches the specified power.
2)

📑 Unpacking Nested Lists

📑 Task

1) What result will be printed?
2) Write a function that extracts all elements of lists and tuples into one list without nesting
Try it for this difficult case list_ = [[1, 2], (3, ), [[[(4, 5)]]], 6, 7]

📑 Answer

1) [1, 3, 5, 2, 4, 6] [[1, 3, 5], [2, 4, 6]]
2)

Tuesday, April 23, 2024

📑 A Ternary Numeral System

📑 Task

1) What result will this program produce?
2) Rewrite this function for the numeral system with the base 3 (ternary)

📑 Answer

1) True
2)

📑 Recursive Infinite Generators

📑 Task

1) What is the last number the program will print?
2) What object appears when this function is applied
3) Can you write a program for an infinite generator of fibonacci numbers
without recursion but limit the number of iterations?

📑 Answer

1) 34
2) It is a recursive infinite generator
3)

📑 A Series of Variables

📑 Task

1) What will the program print for each case?
2) How to change f_string_y in the program so that variables y0, y1, y2 become global

📑 Answer

1) x0=1 x1=2 x2=4 True and y0=1 y1=2 y2=4 False
2)

📑 Function Dictionary

📑 Task

1) What object is created by the first line of the program?
2) Rewrite the function so that the numbers from 0 to 3 are raised to the 2nd power

📑 Answer

1) The result is a function that creates a dictionary of functions
2)

📑 Copying Lists

📑 Task

1) What will the program print?
2) Make a list of identical elements and copy this list
so that the result of the last three lines looks different:
[[1], [], []] [[2], [], []]

📑 Answer

1) 2 lists of empty lists: [[], [], []] [[], [], []]
2 identical lists of elements: [[1, 2], [1, 2], [1, 2]] [[1, 2], [1, 2], [1, 2]]
2)

Monday, April 22, 2024

📑 Continue and Pass

📑 Task

1) Will the code print two identical lines?
2) How can you modify the code to avoid using external variables when
loading a string argument into the function exec()?

📑 Answer

1) The lines will be different:
- in the second case, the program will not perform any actions when i = 0,
- in the first case, it will skip this iteration
2)

📑 The special variable "_"

📑 Task

1) What properties of the “_” character do we observe in code cells?
2) How can you restore the properties of this special variable?





📑 Answer

1) "_" is a special variable that represents the last returned value
and reassigning "_" convert it into an usual variable
2)



Sunday, April 21, 2024

📑 Exploration of the Function locals()

📑 Task

1) What will the program print?
2) How can we change the 3rd line of the program so that
the function takes elements of the same dictionaries as arguments
but the program prints out only keys of these dictionaries?

📑 Answer

1) Two rows: True and ({'a': 1, 'b': 2}, {'b': 3})
2)

📑 Dictionary Comprehensions

📑 Task

1) What two numbers will the program print?
2) Replace the first five lines of the program with a single line
containing a dictionary comprehension

📑 Answer

1) 10 29
The first number is the sum of the keys of the resulting dictionary
The second number is the sum of its values
2)

📑 Boolean Values of Objects

📑 Task

1) What will be printed
2) Explain the result with a code snippet, then remove
one punctuation character so the program result would be 0

📑 Answer

1) 1
2)

📑 Nested Functions for Polynomials

📑 Task

1) What will be the result of the calculations?
2) Can you write this code in a form of an anonymous function?
3) Can you make this function more universal so that
it builds a polynomial of any degree using arguments as coefficients?

📑 Answer

1) $polynomials(1, 1, 1)(0)$ builds the function $f(x) = x^2 + x + 1$
and finds its value $f(x) = 1$ at $x = 0$ twice
So the program will print out $ 1 $
2)

3)

📑 Curly Braces inside F-strings

📑 Task

1) Will the code print out the elements of the interval?
2) What minimal changes can be made to the code to see
the elements of this interval?

📑 Answer

1) The code will only display the command text
{*map(str, numbers)} {*numbers}
2) It needs to add spaces between the curly braces
or replace the inner curly braces with square braces

📑 F-strings and Nested Lists

📑 Task

1) What will the program print?
2) How can you print the elements of the nested list:
the entire list [0, 1, 2] and the character with index 1 of the string 'abc'?

📑 Answer

1) [0, 1, 2] abc - elements of a nested list with indexes 1 and 0
b 0 - fragments of these elements list_[0][1] and list[1][0]
2)

Saturday, April 20, 2024

📑 "Join" Effects for Strings

📑 Task

1) What will be the result of launching the program?
2) How can you change the code so that
the number of integers and letters becomes equal?

📑 Answer

1) a0b1c
The program places integers in order (starting from zero)
between the first 3 letters of the Latin alphabet
2)

📑 Arguments of Named Tuples

📑 Task

1) What will be the result of executing the code?
2) Can you modify this function so that
the argument names of named tuples would be small Latin letters?
And if the number of arguments is more than 26
then the program would issue a warning "Use less than 26 arguments"?

📑 Answer

1) vector() vector(x1=1) vector(x1=1, x2=2)
This function creates named tuples "vector"
with an arbitrary number of arguments x1, x2, etc.
2)

📑 Search for Boolean Values

📑 Task

1) What will be the result of the calculation?
2) Can you suggest a program that will explain the result?

📑 Answer

1) The built-in function isinstance(x, int) classifies the values True and False
as integers and this program counts them in the variable integers_found
So the result will be: integers_found = 6; bools_found = 0
2)

📑 Lambda Multipliers

📑 Task

1) What objects does the program create?
2) What will be the result of running the code?
3) Can you suggest improvements of the program?

📑 Answer

1) The program creates a list of lambda functions
2) The code will print out four identical numbers 12
(the lambda functionsmultiplie the arguments equal to 3 by the same factor m=4)
3) To create lambda functions with different multipliers from 1 to m,
in the loop you need to change the definition of the variable "_"