На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 1
ссылка на сообщение  Отправлено: 12.05.19 18:48. Заголовок: Задание 27. № 103. Python 3.x


Является ли такое решение правильным? Если да, то на сколько баллов потянет?
Массив "a" служит для хранения первых 5-ти чисел, которые в дальнейшем будут сдвигаться.
Массив "b" нужен для хранения минимумов и максимумов для каждого a[0] с остатками 0, 1 и 2 при делении на 3

Ссылка на решение: https://postimg.cc/rDqt7dgs (Ссылка на PostImage)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]







Сообщение: 56
ссылка на сообщение  Отправлено: 12.05.19 19:19. Заголовок: Оценка решения


Такое решение определённо требует обязательного пояснения хода работы алгоритма.
За решение 0 баллов, потому что смешано кислое с пресным. Из косяков на поверхности:
1) В 3 последних условиях нет проверки на минимальную разность. То есть min1, min2, min3 - это последние разности, а не минимальные
2) В print почему-то записана функция max. Может min?
Минимальной разницы программа не находит.
Мой совет: зайдите на python.org, скачайте интерпретатор и в IDLE пишите код, проверяйте по тесту в задании. Потом сюда к нам.

PS Тут по идее надо находить разницу наибольшую по модулю, а потом в ответе ей знак минус приписывать.

Discussio mater veritas est Спасибо: 1 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 12.05.19 20:38. Заголовок: Вопрос


Здравствуйте, а что если переписать последние 3 условия вот так:
(h - это просто переменная для хранения большого условия)

N = int(input())
a = [int(input()) for _ in range(5)]
b = [[0,1001] for _ in range(3)]
min1,min2,min3 = -1,-1,-1
for i in range(5,N):
x = int(input())
if a[0] > b[a[0] % 3][0]:
b[a[0] % 3][0] = a[0]
if a[0] < b[a[0] % 3][1]:
b[a[0] % 3][1] = a[0]
------------------------------------
if x % 3 == 0 and b[0][0] != 0 and b[0][1] != 1001:
h = abs(b[0][0] - x) if abs(b[0][0] - x) > abs(b[0][1] - x) else abs(b[0][1] - x)
min1 = h if h > min1 else min1
if x % 3 == 1 and b[1][0] != 0 and b[1][1] != 1001:
h = abs(b[1][0] - x) if abs(b[1][0] - x) > abs(b[1][1] - x) else abs(b[1][1] - x)
min2 = h if h > min2 else min2
if x % 3 == 2 and b[2][0] != 0 and b[2][1] != 1001:
h = abs(b[2][0] - x) if abs(b[2][0] - x) > abs(b[2][1] - x) else abs(b[2][1] - x)
min3 = h if h > min3 else min3
------------------------------------
for j in range(4):
a[j] = a[j+1]
a[4] = x
if min1 == -1 and min2 == -1 and min3 == -1:
print('NO')
else:
print(- max(min1,min2,min3))

В последней строке я использовал max(), потому что искал максимальную по модулю разность и приписал к ней знак минус (в случае с нулем ошибки не возникло)
Тогда вроде как все правильно, но мне кажется это только на 2 балла...

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 72
ссылка на сообщение  Отправлено: 21.05.19 07:43. Заголовок: Честно говоря, вообщ..


Честно говоря, вообще не понял ваше решение.
Сохранять максимумы и минимумы в такой массив - это очень плохая идея.
Писать такой малопонятный код - вдвойне плохая идея.
Посмотрите моё решение и стремитесь к похожему оформлению.
Edit исправил вывод
 n=int(input()) 
a5=[]
for i in range(5): a5.append(int(input()))
max0=-1; max1=-1; max2=-1; min0=1001; min1=1001; min2=1001; m=-1
for i in range(5,n):
if a5[0]%3==0:
max0=max(max0,a5[0])
min0=min(min0,a5[0])
if a5[0]%3==1:
max1=max(max1,a5[0])
min1=min(min1,a5[0])
if a5[0]%3==2:
max2=max(max2,a5[0])
min2=min(min2,a5[0])

x=int(input())
if x%3==0 and max0!=-1: m=max(m,abs(x-max0))
if x%3==0 and min0!=1001: m=max(m,abs(x-min0))
if x%3==1 and max1!=-1: m=max(m,abs(x-max1))
if x%3==1 and min1!=1001: m=max(m,abs(x-min1))
if x%3==2 and max2!=-1: m=max(m,abs(x-max2))
if x%3==2 and min2!=1001: m=max(m,abs(x-min2))

for i in range(4): a5[i ]=a5[i+1]
a5[4]=x

if m==-1: print('NO')
else: print(-m)


Discussio mater veritas est Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 45
ссылка на сообщение  Отправлено: 22.05.19 08:57. Заголовок: Код на 3 балла. Ошиб..


Код на 3 балла. Ошибка в выводе. В условии написано: Программа должна вывести одно число – минимальную разность удовлетворяющую условию или «NO», если такую разность получить нельзя.
Нет вывода, когда печатается "NO"

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 46
ссылка на сообщение  Отправлено: 23.05.19 10:53. Заголовок: Алексей, Ваш код не ..


Алексей, Ваш код не проходит тест:
12
4
7
11
15
19
23
27
31
27
19
15
11
Ответ программа выдает -15, а должен быть -27. Не правильно работает с остатками 1

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 47
ссылка на сообщение  Отправлено: 23.05.19 10:55. Заголовок: Также код не проходи..


Также код не проходит тест:
12
7
7
7
7
7
7
7
7
7
7
7
7
Ответ выдает программа NO, а верный 0

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 48
ссылка на сообщение  Отправлено: 23.05.19 10:57. Заголовок: Также код не проходи..


Также код не проходит тест:
12
3
7
11
15
19
23
27
33
27
19
15
11
Ответ программы -978, а верный -30
Программа не верно работает с остатками 0

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 49
ссылка на сообщение  Отправлено: 23.05.19 10:58. Заголовок: Код прошел только 1 ..


Код прошел только 1 тест:
12
12
23
34
35
56
78
21
43
76
89
76
55
Правильно обрабатывает остатки 2.
Ответ -66

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 50
ссылка на сообщение  Отправлено: 23.05.19 10:59. Заголовок: Наверно нужно подпра..


Наверно нужно подправить код и выложить в отдельном окне

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 51
ссылка на сообщение  Отправлено: 23.05.19 11:54. Заголовок: Подправил Ваш код n=..


Подправил Ваш код
n=int(input())
a5=[]
for i in range(5): a5.append(int(input()))
max0=-1; max1=-1; max2=-1; min0=1001; min1=1001; min2=1001; m=-1
for i in range(5,n):
if a5[0]%3==0:
max0=max(max0,a5[0])
min0=min(min0,a5[0])
if a5[0]%3==1:
max1=max(max1,a5[0])
min1=min(min1,a5[0])
if a5[0]%3==2:
max2=max(max2,a5[0])
min2=min(min2,a5[0])

x=int(input())
if x%3==0 and max0!=-1: m=max(m,abs(x-max0))
if x%3==0 and min0!=1001: m=max(m,abs(x-min0))
if x%3==1 and max1!=-1: m=max(m,abs(x-max1))
if x%3==1 and min1!=1001: m=max(m,abs(x-min1))
if x%3==2 and max2!=-1: m=max(m,abs(x-max2))
if x%3==2 and min2!=1001: m=max(m,abs(x-min2))


for i in range(4): a5[i ]=a5[i+1]
a5[4]=x

if m==-1: print('NO')
else: print(-m)

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 52
ссылка на сообщение  Отправлено: 23.05.19 11:56. Заголовок: Ошибка везде была в ..


Ошибка везде была в мах0, заменил на мах1 и мах2 соответственно

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1867
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет