1. feladat
Az union és a minus szokványos halmazműveletek.
> | select(isprime, {seq(i, i=3..9999)}) minus ({seq(i^2-2, i=1..100)}
union {seq(i^2-1, i=1..100)} union {seq(i^2+1, i=1..100)} union {seq(i^2+2, i=1..100)}); |
Csak eddigi módszerekkel:
> | l:={}:
for i from 1 to 9999 do if isprime(i) and floor(sqrt(i-2))^2 <> i-2 and floor(sqrt(i-1))^2 <> i-1 and floor(sqrt(i+1))^2 <> i+1 and floor(sqrt(i+2))^2 <> i+2 then l:={op(l),i}; end if; end do: l; |
2. feladat
> | l:=[0,0,1,1,0,1,0,1]; |
> | m:=0: k:=0:
i:=1: while i < nops(l) do if l[i] = 0 and l[i+1] = 1 then k:=k+1: i:=i+2; else k:=0: i:=i+1; fi: m:=max(m,k): od: m; |
3. feladat
> | vissza := proc(l::list)
local n,i: n:=0: for i from 1 to nops(l) do n:=2*n: n:=n+l[i]: od: n; end proc: |
> | vissza([1,1,0]); |
> | vissza([1]); |
> | vissza([1,1]); |
Máshogyan: a lineáris algebra részben volt egy példa, hogy egy mátrixot vektorral hogyan kell szorozni. Két vektor skaláis szorzatát sem nehéz venni, ami rögtön adja a megoldást:
> | vissza2 := proc(l::list)
local i; evalm(l&*[seq(2^(nops(l)-i),i=1..nops(l))]); end proc; |
> | vissza2([1,1,0]); |
> | vissza2([1,1]); |