Путь Fullstack
16 subscribers
114 photos
3 videos
6 files
50 links
Download Telegram
В данный момент я уехал в другой город. К сожалению, свой ПК я взять не смог, поэтому приостанавливаю работу над игрой. Однако, поскольку мне сдавать ОГЭ в следующем году, я начинаю подготовку по информатике. Буду публиковать задания, решения и ответы.
Тип 1:
Решение:
Исходный текст:
«Мята, тыква, фасоль, артишок, патиссон, лагенария — овощи»

Условие:

Каждый символ кодируется 32 битами (UTF-32).

Ученик вычеркнул одно слово из списка, а также лишние запятую и пробел.

Размер текста уменьшился на 28 байт.

Нужно найти вычеркнутое слово.

🔢 Решение:
1️⃣ Переводим байты в биты:

28 байт = 28 × 8 = 224 бита.

2️⃣ Считаем, сколько символов удалено:

В UTF-32 1 символ = 32 бита, значит:

224 бита / 32 = 7 символов удалено.

3️⃣ Учитываем, что удалили не только слово, но и запятую + пробел:

7 (всего) − 2 (запятая и пробел) = 5 символов (длина слова).

4️⃣ Смотрим список овощей и ищем слово из 5 букв:

Мята (4)

Тыква (5)

Фасоль (6)

Артишок (7)

Патиссон (8)

Лагенария (9)

 Проверка:

Удалено: "тыква" (5) + ", " (2) = 7 символов → 7 × 32 бита = 224 бита = 28 байт. Всё сходится!

📌 Ответ: тыква
Исходный текст:
«еж, лев, слон, олень, полень, носорог, крокодил, аллигатор — дикие животные»

Условие:

Кодировка: 16 бит на символ (Unicode).

Удалено одно слово + лишние запятая и пробел.

Размер уменьшился на 16 байт.

Найти вычеркнутое животное.

🔢 Решение:

16 байт = 128 бит (т.к. 1 байт = 8 бит).

128 бит / 16 бит = 8 символов удалено.

8 символов – 2 (запятая и пробел) = 6 символов (длина слова).

Проверяем слова из списка:

еж (2)

лев (3)

слон (4)

олень (5)

полень (6)

носорог (7)

крокодил (8)

аллигатор (9)

Ответ: полень
Важный момент! По условию сказано - "Ученик вычеркнул из списка", так что обобщающие слова "дикие животные, овощи" мы не считаем!
Переходим к типу 2
Тип 2:

Решение:

Рассмотрим таблицу и зашифрованное сообщение:

Начинаем с сообщения. Заметим, что оно начинается с +. В таблице нет ни одной буквы, начинающейся с +, кроме О (т.к нет букв с +~).

Первая буква: О

Остаток: ~ + ~ + @@ ~ +

Далее идёт ~. В таблице есть две буквы, начинающиеся на ~: Л и И.

Если выбрать И, то начало слова будет "ОИ..." — это бессмыслица.

Значит, вторая буква: Л

Остаток: ~ + @@ ~ +

Подходит только буквы Л и И.

ОЛЛ - звучит странно, убираем.

Третья буква: И

Остаток: + @@ ~ +

Далее +. Выбор между М и О.

Если выбрать О, то слово начнёт выглядеть как "ОЛИО..." — не подходит.

Значит, четвёртая буква: М

Остаток: @ ~ +

Подходит только буква П

Итоговое слово: ОЛИМП
Решение:
Начнем с первой строчки: 10111101
Нам походят буквы - К и Н
Подставляем К:
К (101), остаток - 11101
О (111), остаток - 01
А (01)
Получилось - КОА
Подставляем Н:
Н (10), остаток 111101
О (111), остаток - 101
К (101)
Получилось НОК
Строчка не подходит (имеет 2 расшифровки).

1010110:
Поставляем К:
К (101), остаток 0110
А (01), остаток 10
Н (10)
Получилось КАН
Подставляем Н:
Н (10), остаток 10110
К (101), остаток 10
Н (10)
Получилось НКН
Или:
Н (10), остаток 10110
Н (10), остаток 110
110 не существует
Строчка не подходит (имеет 2 расшифровки).

10111000:
Подставляем К:
К (101), остаток 11000
110 не существует
Подставляем Н:
Н (10), остаток 111000
О (111), остаток 000
С (000)
Получилось НОС
Ответ: НОС
Важный момент! Ответ должен подходить под условие "имеет только ОДНУ расшифровку". Нас просят указать не номер строчки, а именно слово.
Тип 3
Есть 2 способа решить эту задачу. Начнем с логического:
НЕ (X <= 15) И (X < 20)
Все равно что
(X > 15) и (X < 20)
Соответственно нам подойдут числа из промежутка (16; 19)
По условию нам нужно наибольшее - 19

Второй способ (код):
На python код выглядит так:
a = []  # Создаем массив подходящих значений
for x in range (0, 20): # Делаем перебор возможных значений x (0, 20)
if not(x <= 15) and (x < 15): # Добавляем условие
a.append(x) # Если число нам подходит, помещаем его в массив
print(max(a)) # выводим максимальное значение массива


Однако можно сделать иначе:
for x in range (20, 0, -1):   # Делаем перебор возможных значений x в обратном порядке (от большего к меньшему)
if not(x <= 15) and (x < 20): # Добавляем условие
print(x) # Выводим значение
break # Завершаем цикл (первое число максимальное)


В ответе получаем число 19
Тип 4

Из пункта A мы можем пойти только в пункт B Между ними расстояние 1 км, из B мы можем идти в C, D или E.
A-B-E = 8 км
A-B-C-E = 6 км
A-B-D-E = 7 км

Самый короткий маршрут равен 6 км
Тип 5
Опять же есть 2 способа решения.
Начнем с логического:
Распишем алгоритм действий -
6 + 1 + 1 * b + 1 + 1 = 82
Сократим и получим:
8b = 80
b = 10

Второй способ (код):
for b in range (0, 100):  # Перебираем возможные значения b
x = 6 + 1 + 1
if (x * b + 1 + 1) == 82:
print(b)



В результате получаем 10
Тип 6

1:
Найдем в списке значения, удовлетворяющие условию:
(11, 2); (1, 12); (11, 12); (–11, 12); (–12, 11)
Всего их 5

2:
def f(s, t):    #Создаем функцию проверки
if s > 10 or t > 10: # Проверяем удовлетворяет ли значение условию
return 1 # Т.к нам нужно Yes возвращаем 1
else:
return 0 # Если нет, возвращаем 0
a = ((1, 2), (11, 2), (1, 12), (11, 12), (-11, -12), (-11, 12), (-12, 11), (10, 10), (10, 5)) #Создаем массив данных в задаче значений
kol = 0
for i in range(9):
kol += f(a[i][0], a[i][1]) # Перебираем двумерный массив, вызывая функцию f
print(kol)

Ответ: 5
1:
Найдем в списке значения, удовлетворяющие условию:
(9, 9); (8, 5); (–5, 9); (4, 5); (8, 6)
Ответ: 5

2:
def f(s, t):
if s > 9 or t > 9:
return 0 # Ставим 0, т.к нужно узнать сколько было "NO"
else:
return 1
a = ((9, 9), (9, 10), (8, 5), (11, 6), (-11, 10), (-5, 9), (-10, 10), (4, 5), (8, 6))
kol = 0
for i in range(9):
kol += f(a[i][0], a[i][1])
print(kol)

Ответ 5
Сейчас разберу одно из неприятных заданий. Это достаточно редкий тип 7 - восстановление ip адреса
Тип 7

Немного теории:

IP-адрес — это цифровой адрес, состоящий из двух частей: адреса сети и адреса хоста. Он включает в себя четыре октета и занимает 32 бита (4 байта).
Октет — это число в диапазоне от 0 до 255 (Для компа ip адрес выглядит в двоичной системе счисления. Из-за этого 1 байт вмещает числа только до 255) . Например:
93.158.134.3Yandex.ru

Возвращаемся к задаче.
Получается каждый октет ip адреса вмещает числа до 255.

Возьмем самое большое данное число - 16, ставим в начало.
Теперь нам нужно подобрать к нему второе число, так чтобы оно не было больше 255
Возьмем число 2.17
Получим: 162.17
.65 взять не можем т.к последним идет 8.121 и получится .658.121, октет .658 больше 255, соответственно так делать нельзя.
Ставим 8.121
Получаем - 162.178.121
Добавляем .65
Результат - 162.178.121.65
Проверяем не противоречит ли это условию (октет не больше 255)

Ответ: БАГВ
Берем число 23, к нему подходят 3.232 и 3.20, берем 3.20 (т.к если возьмем 3.232 получим 3.2323, или 3.232.333.20)
Получаем - 233.20
Добавляем 3.232 и .33
Результат - 233.203.232.33

Ответ: ГВБА
Немного базы для следующего задания:

URL (Uniform Resource Locator — «унифицированный указатель ресурса») — это адрес ресурса в интернете


Пример: https://yandex.ru/maps

Url всегда начинается с протокола, их существует всего 3 вида (основные, есть и другие):
http, https, ftp

http - устаревший и незащищенный протокол

https - современная версия протокола http (с доб защитой в виде SSL сертификата), работает на большинстве сайтов

ftp - протокол для передачи данных (используется на серверах и базах данных)

После протокола обязательно идет ://

За ним идет имя сайта, которое делится на домены, возьмем основные 2:

Домен второго уровня (SLD - Second Level Domain) - имя сайта, например: yandex, google, mail

Домен верхнего уровня (TLD - Top Level Domain) указывает на глобальную зону? примеры:
.com — для коммерческих сайтов;
.ru — национальный домен для России;
.org — для некоммерческих организаций;
.edu — для образовательных учреждений;
.gov — для правительственных сайтов.

После имени идет Путь к ресурсу. Всегда начинается с /. Может вести как на страницу, так и на файл. Примеры:
/search
/photo.jpg

За ним идут Параметры. Начинаются с ?. Содержат дополнительные данные для запроса. примеры:
?theme=light
?lang=ru&oc=windows

И в конце идет Якорь Определяет конкретное место на странице (например, #section1).

Url содержит:
1. Протокол + ://
2. Домен второго уровня
3. Домен верхнего уровня
4. Путь к ресурсу
5. Параметры
6. Якорь
Теперь переходим к самому заданию - наиболее частая задача 7 типа

Вспоминаем из чего состоит url
Начинаем с протокола:
http://
Далее домен 2 уровня:
http://game
И верхнего уровня:
http://game.com
После следует путь к ресурсу:
http://game.com/start.exe

Ответ: ГЖДЕБАВ
Протокол - http
http://
Домен 2 уровня:
http://bibl
Домен верхнего уровня:
http://bibl.ru
Путь к ресурсу:
http://bibl.ru/book.txt

Ответ: ЕАВДЖБГ
👍1
Такс... Я был немножко занят в эти дни. Но завтра продолжу подготовку к Огэ и буду доделывать игру.
И так, тип 8:

В данном случае | ("ИЛИ") Означает ВСЕ страницы, включающие и угол и прямую

& ("И") Означает ВСЕ страницы, содержащие ТОЛЬКО угол и прямую

Т.е:
Угол + Прямая + Угол & Прямая = Угол | Прямая

Внимание! В таблице представлены Угол, Прямая уже содержащие страницы Угол & Прямая

Что в итоге делаем то? Находим страницы запроса Прямая (без запроса Угол)
180 - 60 = 120

Теперь найдем Угол & Прямая:
140 - 120 = 20 тыс. страниц

Ответ: 20
Тип 9

Все дороги представлены векторами. т.е мы можем двигаться только в 1 направлении, назад идти не можем

Посчитаем последовательно количество путей до каждого из городов:

А = 1; Начало пути считаем за единицу

Б = 1; В пункт Б ведет только 1 путь

В = А + Б = 1 + 1 = 2; В пункт В ведет 2 пути: А -> В, Б -> В

Д = А = 1;

Г = А + Д = 1 + 1 = 2;

Е = Б + В = 1 + 2 = 3;

Ж = Д + Г = 1 + 2 = 3;

З = В + Г + Е + Ж = 2 + 2 + 3 + 3 = 10;

И = Е = 3;

К = Ж = 3;

И складываем все пути
Л = Е + Ж + З + И + К = 3 + 3 + 10 + 3 + 3 = 22.

Ответ: 22.