Warning: Undefined array key "userinfo" in /home/pp/.public_html/lib/plugins/indexmenu/action.php on line 54
Wyzwania weekendowe [Podstawy Programowania]
Warning: Undefined array key "stylesheets" in /home/pp/.public_html/inc/StyleUtils.php on line 102


Podstawy Programowania

Instytut Informatyki Stosowanej, Politechnika Łódzka

Narzędzia użytkownika

Narzędzia witryny


To jest stara wersja strony!


Wyzwania weekendowe

W tym dziale będą pojawiały się, co tydzień w piątek, nowe wyzwania programistyczne. Zadania te są nieobowiązkowe i przeznaczone jedynie dla ochotników, chcących sprawdzić swoje umiejętności algorytmiczne i programistyczne, podczas kodowania w języku C.

Czas na wykonanie każdego z wyzwań weekendowych upływa w niedzielę, o godzinie 23:59. Trzy osoby, które najszybciej prześlą największą liczbę poprawnych rozwiązań, zostaną zwolnione z konieczności oddania części prac domowych oraz uzyskają wyższą ocenę końcową z Wykładu. Kryterium podstawowym jest liczba poprawnie wykonanych wyzwań (pozytywny test maszynowy && pozytywna ocena wykładowcy). Kryterium dodatkowym jest czas przesłania odpowiedzi (pole Data przesłania odpowiedzi w raporcie maszynowym).

Życzymy powodzenia! :)

Wyniki (runda VI)

<spoiler |Wyniki>

Nazwisko Imię Miejsce Suma punktów Wędrowiec Enigma Αριθμομηχανή Cuda Prezent Blobik
Kowalski Adrian 1 51 10 5 7 10 10 9
Ałaszewski Adrian 2 39 6 9 9 8 7
Franas Alan 3 28 7 7+1 4 8+1
Muras Wojciech 4 26 1 10+1 8 6
Górkiewicz Bartłomiej 5 19 9 1 2 3+1 3
Stępień Patryk 6 15 1 10 4
Ogłoza Michał 7 11 1 3 3 2 2
Węgrzyński Bartłomiej 7 11 1 2 3+1 4
Zalewski Łukasz 7 11 1 4 6
Okrasa Michał 10 10 3 2 1 3 1
Sykuła Kamil 10 10 5 4+1
Świstak Grzegorz 10 10 10
Wiśniewski Artur 13 9 1 1 1 6
Gralewski Bartosz 14 6 2 3+1
Dziuda Alicja 15 4 4
Zieliński Kamil 16 1 1
Ćwiek Dawid 16 1 1
Świderski Szymon 16 1 1

Wartość +1 w zadaniu Enigma oznacza punkt bonusowy za spostrzegawczość :) Wartość +1 w zadaniu Cuda oznacza punkt bonusowy za wykorzystanie rekurencji.

</spoiler>

Zadanie 11.1 - Wędrowiec (termin 3 grudnia, 23:59)

Napisz program, który pobierze od użytkownika tablicę o wymiarach 30 x 30, a następnie odnajdzie drogę prowadzącą z punktu (0,0) do punktu (29, 29). Komórki, po których można się poruszać są oznaczone wartościami 1 we wczytanej macierzy. Z punktu startowego do końcowego prowadzi wyłącznie jedna droga, bez ślepych zaułków. Program ma wypisać, w kolejnych liniach, współrzędne wszystkich komórek, jakie odwiedził w drodze z punktu startowego do mety włącznie z nimi.

<spoiler |Przykład> Przykładowe wejście:

 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 
 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 
 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 
 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 
 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 
 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 
 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 
 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 

Przykładowe wyjście:

0 0
0 1
0 2
1 3
1 4
2 5
3 5
4 6
5 6
6 6
7 7
6 8
5 8
4 9
3 10
2 11
1 12
2 13
2 14
3 15
4 15
5 15
6 16
6 17
7 18
7 19
7 20
7 21
7 22
7 23
8 24
8 25
8 26
9 27
9 28
10 29
11 29
12 29
13 29
14 29
15 29
16 29
17 29
18 29
19 29
20 29
21 29
22 29
23 29
24 29
25 29
26 29
27 29
28 29
29 29

</spoiler>

Zadanie 11.2 - Enigma (termin 10 grudnia, 23:59)

* DEPESZA Z CENTRALI WYWIADU *

Udało nam się przechwycić komunikat przesłany przez naszych wrogów. Niestety, jest on zakodowana. Nasz agent, zakonspirowany w sztabie wroga, dostarczył nam jedno z użytych słów w tekście. Przekazał nam również cenną wskazówkę - nasz przeciwnik nie jest zbyt biegły w dziedzinie kryptografii. Przypuszcza się, iż tekst jest zaszyfrowany pewną wariacją szyfru Cezara, gdzie długość klucza jest mniejsza o jeden od długości znanego nam wyrazu a szyfrowanie polega na zmianie wartości kolejnych znaków na podstawie kolejnych liczb klucza.

Czy dasz radę pomóc swojej Ojczyźnie i odszyfrować przechwyconą wiadomość?

<spoiler |Przykład> Przykładowe wejście:

Podaj tekst:
Uvzkk kkcu nooktio ob unlpjyxbti ufqcu
Podaj uzyte slowo:
tekst

Przykładowe wyjście:

Tutaj jest miejsce na odkodowany tekst

</spoiler>

Zadanie 11.3 - Αριθμομηχανή (termin 17 grudnia, 23:59)

W starożytnej Grecji mieliśmy powiedzenie „Kto nie liczy ten nie je” (które później ewoluowało do „Kto nie koduje w C ten nie je”). Rozumiał je Archimedes, krzycząc Heureka! Rozumieli je wszyscy. Brutalnie przekonał się o tym król perski Kserkses, który źle policzył przewagę swoich sił pod Termopilami. Aby nie popełnić jego błędu, musisz zrozumieć, co naprawdę oznacza „liczyć” a następnie nauczyć tego swój komputer. Bądź jak Pitagoras! :)

<spoiler |Przykład> Przykładowe wejście:

Podaj wyrażenie: 
4+88-69-3+75+53+89/18-34/48-62-62/3*53-86

Przykładowe wyjście:

-1056

</spoiler>

Zadanie 11.4 - Cuda (termin 24 grudnia, 23:59)

Święta to czas cudów. Spotykamy się w cudownie miłej atmosferze, jemy cudownie pysznego karpia. Wyczekujemy cudowniej pierwszej gwiazdki. Nieco inaczej ma Święty Mikołaj. W ciągu jednego wieczora musi odwiedzić miliardy dzieci w miliardach domów, rozdać miliardy prezentów pod miliardy choinek. Wszystkie te liczby, z którymi ma on do czynienia, jak by na nie nie patrzeć, są również cudownie wielkie. Pomóż więc Mikołajowi w dodawaniu tych wielkich liczb i napisz program, który zrobi to za niego.

<spoiler |Przykład> Przykładowe wejście:

Podaj pierwsza liczbe: 90467506859757021571
Podaj druga liczbe: 42901800079275915926
133369306939032937497

</spoiler>

Zadanie 11.5 - Prezent (Wyzwanie Świąteczne, termin 27 grudnia, 23:59)

Pomysły na prezenty, jakie mają dzieci, są różne jak Świat długi i szeroki. Antoś z Krakowa chce konsole, Marysia z Warszawy latawiec a Gosia z Sosnowca nowy rowerek. Z tymi prezentami Mikołaj nie ma problemu ale czasem zdarzają się dzieci bardziej wymagające. W tym roku Mikołaj natrafił na Piotrusia i Tomusia z Łodzi, którzy chcieli dostać pod choinkę program komputerowy. A ponieważ dzieci są małe, nie potrafiły w pełni przekazać Mikołajowi, co taki program ma robić. Dostarczyły tylko to:

<spoiler |Przykład> Przykładowe wejście:

Podaj liczbe linii: 8
Podaj tekst: Drodzy Studenci!
Zyczymy Wam spokojnych Swiat Bozego Narodzenia,
spedzonych razem z bliskimi
w cieplej i rodzinnej atmosferze.
A w nadchodzacym Nowym Roku zyczymy Wam energii,
sukcesow w realizacji upragnionych marzen
oraz cierpliwosci i wytrwalosci w pracy nad soba!
Piotr Duch i Tomasz Jaworski
Podaj zakodowane hasło: 
107327110719305104118530 120718223140619

Przykładowe wyjście:

Wesolych Swiat

</spoiler> Mikołajowi pomysł bardzo się spodobał, więc zlecił prace nad prezentem swoim Elfom - Wam, drodzy Studenci. Czy podołacie zadaniu i sprawicie radość dwójce małych urwisów?

Mamy nadzieję, że tak :-)

Zadanie 11.6 - Dawno, dawno temu (termin 7 stycznia, 23:59)

Kiedyś nie było komputerów. Powaga, nie ściemniam! Fejsbuka też nie było. Były za to pamiętniki. I wszyscy mnożyliśmy pod kreskę - to były czasy! Teraz i Ty masz szanse na poznanie, jak ciekawa jest to operacja. Napisz program, który pomnoży dwie liczby przez siebie, zapewniając poprawne i czytelne wyświetlanie kolejnych kroków. Zakres obu liczb wejściowych to <0; 100000>.

<spoiler |Przykład> Przykładowe wejście:

Podaj liczbe 690
Podaj liczbe 4984

Przykładowe wyjście:

    690
   4984
-------
   2760
  5520
 6210
2760
-------
3438960

</spoiler>

Zadanie 11.6 - Blobik (termin 1 stycznia, 23:59)

Napisz program który, dla podanego obrazu o wymiarach z zakresu 1×1 - 50×50 punktów, znajdzie i wyświetli wszystkie obiekty nie będące tłem. Wartości punktów tła to 0 a obiektów to 1. Obiektów może być wiele. Program powinien poprosić o dwie liczby całkowite: wysokość i szerokość obrazu a następnie wczytać wartości kolejnych punktów. Jako wynik program ma wyświetlić liczbę znalezionych obiektów a następnie wyświetlić informacje o każdym obiekcie. Te informacje to: jego numer (1, 2…), powierzchnia, oraz współrzędne XY środka ciężkości, z dokładnością do dwóch miejsc po przecinku. Przed wyświetleniem obiekty należy posortować ze względu na współrzędne środa, w porządku: od góry do dołu, od lewej do prawej.

Przyjmij następujące założenia:

  1. Układ współrzędnych do liczenia środka ciężkości ma 0,0 w lewym górny rogu obrazu (pierwsza liczba), wartość X zwiększa się od lewej do prawej, wartość Y zwiększa się z góry na dół
  2. Punkt należy do obiektu wtedy i tylko wtedy, gdy leży nad/pod/na lewo/na prawo od dowolnego punktu należące do do tego obiektu

Przykład:

    Jeden obiekt   Cztery obiekty:
      #                 #
     ###               # #
      #                 #

<spoiler |Przykład>

Wejście:

5 5
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0

Wyjście:

Liczba obiektow: 4
Obiekt 1 powierzchnia p=1 srodek ciezkosci x=1.00 y=1.00
Obiekt 2 powierzchnia p=1 srodek ciezkosci x=3.00 y=1.00
Obiekt 3 powierzchnia p=1 srodek ciezkosci x=1.00 y=3.00
Obiekt 4 powierzchnia p=1 srodek ciezkosci x=3.00 y=3.00

</spoiler>

pp/pp1/zadania/wyzwania.1515175025.txt.gz · ostatnio zmienione: 05/01/2018 18:57 przez Tomasz Jaworski