[Homework] Multidimensional Arrays, Dictionaries, Sequences - Problems 1-3
Честит празник!
Много задачи, малко време този път. Ето решения на първите 3.
Задача 1 има две подусловия - да се въвеждат елементите вертикално от горе надолу и да се редува въвеждане от горе надолу с от долу нагоре.
Problem01a - http://pastebin.com/jBAVrB63
Нищо особено, достатъчно е да обърнете обичайните места на ред и колона когато записвате в масива прочетеното от конзолата.
Problem01b - http://pastebin.com/ZkSEfS3G
Итерираме не през редове, а през колони. Проверяваме дали сме в четна или нечетна колона. Ако сме в четна колона, пълним редовете в намаляващ ред (за да започнем от долу нагоре), ако сме в нечетна пълним редовете както обикновено, от горе надолу.
Problem02 - http://pastebin.com/XWHNPrJB
Оставил съм закоментирани статични данни, така че лесно да може да се тества примерът. След като напълним масива в който ще търсим, дефинираме си начална и крайна позиция на "прозорчето" което ще тества суми, пресмятаме колко пъти трябва да придвижим прозорчето хоризонтално и вертикално и тестваме сумите в прозорчето във всяка негова възможна позиция. Записваме си къде е бил долният десен ъгъл на прозорчето когато сме открили най-голямата сума. Започвайки от тази позиция, пълним един нов масив, в който пазим "прозорчето с максималната сума". Понеже започваме от долният десен ъгъл, ще го напълним от зад напред. Принтираме максималната сума и принтираме и прозорчето в обърнат ред, така че да го изпринтираме правилно.
Problem03 - http://pastebin.com/hhFfwytA
Изненадващо проста задача, дефинираме размери и попълваме масива, след което с един while цикъл приемаме вход от конзолата, като преди да се опитаме да го обработим, правим една малко по-комплексна проверка дали стойностите които са въведени са валидни. За целта разбиваме console input-a на един масив и сверяваме елемент по елемент дали ще се сглоби валидна команда. В началото на while цикъла правим проверка дали console input не е "END" и ако случайно е, излизаме от while цикъла. Всички подзадачи от които се състои тази са давани в предишни домашни от Basics.
Ако ми остане време от домашното за методи, което явно също трябва да се предаде днес, ще напиша още някоя и друа задача от многомерни масиви, речници и множества.