Привет-привет! Мы вновь подготовили Вам подборку интересных вопросов и задачек с собеседований в ведущие IT-компании!


Выпуски будут появляться каждую неделю — следите за обновлениями! Рубрика выходит при поддержке рекрутингового агентства Spice IT.

На этой неделе мы собрали задачи с собеседований в американскую компанию PayPal. Кстати, ответы на задачки из прошлого выпуска уже опубликованы.

Вопросы


1. Prisoner and Policeman Puzzle
Policeman decided to punish the Prisoner and asked him to make a statement. The Prisoner should make such a statement so that he would be alive.
If the statement is held true by Policeman, the Prisoner will be hanged to death and if the statement is held false, the Prisoner will be shot dead.

Перевод
Полицейский решил наказать заключенного и попросил его сделать заявление. Заключенный должен сделать такое заявление, чтобы остаться в живых.
Если это заявление будет признано полицейским как правда, заключенный будет повешен, а если это заявление будет признано ложным, заключенный будет застрелен. Какое заявление нужно сделать заключенному?

2. Matchstick Puzzle
How to make 4 equilateral triangles with 6 identical match sticks?

Перевод
Как сделать 4 равносторонних треугольника из 6 одинаковых спичечных палочек?

Задачи


1. Intersection of two arrays
Given two arrays A and B respectively of size N and M. The task is to print the count of elements in the intersection (or common elements) of the two arrays.
For this question, intersection of two arrays can be defined as the set containing distinct common elements between the two arrays.

Input:
The first line of input contains an integer T denoting the number of test cases. The first line of each test case is N and M, N is the size of array A and M is size of array B. The second line of each test case contains N input A[i].
The third line of each test case contains M input B[i].

Output:
Print the count of intersecting elements.

Constraints:
1 ? T ? 100
1 ? N, M ? 105
1 ? A[i], B[i] ? 105


Example:
Input:

4
5 3
89 24 75 11 23
89 2 4
6 5
1 2 3 4 5 6
3 4 5 6 7
4 4
10 10 10 10
20 20 20 20
3 3
10 10 10
10 10 10

Output:
1
4
0
1


Explanation:
Testcase 1: 89 is the only element in the intersection of two arrays.
Testcase 2: 3 4 5 and 6 are the elements in the intersection of two arrays.
Testcase 3: Non of the elements are common so the output will be -1.
Testcase 4: 10 is the only element which is in the intersection of two arrays.

Перевод
Даны два массива A и B соответственно размера N и M. Задача состоит в том, чтобы вывести количество элементов в пересечении (или общих элементах) двух массивов.
Для этого вопроса пересечение двух массивов можно определить как множество, содержащее различные общие элементы между двумя массивами.

Ввод:
Первая строка входных данных содержит целое число T, обозначающее количество тестов. Первая строка каждого теста — это N и M, N-размер массива A, а M-размер массива B. Вторая строка каждого теста содержит N входных данных A[i].
Третья строка каждого теста содержит M входных данных B[i].

Вывод:
Выведите количество пересекающихся элементов.

Ограничения:
1 ? T ? 100
1 ? N, M ? 105
1 ? A[i], B[i] ? 105


Пример:
Ввод:

4
5 3
89 24 75 11 23
89 2 4
6 5
1 2 3 4 5 6
3 4 5 6 7
4 4
10 10 10 10
20 20 20 20
3 3
10 10 10
10 10 10

Вывод:
1
4
0
1


Объяснение:
Тест 1: 89 — это единственный элемент в пересечении двух массивов.
Тест 2: 3 4 5 и 6 — это элементы в пересечении двух массивов.
Тест 3: нет общих элементов, поэтому вывод будет равен 0.
Тест 4: 10 — это единственный элемент, который находится в пересечении двух массивов.

2. Concatenation of Zig-Zag String in ‘n’ Rows
Given a string and number of rows ‘n’. Print the string formed by concatenating n rows when input string is written in row-wise Zig-Zag fashion.

Examples:
Input:
str = "ABCDEFGH"
n = 2
Output: "ACEGBDFH"
Explanation: Let us write input string in Zig-Zag fashion in 2 rows.
A___C___E___G
__B___D___F___H
Now concatenate the two rows and ignore spaces
in every row. We get "ACEGBDFH"

Input:
str = "SPICEITRECRUITMENT"
n = 3
Output: SEEINPCIRCUTETITRM
Explanation: Let us write input string in Zig-Zag fashion in 3 rows.
S_______E_______E_______I_______N
__P___C___I___R___C___U___T___E___T
____I_______T_______R_______M
Now concatenate the two rows and ignore spaces
in every row. We get "SEEINPCIRCUTETITRM"


Input:
The first line of input consists number of the test cases. The description of T test cases is as follows:
The first line of each test case contains the string, and the second line has 'n' the number of rows.

Output:
In each separate line print the string after concatenating n rows in a zig zag form.

Constraints:
1 ? T ? 70
1 ? N ? size of string


Example:
Input:

2
qrrc
3
rfkqyuqfjkxy
2

Output:
qrcr
rkyqjxfqufky

Перевод
Дана строка и количество строк ‘n'. Выведите строку, образованную путем объединения n строк, когда входная строка записывается зигзагообразно по строкам.

Примеры:
Ввод:
str = "ABCDEFGH"
n = 2
Вывод: "ACEGBDFH"
Пояснение: давайте напишем входную строку зигзагообразно в 2 строки.
A___C___E___G
__B___D___F___H
Теперь объедините эти две строки и игнорируйте пробелы в каждом ряду. Мы получаем "ACEGBDFH"

Ввод: SEEINPCIRCUTETITRM
str = "SPICEITRECRUITMENT"
n = 3
Вывод:
Пояснение: давайте напишем входную строку зигзагообразно в 3 строки.
S_______E_______E_______I_______N
__P___C___I___R___C___U___T___E___T
____I_______T_______R_______M
Теперь объедините эти две строки и игнорируйте пробелы в каждом ряду. Мы получаем "SEEINPCIRCUTETITRM"


Ввод:
Первая строка ввода состоит из числа тестов. Описание тестов t выглядит следующим образом:
Первая строка каждого теста содержит строку, а вторая строка содержит 'n' — количество строк.

Вывод:
В каждой отдельной строке выведите строку после объединения n строк в виде зигзага.

Ограничения:
1 ? T ? 70
1 ? N ? размер строки


Пример:
Ввод:

2
qrrc
3
rfkqyuqfjkxy
2

Вывод:
qrcr
rkyqjxfqufky

3. Solve the Sudoku
Given an incomplete Sudoku configuration in terms of a 9 x 9 2-D square matrix (mat[][]). The task to print a solved Sudoku. For simplicity you may assume that there will be only one unique solution.

Sample Sudoku for you to get the logic for its solution:


Input:
The first line of input contains an integer T denoting the no of test cases. Then T test cases follow. Each test case contains 9*9 space separated values of the matrix mat[][] representing an incomplete Sudoku state where a 0 represents empty block.

Output:
For each test case, in a new line, print the space separated values of the solution of the the sudoku.

Constraints:
1 <= T <= 10
0 <= mat[] <= 9


Example:
Input:

1
3 0 6 5 0 8 4 0 0
5 2 0 0 0 0 0 0 0
0 8 7 0 0 0 0 3 1
0 0 3 0 1 0 0 8 0
9 0 0 8 6 3 0 0 5
0 5 0 0 9 0 6 0 0
1 3 0 0 0 0 2 5 0
0 0 0 0 0 0 0 7 4
0 0 5 2 0 6 3 0 0


Output:
3 1 6 5 7 8 4 9 2 5 2 9 1 3 4 7 6 8 4 8 7 6 2 9 5 3 1 2 6 3 4 1 5 9 8 7 9 7 4 8 6 3 1 2 5 8 5 1 7 9 2 6 4 3 1 3 8 9 4 7 2 5 6 6 9 2 3 5 1 8 7 4 7 4 5 2 8 6 3 1 9

Explanation:
Testcase 1: The solved sudoku is:
3 1 6 5 7 8 4 9 2
5 2 9 1 3 4 7 6 8
4 8 7 6 2 9 5 3 1
2 6 3 4 1 5 9 8 7
9 7 4 8 6 3 1 2 5
8 5 1 7 9 2 6 4 3
1 3 8 9 4 7 2 5 6
6 9 2 3 5 1 8 7 4
7 4 5 2 8 6 3 1 9

Перевод
Дана неполная конфигурация судоку в виде квадратной матрицы размером 9 x 9 2D (mat [] []). Задача распечатать решенное судоку. Для простоты вы можете предположить, что будет только одно уникальное решение.

Пример судоку для вас, чтобы понять логику для его решения:


Ввод:
Первая строка входных данных содержит целое число T, обозначающее количество тестов. Затем следуют T тестов. Каждый тест содержит 9 * 9 разделенных пробелами значений матрицы mat [] [], представляющего неполное состояние судоку, где 0 представляет собой пустой блок.

Вывод:
Для каждого теста в новой строке выведите через пробел значения решения задачи судоку.

Ограничения:
1 <= T <= 10
0 <= mat[] <= 9


Пример:
Ввод:

1
3 0 6 5 0 8 4 0 0
5 2 0 0 0 0 0 0 0
0 8 7 0 0 0 0 3 1
0 0 3 0 1 0 0 8 0
9 0 0 8 6 3 0 0 5
0 5 0 0 9 0 6 0 0
1 3 0 0 0 0 2 5 0
0 0 0 0 0 0 0 7 4
0 0 5 2 0 6 3 0 0


Вывод:
3 1 6 5 7 8 4 9 2 5 2 9 1 3 4 7 6 8 4 8 7 6 2 9 5 3 1 2 6 3 4 1 5 9 8 7 9 7 4 8 6 3 1 2 5 8 5 1 7 9 2 6 4 3 1 3 8 9 4 7 2 5 6 6 9 2 3 5 1 8 7 4 7 4 5 2 8 6 3 1 9

Объяснение:
Пример 1: решениесудоку:
3 1 6 5 7 8 4 9 2
5 2 9 1 3 4 7 6 8
4 8 7 6 2 9 5 3 1
2 6 3 4 1 5 9 8 7
9 7 4 8 6 3 1 2 5
8 5 1 7 9 2 6 4 3
1 3 8 9 4 7 2 5 6
6 9 2 3 5 1 8 7 4
7 4 5 2 8 6 3 1 9

Ответы на задачи будут даны в течение следующей недели — успейте решить. Удачи!