Tema de astăzi constă în două probleme, la alegere:
Problema 1
Presupunem că moda respectă un set de reguli stricte, după cum urmează:
- In fiecare an, obiectele vestimentare sunt fie Mini, fie Maxi, fie Office, iar stilurile se succed exact in aceasta ordine;
- Culoarea predominanta in fiecare an este una dintre Rosu, Oranj, Galben, Verde, Albastru, Indigo sau Violet - ordinea este cea enumerata, cu 3 exceptii: cand Rosu este la moda, tine 3 ani la rand; Albastru tine 2 ani la rand, iar Indigo (care este mai rar) rateaza una din doua ocazii de a fi la moda. O succesiune tipica este:
RRROGVeAAIViRRROGVeAAViRRROGVeAAIVi....
- Accesoriile preferate sunt din trei categorii: Minimal, Extravagant si Clasic. Minimal merge cu moda Mini si Office, dar nu pe Verde si Galben; Extravagant merge doar pe Mini si Maxi; Clasic nu merge pe Rosu, Albastru si Violet; se poate, fireste, ca intr-un an sa mearga mai multe tipuri de accesorii (e.g. intr-un an Mini Oranj merg toate)
Daca 2012 este un an Office Violet, ne intereseaza ce moda era in 1965 si ce moda va fi in
2025.Problema 2
Presupunem ca in Europa Champions League s-a realizat un pact secret prin care sa se imparta castigatori in mod "echitabil" intre echipele mari, stabilind urmatorul algoritm in urma negocierilor:
- In fiecare an castigatoarea ECL este din una dintre tarile Anglia, Franta, Spania, Germania, Italia, Portugalia, Rusia, Olanda in aceasta ordine, insa cu cateva exceptii: echipele din Anglia,Spania si Italia castiga cate doua finale la rand, cele din Portugalia castiga doar o data la doua cicluri, cele din Rusia doar o data la trei cicluri, iar la fiecare 4 cicluri apare o castigatoare dintr-o alta tara. Un exemplu de succesiune:
AAFSSGIIPROAAFSSGIIOAAFSSGIIPOAAFSSGIIROAADDSSGIIPOU....
- Pentru a pastra aparentele, echipa castigatoare trebuie sa para cea mai puternica, in consecinta trebuie sa aiba cei mai multi Brazilieni in componenta. Concurenta fiind puternica, in fiecare an standardul este diferit - echipele din Portugalia dau tonul: cand castiga o echipa din Portugalia, numarul de Brazilieni necesari ca o echipa sa castige ECL se reseteaza la 1, dupa care creste cu 1 in fiecare an, insa nu mai multi de 10, care este limita impusa de ECL
Pentru efectul vizual, o echipa castigatoare a ECL trebuie sa poarte tricouri cu doua dintre urmatoarele culori: Rosu, Alb, Albastru, Negru (o culoare principala si una secundara). Pentru a nu fi nicio confuzie totusi, in doi ani succesivi, echipele castigatoare trebuie sa poarte tricouri diferite, dupa urmatoarea regula: prima culoare este urmatoarea in ordinea enumerarii, iar a doua culoare este cea precedenta in ordinea enumerarii. De exemplu, dupa Rosu-Albastru, urmeaza Alb-Alb; dupa Rosu-Negru urmeaza Alb-Albastru;
Din ce tara va fi echipa castigatoare a ECL in 2025, cati brazilieni va avea si ce culori va purta pe tricou, daca anul acesta (2012) castiga CSKA Moscova (Rusia, Rosu-Negru), iar in 2011 a castigat FC Porto (Portugalia, Alb-Albastru)?
Care este urmatorul an in care Steaua Bucuresti ar putea castiga ECL -- de asemenea, ce culori ar trebui sa poarte si cati Brazilieni ar trebui sa aiba Steaua in componenta in anul respectiv?
Va reamintesc (prin exemple) urmatoarele concepte:
Clasa
Se defineste:
public class Dog {
private String name, race;
private Date dateOfBirth;
private double weight;
public Dog(String dogName, String dogRace, Date dogDateOfBirth) {
this.name = dogName;
this.race = dogRace;
this.dateOfBirth = dogDateOfBirth;
}
public String getName() {
return this.name;
}
public void setName(String dogName) {
this.name = dogName;
}
public Date getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getRace() {
return race;
}
public void setRace(String race) {
this.race = race;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
... si se foloseste:
Dog myDog=new Dog("Noroc","Maidanez",new Date());
myDog.setWeight(35.3);
Structuri de control
for
for(int i=0;i<10;i++){
System.out.printf("Am ajuns la iteratia %d",i);
}
while
int i=0;
while(i<10){
System.out.printf("Am ajuns la iteratia %d",i);
i++;
}
if ... else
Date now=new Date();
if(now.getTime()%2L==0){
System.out.printf("Suntem intr-o milisecunda para");
}
else{
System.out.printf("Suntem intr-o milisecunda impara");
}
switch ... case ... default
Date now=new Date();
switch((int)(now.getTime()%3L)){
case 2:
System.out.printf("Milisecunda de acum da restul 2 la impartirea cu 3");
break;
case 1:
System.out.printf("Milisecunda de acum da restul 1 la impartirea cu 3");
break;
default:
System.out.printf("Milisecunda de acum se imparte la 3");
break;
}
0 comentarii:
Trimiteți un comentariu