Сб, 21.04.2018, 10:27
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

 
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

  • Сторінка 7 з 7
  • «
  • 1
  • 2
  • 5
  • 6
  • 7
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt  
Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.3 Авторські методики. Алгоритміка та програмування. » Розв'язуємо задачі в стилі Python (Відвикаємо від звичок Паскаля і т. п.)
Розв'язуємо задачі в стилі Python
swetikccc Дата: Вт, 09.01.2018, 11:33 | Повідомлення № 91
Ветеран спілкування
Повідомлень: 4054
Нагороди: 30
Рейтинг: 386
Цитата Пилипчук_О_П ()
Гарна фраза. А де межа? Як на мене, цінним є вміння писати ЗРОЗУМІЛІ програми. Незалежно від мови програмування. І практично всі мови це дозволяють робити (brainfuck не згадуємо).
Просувати Пайтон в шкільне середовище можна. Але не забуваймо, що його "недолугість" організатори олімпіад оцінили: в багатьох випадках дають в 10(!) разів більше часу на отримання результату, порівняно з іншими мовами. Ви в цьому бачите високий сенс?

В попередный темі чудова задача з ноутбуками, демонструє недолугий Паскаль.
VasilKolomiets Дата: Вт, 09.01.2018, 15:44 | Повідомлення № 92
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата Пилипчук_О_П ()
n = input()
k = len(n)
z =0
for m in range(len(n)-1):
    if n[m]<n[m+1] :
         n= n.replace(n, '',1)
         z=1
         break

if z == 0:
n= n.replace(n[k-1], '',1)

print (n)

Учню можна сказати, що в Пайтоні є спеціальна можливість, що робить змінні z,k  зайвими:

n = input()
for m in range(len(n)-1):
....if n[m]<n[m+1]:
........n= n.replace(n[m], '',1)
........break
else:
...n = n[:-1]
print (n)

працює конструкція for - else:
крапки поставив бо при збереженні усе "зникає"  :*
до того ж "n" з "j"  у квадратних дужках десь зникає під час збереження на цьому сайті ...
:)

Додано (09.01.2018, 14:44)
---------------------------------------------
Вважаю кур навчання для учнів
https://dystosvita.gnomio.com/mod/page/view.php?id=2169
вдалим!
Але - треба зареєстріватися та ще пошукати там Пайтон ))
Сам курс непоганий, з іграми і таке інше.
Призначено для дистанційного навчання...

Відредаговано: VasilKolomiets - Вт, 09.01.2018, 15:37
fox11 Дата: Вт, 09.01.2018, 23:14 | Повідомлення № 93
Прописаний назавжди
Повідомлень: 258
Нагороди: 2
Рейтинг: 40
Цитата VasilKolomiets ()
Але - треба зареєстріватися та ще пошукати там Пайтон ))Сам курс непоганий, з іграми і таке інше.
Призначено для дистанційного навчання...
Сделайте себе такие для школы в moodle, платить не надо, хозяйничаете сами как хотите. Зашел на С++ - справочно-информационный материал ни о чем. Где обучение?
beregok Дата: Вт, 09.01.2018, 23:23 | Повідомлення № 94
Прописаний назавжди
Повідомлень: 251
Нагороди: 9
Рейтинг: 39
Інколи дивуєшся
Як в задачі про кульки морозива

Спочатку городив город з умов, але для великих чисел тести не проходили
Потім спробував, вийшло

Код
[color=#000000]k = int(input())
if k < 3 or k == 4 or k == 7:
    print("NO")
else:
    print("YES")
VasilKolomiets Дата: Ср, 10.01.2018, 22:28 | Повідомлення № 95
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата Пилипчук_О_П ()
замість "і" вийшло - "ы", замість "ї" - "ъ", замість апострофа - "ё", та й літера "є" була повернута в іншу сторону.
Як на мене, давати дітям на початковому етапі возитися з Юнікодом - це помилка. Хоча, може я й помиляюсь...
На Пайтоні вийшло щось таке:
Код
s=input()
print (s.count('Э')+s.count('э')+s.count('Ы')+s.count('ы')+s.count('Ъ')+s.count('ъ')+s.count('ё'))
s=s.replace('Э','Є')
s=s.replace('э','є')
s=s.replace('Ы','І')
s=s.replace('ы','і')
s=s.replace('Ъ','Ї')
s=s.replace('ъ','ї')
s=s.replace('ё',"'")
print(s)

d ={
'Э':'Є',
'э':'є',
'Ы':'І',
'ы':'і',
'ъ':'ї',
'Ъ':'Ї',
'ё':"'",
'Ё':"₴",
}
s=input()
sum = 0
for key, value in d.items():
    sum += s.count(key)
    s = s.replace(key, value)
print(sum)
print(s)

Побачите моє уточнення?    :$


Відредаговано: VasilKolomiets - Ср, 10.01.2018, 22:56
Пилипчук_О_П Дата: Ср, 10.01.2018, 23:29 | Повідомлення № 96
Ветеран спілкування
Повідомлень: 4102
Нагороди: 38
Рейтинг: 357
Цитата VasilKolomiets ()
Побачите моє уточнення?

Зі знаком гривні не все так просто... Я зміг добути його натисканням Shift+правий Alt+3 (Linux Mint). Звичайно, тут питання до автора задачі. Треба дивитись, як сформульована умова.

А розв'язок гарний, бо справді "в стилі Пайтон". Цікава структура даних - словник.
VasilKolomiets Дата: Сб, 13.01.2018, 00:05 | Повідомлення № 97
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Цитата Bandalak ()
Задача 9Заїзд в ЛКШОрганізатори Всеукраїнської Літньої Комп'ютерної Школи "ОЛІМП" організували централізований заїзд учасників з Кременчука в НОК "Ерудит". Для цього булозамовлено три автобуса, які одночасно під'їхали до залізничного вокзалу. Усіучасники швидко розподілились по автобусах. Старша вожата Марина Віталіївназ'ясувала, що кількість учасників ЛКШ в різних автобусах різна, і вона вирішилипересадити частину учнів так, щоб у кожному автобусі їх було порівно.Дороможіть Марині Віталіївні з'ясувати, яку найменшу кількість дітей потрібно пересадити. Формат вхідних даних:У першому рядку задано три натуральних числа, не більших за 100 - кількість дітей у першому, другому та третьому автобусах. Формат вихідних даних:Виведіть одне число - найменшу кількість дітей, яких потрібно пересадити. Якщо це зробити не можливо, то виведіть NO SOLUTIONS.ПрикладиВхідні дані Результат роботи
2 3 4       1
9 10 10    NO SOLUTIONS

розв'язання для будь якої кількості авто:

Цитата
in_bus = [int(i) for i in input('студенти у автах (через пробіл):').split()]
middle = sum(in_bus)//len(in_bus)

if sum(in_bus)%len(in_bus):
    rez = 'NO SOLUTIONS'
else:
    rez = sum([x-middle for x in in_bus if x>middle])
print(in_bus, "   ", rez)

або у коротшому записі - для "фанатів" одного рядка....  ^_^

in_bus = [int(i) for i in input('студенти у автах (через пробіл):').split()]
middle = sum(in_bus)//len(in_bus)

rez = 'NO SOLUTIONS'     if sum(in_bus)%len(in_bus) else     sum([x-middle for x in in_bus if x>middle])
print(in_bus, "   ", rez)

чи не гарно?!
%)

Додано (11.01.2018, 14:00)
---------------------------------------------
Давайте ще задачі!

Додано (12.01.2018, 23:05)
---------------------------------------------
# На склад, который имеет форму прямоугольного параллелепипеда, привезли ноутбуки, упакованные в коробки. Каждая коробка также имеет форму прямоугольного параллелепипеда.
# По правилам хранения коробки с ноутбуками должны быть размещены на складе с выполнением следующих двух условий:
#     Стороны коробок должны быть параллельны сторонам склада.
#     Коробку при помещении на склад разрешается расположить где угодно (с выполнением предыдущего условия), в том числе на другой коробке, но все коробки должны быть ориентированы одинаково
# (т.е. нельзя одну коробку расположить “стоя”, а другую —“лежа”)
# Напишите программу, которая по размерам склада и размерам коробки с ноутбуком определит максимальное количество ноутбуков, которое может быть размещено на складе.
# Формат ввода
# Программа получает на вход шесть натуральных чисел. Первые три задают длину, высоту и ширину склада. Следующие три задают соответственно длину, высоту и ширину коробки с ноутбуком.
# Формат вывода
# Программа должна вывести одно число — максимальное количество ноутбуков, которое может быть размещено на складе.

--
перевірте ідею рішення:

Цитата
x = [int(i) for i in input().split()]
y = [int(i) for i in input().split()]
subst = [0,1,2,1,2,0,2,0,1,0,2,1,2,1,0,1,0,2]
rez = max( [x[0]//y[subst[3*i]]*x[1]//y[subst[3*i+1]]*x[2]//y[subst[3*i+2]] for i in range(6)])
print(rez)


Відредаговано: VasilKolomiets - Чт, 11.01.2018, 15:00
beregok Дата: Сб, 13.01.2018, 09:36 | Повідомлення № 98
Прописаний назавжди
Повідомлень: 251
Нагороди: 9
Рейтинг: 39
Гарно і красиво. Навіть нуль враховує

Код
10 100 1
2 2 3
0

На жаль тестуюча система накладає обмеження: наявність пробілів, довжину рядка
Спробував вкоротити рядок


Якщо чесно не все розумію і плаваю, 
y[subst[3*i]] що там все таки відбувається
Пилипчук_О_П Дата: Сб, 13.01.2018, 10:06 | Повідомлення № 99
Ветеран спілкування
Повідомлень: 4102
Нагороди: 38
Рейтинг: 357
Цитата beregok ()
y[subst[3*i]] що там все таки відбувається

subst - масив, i - параметр циклу, заголовок якого в кінці рядка.
VasilKolomiets Дата: Сб, 13.01.2018, 22:37 | Повідомлення № 100
Новий користувач
Повідомлень: 19
Нагороди: 1
Рейтинг: 21
Ось ще одна задача. Програмування складнувате, але можна просто "подивитися" ;-)

Пояснение:Есть натуральное число x, его можно представить как произведение двух натуральных чисел m и n (x=m*n).
Далее x нужно заменить на m+n-2 (x=m+n-2). И это все необходимо выполнять, пока x не станет равно 1
Пример:В программу поступило число 6.
6=3*2 3+2-2=3
6=6*1 6+1-2=5

3=3*1 3+1-2=2
5=5*1 5+1-2=4

2=2*1 2+1-2=1 - x=1, останавливаемся (до единицы мы дошли за 3 замены)
4=2*2 2+2-2=2

Рішення на С#
static int GetStepsCount(int x)
{
    //Граничноеусловиевыхода
    if(x <=1)return0;
    //Делаемодиншагиприбавляемкнему
    return1+
        Enumerable
            //Длявсех m от1докорняиз x
            .Range(1,(int)Math.Sqrt(x))
            //Где m являетсяделителем x
            .Where(m => x % m ==0)
            //ВычислитьGetStepsCount
            .Select(m =>GetStepsCount(m + x / m -2))
            //Ивзятьсрединихминимум
            .Min();
}

Рішення на Python:
___________________
from math import sqrt

def f(x):
    if x <=1: return 0
    return 1 + min([ f(m + x // m - 2)  for m in range(1,int(sqrt(x))+1) if x%m ==0])
_________________________
Так що всі мови однакові!
Справа смаку.

Додано (13.01.2018, 21:37)
---------------------------------------------
Цитата VasilKolomiets ()
Якщо чесно не все розумію і плаваю, y[subst[3*i]] що там все таки відбувається
Цей код робить точно те, що ваш алгоритм.
тільки замість змінних дані загнані у списки
рекомендую подивитись на дію коду у гарному інструменті
http://www.pythontutor.com/live.html#mode=edit
де під час покрокового виконання коду візуалізується що відбувається у пам'яті комп'ютера.
це дуже корисно для учнів - бо наочно!


Відредаговано: VasilKolomiets - Сб, 13.01.2018, 22:50
beregok Дата: Сб, 17.02.2018, 03:36 | Повідомлення № 101
Прописаний назавжди
Повідомлень: 251
Нагороди: 9
Рейтинг: 39
Довго коптив над задачею про сірники
Теж умовний оператор



На цей раз допомогла наочна модель, дружина вирізала клаптики паперу їх пронумерувала та позначила, залилося тільки розміщувати
Рішення не таке елегантне



Додано (17.02.2018, 01:06)
---------------------------------------------
В PyCharm як і в будь-якій IDE є VCS
Оскільки по-тихенько вивчаю Python виникла ідея викладати розв'язки завдань на який небудь-сайт, без зайвих рухів та ще й сторіками задач
Згадав про генератор статичних сайтів Jekyll, який використовується на GitHub,
Деплой вирішив зробити на https://www.netlify.com/, більше можливостей
Для швидкого пошуку по сайту підключив algolia.com, набереш слово задачі, видасть результат без натискань
Окремо зробив сторінку з розділами задач та ЧаПи
Для себе згодиться у роботі, звичайно як завжди є нудна робота набити попередні задачі

https://pythontask.pp.ua

Додано (17.02.2018, 02:36)
---------------------------------------------
Записав процес додавання умови задачі тобто Push

Форум інформатиків » Розділ IV: ВДОСКОНАЛЕННЯ ФАХОВОЇ МАЙСТЕРНОСТІ УЧИТЕЛЯ ІНФОРМАТИКИ » 4.3 Авторські методики. Алгоритміка та програмування. » Розв'язуємо задачі в стилі Python (Відвикаємо від звичок Паскаля і т. п.)
  • Сторінка 7 з 7
  • «
  • 1
  • 2
  • 5
  • 6
  • 7
Пошук:


© Форум інформатиків України, 2007-2018.