Напишите класс Голубь (Pigeon), экземпляр p которого инициализируется с аргументами: имя (строка), дальность полёта и грузоподъёмность (целые числа). Класс реализует (инкапсулирует) функциональность:
str(p) — возвращает своё имя в формате Pigeon <имя>, <грузоподъёмность>;
p.eat(food) — подкрепляется. За каждые 10 порций еды грузоподъёмность увеличивается на 1. Если количество порций не кратно 10, остаток хранится в запасе и может быть учтён при следующей еде. Ничего не возвращает;
p.carry(load, range) — проверяет, может ли он донести переданный в качестве аргумента груз на заданную дальность. Возвращает True, если может, и False, если хоть что-то меньше;
p.flap_wings() — машет крыльями. При каждом вызове меняется возвращаемое значение: то up, то down. Первый раз up;
экземпляры класса можно сравнивать. Сначала сравниваются по грузоподъёмности, потом по дальности, потом по длине имени, потом по алфавиту.
Пример 1
Ввод Вывод
from solution import Pigeon
p = Pigeon('Johnas', 100, 10)
print(p)
print(p.flap_wings())
print(p.flap_wings())
print(p.flap_wings())
p.eat(25)
print(p)
print(p.carry(100, 13))
Вывод:
Pigeon Johnas, 10
up
down
up
Pigeon Johnas, 12
False
Пример 2
Ввод Вывод
from solution import Pigeon
p1 = Pigeon('Johnas', 100, 10)
p2 = Pigeon('Calman', 100, 10)
print(p1, p2, sep='\n')
print(p1 > p2)
p2.eat(13)
print(p1 >= p2)
p1.eat(42)
p2.eat(7)
print(p1, p2, sep='\n')
print(p1.carry(90, 15))
Вывод:
Pigeon Johnas, 10
Pigeon Calman, 10
True
False
Pigeon Johnas, 14
Pigeon Calman, 12
False
var s:string; mas:array ['a'..'z'] of longint;{индексы элементов соответствуют латинице} c:char; i:longint; begin read(s); for c:='a' to 'z' do{заполнение нулями элементов массива, для запоминания количества элементов в латинице} mas[c]:=0; for i:=1 to ord(s[0]) do{пробегаем по всей строке ord(s[0]) это количесвто элементов в строке (только паскаль)} mas[s[i]]:=mas[s[i]]+1; for c:='a' to 'z' do{пробегаем по массиву значений и выводим только неповторяющиеся} if(mas[c]=1) then writeln(c); end.