Даны два целых числа a и b, найдите все простые числа между ними (включая границы).

Это похоже на старейшую проблему компьютерных наук, и я не смог принять ее. Я предполагаю, что в кодовых боях были некоторые ограничения по времени, потому что в остальном это работало хорошо. Я написал для него три метода (3 разных стиля), и один из них был довольно быстрым. Он смог найти простые числа от 1 до 1000 менее чем за 2 секунды. (Довольно небрежно, если вы рассматриваете ACM: p)

Ну, сначала я думал, что должен сделать это обычным, старомодным способом. Возьмите массив, сделайте его достаточно большим. Я дал предел, максимальное значение — минимальное значение, потому что я предположил, что нет никакого способа, есть более 5 простых чисел, если есть 10 чисел. Я должен взять векторы, хотя. Во всяком случае, затем я взял два вложенных цикла for, один из которых перебирает все числа от минимального до максимального, находит, какое из них является простым, и добавляет их в результирующий массив. Я сохранил особый случай для 1 и 2, поскольку 1 не является простым числом, а 2 — единицей. Позже я обрезал конечные нули, создав еще один массив и вернув новый массив. Однако это не было принято.

Я предположил, что были некоторые ограничения по времени. Поэтому, чтобы сделать это быстрее, я создал два новых метода: один для рекурсивного вызова, а другой для сохранения значения. Рекурсивный метод пытается найти простое число из 3, и у него нет верхнего предельного значения, так как он работает только тогда, когда вызывается метод, и я передаю входное число в качестве параметра функции. Основной метод сначала проверяет, начинается ли число с единицы или двух, затем увеличивает это число до 3 и помещает 2 в качестве простого числа в массиве. после получения результата (логического результата) от рекурсивной функции и добавления их в мой массив я отправил массив (после его обрезки). Это также не было принято.

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

Code Repository: https://github.com/ibtehaz-shawon/Programming-Diary/tree/master/Prime%20Number_CodeFight

Попарно

Учитывая массив и число N, назовите пару чисел из массива идеальной парой, если их сумма равна N. Найдите все идеальные пары и верните сумму их индексов. Обратите внимание, что любой элемент массива может учитываться только в одной идеальной паре. Также, если есть несколько правильных ответов, верните наименьший из них.

Это простая проблема, задача состоит в том, чтобы найти более короткое решение с точки зрения символов (кроме пробела) в коде. Некоторое время я был на вершине со 137 символами. Я преследовал эту проблему с помощью двух вложенных циклов, и когда значение парного массива (параметр функции) равно N, я добавил оба их значения индекса к результату и сделал это значение равным -1. Однако это решение было принято, я почти уверен, что есть ошибка. Я не проверял это, но поскольку я сделал array[i] = array[j] = -1, цикл не должен проходить через i, но он обязательно пройдет через индекс j, поэтому предположим, что если N равно 8, то 7–1 также будет равно 8, однако это не будет правильным ответом. Я не задавал никаких условий для отрицательного значения в условии if, поэтому все положительные и отрицательные значения будут проходить.

Code Repository: https://github.com/ibtehaz-shawon/Programming-Diary/tree/master/Pairwise_CodeFight

Фантастическая пара

У нас есть общество с N людьми, и у нас есть таблица, которая описывает, идентифицируют ли люди в этом обществе себя с другими в этом обществе.

Фантастический человек — это человек, с которым все идентифицируют себя и который не идентифицирует себя ни с кем другим, кроме себя.

Если у нас есть Фантастический человек в обществе, верните его индекс (люди - это числа от 0 до n-1), в противном случае верните -1.

Примечание: Вы можете предположить, что в этом обществе нет двух разных людей, которые идентифицируют себя друг с другом. Таким образом, если a отождествляется с b, то b гарантированно не идентифицируется, и наоборот.

Код легко написать, но мне не удалось сделать его короче 147 символов! Поскольку в качестве параметра функции я должен пройти через двумерный массив, мне понадобятся два цикла (вложенные) и проверка, все ли они являются истинными (логическими) или нет. Если все они равны True, я возвращаю значение индекса этой строки. Если я нахожу какое-либо значение False в строке, я немедленно разрываю этот цикл и перехожу к следующей строке. Это решение было принято.

Однако я попробовал другой подход, чтобы найти все значения строки без массива, который потребует больше символов для составных символов внутри условия if-else.

Code Repository: https://github.com/ibtehaz-shawon/Programming-Diary/tree/master/Fantastic%20People_CodeFight