CourseWare Wiki
Switch Term
Winter 2024 / 2025
Winter 2023 / 2024
Winter 2022 / 2023
Winter 2021 / 2022
Winter 2020 / 2021
Winter 2019 / 2020
Winter 2018 / 2019
Older
Search
Log In
b191
courses
b3b33alp
cviceni
t07
Warning
This page is located in archive. Go to the latest version of this
course pages
.
Differences
This shows you the differences between two versions of the page.
View differences:
Side by Side
Inline
Go
Link to this comparison view
Both sides previous revision
Previous revision
2019/11/11 08:36 herinjan [Těžká varianta]
2019/11/11 07:05 stepan created
2019/09/21 11:39 stepan removed
2018/11/12 22:23 external edit
Go
2019/11/11 08:36 herinjan [Těžká varianta]
2019/11/11 07:05 stepan created
2019/09/21 11:39 stepan removed
2018/11/12 22:23 external edit
Go
Last revision
Both sides next revision
courses:b3b33alp:cviceni:t07 [2019/09/21 11:39]
stepan
removed
courses:b3b33alp:cviceni:t07 [2019/11/11 07:05]
stepan
created
Line 142:
Line 142:
==== Lehká varianta ====
==== Lehká varianta ====
-
* Napište program **
recurent
.py** pro výpočet následující rekurentní funkce:
+
* Napište program **
recurrent
.py** pro výpočet následující rekurentní funkce:
-
* $R_n(x)=\frac{n
-2
}{n}
xR_
{n-1}(x)-\frac{
1
}{n}R_{n-2}(x)+\frac{
3
}{n+
1
}R_{n-3}(x)$, přičemž
+
* $R_n(x)=\frac{n}{n
+1
}
\cdot R_
{n-1}(x)
+ (
-
1)^n \cdot
\frac{
n+2
}{n}
\cdot
R_{n-2}(x) + \frac{
x
}{n+
2
}
\cdot
R_{n-3}(x)$, přičemž
-
* $R_0(x)=1$, $R_1(x)=x$ a $R_2(x)=
2x
$
+
* $R_0(x)=1$, $R_1(x)=
2 \cdot
x$ a $R_2(x)=
3 \cdot x
$
* Program načte z první řádky standardního vstupu celé kladné číslo $n$ a z druhé řádky standardního vstupu reálné číslo $x$.
* Program načte z první řádky standardního vstupu celé kladné číslo $n$ a z druhé řádky standardního vstupu reálné číslo $x$.
* Program na výstup vytiskne hodnotu $R_n(x)$.
* Program na výstup vytiskne hodnotu $R_n(x)$.
+
* Ověření výsledku probíha s přesností na 8 desetinných míst.
* Program musí pracovat efektivně a umět spočítat hodnotu funkce $R$ i pro hodnoty n=100
* Program musí pracovat efektivně a umět spočítat hodnotu funkce $R$ i pro hodnoty n=100
-
* Program v souboru **
recurent
.py** odevzdejte do odevzdávacího systému (úloha HW07).
+
* Program v souboru **
recurrent
.py** odevzdejte do odevzdávacího systému (úloha HW07).
Například pro vstup:
Například pro vstup:
<code>
<code>
-
3
+
7
-
14
.
58
+
1
.
577
</code>
</code>
program vytiskne:
program vytiskne:
<code>
<code>
-
137
.
6076
+
4
.
24302193
</code>
</code>
==== Těžká varianta ====
==== Těžká varianta ====
-
* Napište program **
ubongo
.py**, který si ze
souboru se jménem prvního argumentu programu,
přečte
rozměr pole a díly
,
kterými má to pole zaplnit
+
* Napište program **
bracket
.py**, který si ze
standardního vstupu
přečte
číslo N
,
na druhé
ř
ádce
č
íslo M
,
na t
ř
etí řádce
č
íslo O
-
* první
ř
ádek obsahuje dvě
č
ísla //S// //R//
,
kde //R// je počet
ř
ádků a //S// je po
č
et sloupců obdélníkového pole
+
*
Na standardní výstup vygeneruje
v
šechny možné korektní uzávorkování s použitím N závorek typu '()'
,
M závorek typu '[]' a O závorek typu '{}'
-
*
dále násluduje //R// řádků, kde
+
*
Čísla M
,
N, O jsou celá
čísla
v
ě
t
ší
nebo rovna 0
-
* 0 - definují volná pole
v
matici
,
která se mají vyplnit zadanými dílky
+
*
Po
ř
adí jednotlivých
ř
ádk
ů
výstupu nehraje p
ř
i vyhodnocení roli.
-
*
-1 - definují obsazená pole
,
kam dílky nesmí zasahovat
+
* Program v souboru **
bracket
.py**
odevzdejte do odevzdávacího systému
(
úloha HW07
).
-
*
čísla
na jednom řádku jsou odd
ě
lena jednou nebo více mezerami (použijte funkci "split()" bez parametrů).
+
-
* každý dal
ší
řádek obsahuje popis jednoho dílku:
+
-
*
jedna
ř
ádka obsahuje sou
ř
adnice čtverečk
ů
(x y), ze kterých je sestaven celý dílek
+
-
* sou
ř
adnice jsou uvedeny za sebou bez oddělovacích čárek a závorek
+
-
* jednotlivé souřadnice mohou být libovolně posunuty, dílek nemusí obsahovat čtverec se souřadnicemi (0,0)
+
-
* Program v souboru **
ubongo
.py**
nalezne pokrytí volných polí matice dílky, které mohou být natočeny, ale nesmí být převráceny.
+
-
* Výstupem programu je pokrytí matice dílky, kdy plocha prvního dílku
(
zadaný v souboru hned za maticí volného místa
)
je vyplněna číslem 1, plocha druhého dílku (na další řádce za prvním dílkem) číslem 2, ..
.
+
-
*
Notace pro popis dílků: je to seznam x y sou
ř
adnic.
+
*
*P
ř
íklad I*
*
Vstup
:
<code>
-
*
Pro T-dílek na obrázku je jeho popis
:
0 0
1
0
2 0
1 1
+
1
-
{{
:
courses:b3b33alp:cviceni:blokus1.eps.png?200|}}
+
2
-
+
0
-
* Pro vstup
+
</code> Výstup
:<code>
-
<code>
+
[]([])
-
5 5
+
()[][]
-
0 0 0 0 0
+
[[]]()
-
0 0 0 0 0
+
[][]()
-
0 0 0 0 0
+
()[[]]
-
-1 0 0 0 0
+
[()][]
-
-1 -1 0 0 0
+
([])[]
-
0 0 0 1 0 2 1 2 2 2 2 1
+
[[()]]
-
0 0 0 1 1 1 2 1 2 0 2 2
+
[()[]]
-
0 0 1 0 1 1 1 2 1 3
+
[([])]
-
0 2 1 2 2 2 1 1 1 0
+
[[]()]
+
([[]])
+
[][()]
+
([][])
+
[]()[]
</code>
</code>
-
+
-
Příklad
dílku 1:
+
**
Příklad
II.** Vstup
<code>
-
<code>
+
1
-
0 0 0
1
0 2
1
2 2 2 2
1
+
1
+
1
</code>
</code>
+
program vytiskne (ukazujeme pouze prvních 15 řádků, délka úplného řešení pro vstup (1, 1, 1) je 30):
<code>
<code>
-
souřadnice
+
([{}])
-
y
+
([]{})
+
([]){}
+
({[]})
+
({}[])
+
({})[]
+
()[{}]
+
()[]{}
+
(){[]}
+
(){}[]
+
[({})]
+
[(){}]
+
[()]{}
+
[{()}]
+
[{}()]
+
[{}]()
+
[]({})
+
[](){}
+
[]{()}
+
[]{}()
+
{([])}
+
{()[]}
+
{()}[]
+
{[()]}
+
{[]()}
+
{[]}()
+
{}([])
+
{}()[]
+
{}[()]
+
{}[]()
-
2***
-
1* *
-
0*
-
012 souřadnice x
</code>
</code>
-
-
-
-
Graficky znázorněné všechny dílky
-
-
1:{{:courses:b3b33alp:cviceni:ubongo-0.png?100|}}
-
2:{{:courses:b3b33alp:cviceni:ubongo-1.png?100|}}
-
3:{{:courses:b3b33alp:cviceni:ubongo-2.png?100|}}
-
4:{{:courses:b3b33alp:cviceni:ubongo-3.png?100|}}
-
-
-
program vytiskne:
-
-
<code>
-
4 3 3 3 3
-
4 4 4 2 3
-
4 2 2 2 1
-
-1 2 1 2 1
-
-1 -1 1 1 1
-
</code>
-
courses/b3b33alp/cviceni/t07.txt
· Last modified: 2019/11/11 08:36 by
herinjan