Tehtävä:
Taulukoita koskevia väitteitä
Lyhyt MathCheck-ohje (uuteen välilehteen)
Taulukko
A
indeksoidaan 1, …,
n
. Kirjoita predikaatti, joka sanoo että
A
on kasvavassa järjestyksessä.
ok_text Oikein! array_claim A[1...n] f_nodes 19 b_nodes 14 AA i; 1 <= i < n: A[i] <= A[i+1] <=>
tai
Taulukko
C
indeksoidaan 0, …,
k
− 1. Kirjoita predikaatti, joka sanoo että
C
on aidosti kasvavassa järjestyksessä.
ok_text Oikein! array_claim C[0...k-1] f_nodes 19 b_nodes 14 AA i; 0 <= i < k-1: C[i] < C[i+1] <=>
tai
Taulukko
H
indeksoidaan 0:sta alkaen, ja siinä on
l
alkiota. Kirjoita predikaatti, joka sanoo että
H
:n sisältö on palindromi eli sama etu- ja takaperin. Esimerkiksi [1,2,2,1] on palindromi, mutta [1,0,2,0] ei ole.
ok_text Oikein! array_claim H[0...l-1] f_nodes 18 b_nodes 16 AA i; 0 <= i < l: H[i] = H[l-i-1] <=>
tai
Taulukko
Δ
(MathCheckissä
De
) indeksoidaan 0, …,
i
. Kirjoita predikaatti, joka sanoo että
Δ
sisältää luvun 2 ainakin kerran.
ok_text Oikein! array_claim DE[0...i] f_nodes 11 EE h; 0 <= h <= i: DE[h] = 2 <=>
tai
Taulukko
u
indeksoidaan 2, …,
n
− 1. Kirjoita predikaatti, joka sanoo että
u
sisältää ainakin kaksi erisuurta alkiota.
ok_text Oikein! array_claim u[2...n-1] f_nodes 17 b_nodes 15 EE i: EE j; 2 <= i < j < n: u[i] != u[j] <=>
tai
Taulukko
u
indeksoidaan 2, …,
n
− 1. Kirjoita predikaatti, joka sanoo että
u
sisältää ainakin kaksi alkiota.
ok_text Oikein! array_claim u[2...n-1] f_nodes 3 n >= 4 <=>
tai
Taulukko
b
indeksoidaan −1, …,
m
− 1. Kirjoita predikaatti, joka sanoo että
b
:n ensimmäinen alkio ei ole
b
:n pienin alkio.
ok_text Oikein! array_claim b[-1...m-1] f_nodes 16 b_nodes 13 EE i; 0 <= i < m: b[-1] > b[i] <=>
tai
Taulukko
ξ
(MathCheckissä
xi
) indeksoidaan 3:sta alkaen, ja se sisältää
M
alkiota. Kirjoita predikaatti, joka sanoo että
ξ
:n jokainen alkio esiintyy
ξ
:ssä ainakin kahdesti.
ok_text Oikein! array_claim xi[3...M+2] f_nodes 40 b_nodes 27 AA z; 3 <= z < M+3: EE u; 3 <= u < M+3: u != z /\ xi[z] = xi[u] <=>
tai
Taulukko
i
indeksoidaan 2:sta alkaen, ja se sisältää
a
+ 1 alkiota. Kirjoita predikaatti, joka sanoo että jokin
i
:ssä esiintyvä arvo esiintyy
i
:ssä vain kerran.
ok_text Oikein! array_claim i[2...a+2] f_nodes 40 b_nodes 27 EE k; 2 <= k <= a+2: AA h; 2 <= h <= a+2 /\ h != k: i[k] != i[h] <=>
tai
Taulukko
x
indeksoidaan −5, …,
a
. Kirjoita predikaatti, joka sanoo että
x
:n paikassa −3 on luku 2.
ok_text Oikein! array_claim x[-5...a] f_nodes 20 b_nodes 10 a >= -3 /\ x[-3] = 2 <=>
tai
Taulukko
Γ
(MathCheckissä
Ga
) indeksoidaan −2, …,
g
. Kirjoita predikaatti, joka sanoo että
Γ
:n ensimmäinen ja viimeinen alkio ovat yhtäsuuret.
ok_text Oikein! array_claim GA[-2...g] f_nodes 20 b_nodes 11 GA[-2] = GA[g] /\ g >= -2 <=>
tai
Taulukko
A
indeksoidaan 1:stä alkaen, ja siinä on
n
alkiota. Kirjoita predikaatti, joka sanoo että paikassa 2 sijaitseva alkio on minimaalinen
A
:ssa (ts. mikään
A
:n alkio ei ole sitä pienempi).
ok_text Oikein! array_claim A[1...n] f_nodes 25 b_nodes 16 n >= 2 /\ AA i; 1 <= i <= n: A[i] >= A[2] <=>
tai
Taulukko
E
indeksoidaan 1:stä alkaen, ja siinä on
n
alkiota. Kirjoita predikaatti, joka sanoo että
E
:n pienin alkio (jokin niistä, jos on monta yhtä pientä) on paikassa
i
.
ok_text Oikein! array_claim E[1...n] f_nodes 25 b_nodes 18 index i 1 <= i <= n /\ AA j; 1 <= j <= n: E[j] >= E[i] <=>
tai
Taulukko
P
indeksoidaan 0:sta alkaen, ja siinä on
N
+ 1 alkiota. Kirjoita predikaatti, joka sanoo että
P
on kasvavassa järjestyksessä paikkaan
k
asti (paikan
k
täytyy olla olemassa), ja siitä alkaen vähenevässä järjestyksessä.
ok_text Oikein! array_claim P[0...N] f_nodes 39 b_nodes 35 0 <= k <= N /\ (AA i; 0 <= i < k: P[i] <= P[i+1]) /\ AA i; k <= i < N: P[i] >= P[i+1] <=>
tai
Taulukko
H
indeksoidaan 5, …,
m
+ 2. Kirjoita predikaatti, joka sanoo että
H
:n pienin alkio on arvoltaan 2. Se saattaa esiintyä
H
:ssa useasti.
ok_text Oikein! array_claim H[5...m+2] f_nodes 28 b_nodes 25 (EE i; 5 <= i <= m+2: H[i] = 2) /\ !(EE i; 5 <= i <= m+2: H[i] < 2) <=>
tai
Taulukko
H
indeksoidaan 5, …,
m
+ 2. Kirjoita predikaatti, joka sanoo että
H
:n pienin alkio on arvoltaan 2. Se ei esiinny
H
:ssa useasti.
ok_text Oikein! array_claim H[5...m+2] f_nodes 32 b_nodes 31 EE i; 5 <= i <= m+2: H[i] = 2 /\ AA j; 5 <= j <= m+2 /\ j != i: H[j] > 2 <=>
tai
Taulukko
H
indeksoidaan 4, …,
l
− 1. Ilman että käytät yhteenlaskua tms., kirjoita predikaatti, joka sanoo että
H
on kasvavassa järjestyksessä.
ok_text Oikein! array_claim H[4...l-1] f_nodes 19 b_nodes 15 f_ban + -; AA k: AA h; 4 <= k < h < l: H[k] <= H[h] <=>
tai
Taulukko
H
indeksoidaan 4, …,
l
− 1. Kirjoita predikaatti, joka sanoo että
H
on muutoin kasvavassa järjestyksessä, mutta paikkojen
i
ja
j
(missä
i
<
j
) alkiot ovat väärässä järjestyksessä.
ok_text Oikein! array_claim H[4...l-1] f_nodes 47 b_nodes 37 index i index j 4 <= i < j < l /\ H[i] > H[j] /\ AA k: AA h; 4 <= k < h < l: i = k /\ j = h \/ H[k] <= H[h] <=>
tai
Tämä riittäköön tällä kertaa!