М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Чертежнику был дан для исполнения следующий алгоритм сместиться на -3 ,-4
сместиться на 2,3
сместиться на 1,2
конец
какую команду надо выполнить чертежнику чтобы вернуться в исходную точку из которой он начал движение ?

👇
Открыть все ответы
Ответ:
Zhamik11
Zhamik11
11.07.2020
Потому что соединение не идеально, оно прерывается, некоторые данные по пути теряются. Допустим, я хочу передать файл по интернету. Если файл небольшой, то велика вероятность, что он не пострадает. В противном случае можно потратить много времени на передачу части файла, после чего данные передадутся с ошибкой, которую мы обнаружим только после передачи всего файла. Передавая информацию пакетами же можно этого избежать, так как любая потеря данных будет сразу видна по плохому пакету. После этого можно эту ошибку сразу и обработать и, допустим запросить повтор предыдущего пакета или попытаться починить пакет, прибывший с ошибкой.
4,7(96 оценок)
Ответ:
Goym
Goym
11.07.2020

Так, ну смотри... Я не стал запариваться и вручную записывать список с этими координатами... Это очень долго и муторно, я воспользовался модулями pickle и random, чтоб ускорить этот процесс... (____ - потом убери - это я табуляцию обозначил, чтоб было видно синтаксис нормально)

import random, pickle, math

xy = dict()

for i in range(1, random.randrange(1,50)):

____xy[i] = [random.randrange(-104,104),random.randrange(-104,104)]

print(xy)

f = open('INPUT.TXT', 'wb')

pickle.dump(xy, f)

f.close()

Я кусками объясню, потом выложу просто сами файлы...

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

Я сделал словарь, потому что изначально была идея обозвать каждую точку буквами А, В, С... и т.д., но это долго и муторно, поэтому когда вызовешь словарь, увидишь что там такой вид (ключ: 1; [x,y]). Тоже думаю вполне себе неплохо выглядит... Рандом тут просто для того, чтоб самому ничего не выдумывать, а быстро записать разные значения, не более... Ну и так же рандом тут определяет количество точек.

f = open('INPUT.TXT', 'rb')

xy = pickle.load(f)

Тут идет все тот же pickle, но мы уже присваиваем переменной xy значение из файла. Тут все просто.

for i in xy:

___arr1.append(xy[i])

Цикл, который координаты из словаря переносит в список. Мне так просто проще работать со списками. (Вообще, моя идея с НАЗВАНИЕ:КООРДИНАТЫ оказалось провальной, поэтому чтоб избежать двух лишних строчек, можешь в самом начале изменить словарь на список =D)

while len(arr1) > 0:

___for i in arr1:

______arr1.pop(arr1.index(i))

______for z in arr1:

_________arr2.append(math.sqrt(math.pow(z[0]-i[0],2)+math.pow(z[1]-i[1],2)))

arr2.sort()

Тут происходит основной процесс программы. Цикл while работает до тех пор ПОКА длина списка arr1 больше 0. (сейчас к этому еще вернемся)

Цикл for перебирает значения списка arr1 (в котором у нас в виде списков координаты точек [x,y]) Удаляет первый элемент дабы избежать повторений и запускает второй цикл который уже без первой координаты... Получается что-то типа координата подается и со всеми остальными образует отрезок, потом вторая, третья и т.п...

И я думаю ты понял, зачем нам условие в цикле while len(arr1) > 0

Список закончился = он весь обработался...

Для следующей строки нам нужен модуль math, для упрощения жизни. тут просто формула, которая считает длины отрезков. Обычная формула из математики S = sqrt((x2 - x1)^2 + (y2 - y1)^2)

Ну думаю объяснять что за методы pow и sqrt - нет смысла...

За циклом к списку вызывается метод sort, который по порядку расставляет длины, которые мы насчитали. (т.к. у тебя в условии это требуется... бесполезное действие вообще как по мне =D)

f = open('OUTPUT.TXT', 'w')

f.write(str(len(arr2))+'\n')

for i in arr2:

___text = str(i) + '\n'

___f.write(text)

f.close()

А тут обычная запись уже в файл output. Ничего сложного. Первой строкой выводится количество отрезков, которое у нас получилось. На 26 точек, которые сгенерировались, у нас получилось 325 отрезков. Ну и из списка печатаются сами длины с отступом.

Весь код целиком:

import random, pickle, math

arr1 = []

arr2 = []

text = ''

'''xy = dict()

for i in range(1, random.randrange(1,50)):

___xy[i] = [random.randrange(-104,104),random.randrange(-104,104)]

print(xy)

f = open('INPUT.TXT', 'wb')

pickle.dump(xy, f)

f.close()

Данный код использовался для составления списка с случайным количеством координат и случайными его координатами.

'''

f = open('INPUT.TXT', 'rb')

xy = pickle.load(f)  

for i in xy:

___arr1.append(xy[i])

while len(arr1) > 0:

___for i in arr1:

______arr1.pop(arr1.index(i))

______for z in arr1:

_________arr2.append(math.sqrt(math.pow(z[0]-i[0],2)+math.pow(z[1]-i[1],2)))

arr2.sort()

f = open('OUTPUT.TXT', 'w')

f.write(str(len(arr2))+'\n')

for i in arr2:

___text = str(i) + '\n'

___f.write(text)

f.close()

P.S. А, да... Чуть не забыл. У меня тут начало закомментировано как видишь... Тебе чтоб сгенерировать список, нужно сначала тройные кавычки убрать и желательно закомментировать оставшуюся часть кода... Когда у тебя будет уже файл input с значениями, можешь обратно поставить кавычки, чтоб у тебя вечно разные значения не генерировались :)

И я не смог загрузить файл с расширением .py, так что смотри на скрине, там синтаксис выделен, я думаю разберешься.


решить Python Развлечения с измерителем(Время: 1 сек. Память: 16 Мб)Дима обнаружил у папы на столе с
4,6(58 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ