Seuraa 
Viestejä3

Voisiko joku huomattavasti minua fiksumpi kaveri vähän valaistaa, mitä tässä oikein kysytään. Eli tehtävänanto:

Tekniikan opiskelijan lounaspaikassa on kolmenlaisia pitsoja: peruspitsa, ruispitsa ja pannupitsa. Pitsoihin valitaan 12 täytteestä kaksi erilaista. Maksamalla euron lisää voi valita vielä kolmannen täytteen. Opiskelija yrittää syödä aina erilaisen pitsan, joka eroaa kaikista aiemmista joko pohjaltaan tai täytteiltään. Kuinka monta viikkoa hän voi tehdä näin, jos hän syö ravintolassa viitenä päivänä viikossa? Anna vastaus kokonaislukuna ilman yksikköä.
Olen koittanut laskea tätä k-kombinaation kaavan mukaisesti (12 * 11* 10 / 2 * 3) * 3 = 660. Ja sitten jakaa 660/5, tulee 132.

  • ylös 3
  • alas 5

Sivut

Kommentit (78)

Veli Ponteva
Seuraa 
Viestejä954

Minun mielestä on loogista ottaa esimerkiksi 2 x punasipuli - ja usein otankin. Tehtävän anto on vähän epäselvä. Saako saman täytteen tuplata ja triplata?

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

elmis
Seuraa 
Viestejä527

Laskitko mukaan myös kahden täytteen tapauksen?

PS. Mielestäni tehtävänanto kielsi saman täytteen tuplaamisen tai triplaamisen.

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Veli Ponteva
Seuraa 
Viestejä954

Tietokone antaa vastaukseksi 1056 erilaista pizaa.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Veli Ponteva
Seuraa 
Viestejä954

Ja ohessa vielä koodi, jos siitä on apua, kun rupeaa tutkimaan pizza-ongelmaa tarkemmin:

# include < stdio.h >

typedef int pizza;

int uusi_pizza(pizza uusi)
{
   static pizza X[1<<16];
   static int pizza_kpl=0;

   for (int i=0; i<pizza_kpl; i++)
   {
      if (uusi==X[i]) return 0;
   }
   X[pizza_kpl]=uusi;
   ++pizza_kpl;
   return 1;
}

// tuotetaan satunnaiskokonaisluku
unsigned long rnd(unsigned max)
{
   static unsigned long R16A=1L;
   static unsigned long R16B=2L;
   R16A -= 0x012357bfL;
   R16B += 0xfedca201L;
   R16A += (R16A>>16)^(R16B<<16);
   R16B -= (R16A<<16)^(R16B>>16);
   return (R16A^R16B)%max;
}

void swap(char &a, char &b)
{
   char c=a; a=b; b=c;
}

pizza arvo_uusi_pizza(void)
{
   pizza x=rnd(3)<<24;
   char *p=(char*)&x;

   p[0]=rnd(12);
   do
   {
      p[1]=rnd(12);
   } while (p[0]==p[1]);

   if (rnd(2))
   p[2]=rnd(12);

   if (p[0]<p[1]) swap(p[0], p[1]);
   if (p[0]<p[2]) swap(p[0], p[2]);
   if (p[1]<p[2]) swap(p[1], p[2]);

   return x;
}

void main(void)
{
   int pizzoja=0;

   for (;;)
   {
      pizza uusi=arvo_uusi_pizza();
      if (uusi_pizza(uusi))
      {
         ++pizzoja;
         printf("%d\n", pizzoja);
      }
   }
}

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

PPo
Seuraa 
Viestejä15376

maikkeli kirjoitti:
Voisiko joku huomattavasti minua fiksumpi kaveri vähän valaistaa, mitä tässä oikein kysytään. Eli tehtävänanto:

Tekniikan opiskelijan lounaspaikassa on kolmenlaisia pitsoja: peruspitsa, ruispitsa ja pannupitsa. Pitsoihin valitaan 12 täytteestä kaksi erilaista. Maksamalla euron lisää voi valita vielä kolmannen täytteen. Opiskelija yrittää syödä aina erilaisen pitsan, joka eroaa kaikista aiemmista joko pohjaltaan tai täytteiltään. Kuinka monta viikkoa hän voi tehdä näin, jos hän syö ravintolassa viitenä päivänä viikossa? Anna vastaus kokonaislukuna ilman yksikköä.
Olen koittanut laskea tätä k-kombinaation kaavan mukaisesti (12 * 11* 10 / 2 * 3) * 3 = 660. Ja sitten jakaa 660/5, tulee 132.

Pohja voidaan valita 3 tavalla

2 täytettä 12*11/2=66 tavalla

3 täytettä 12*11*10/(2*3)=220 tavalla

Erilaisia pitsoja on 3*66+3*220=858

858/5=171,6

171 kokonaista viikkoa.

Veli Ponteva
Seuraa 
Viestejä954

elmis kirjoitti:
Laskitko mukaan myös kahden täytteen tapauksen?

PS. Mielestäni tehtävänanto kielsi saman täytteen tuplaamisen tai triplaamisen.

Jep, saman täytteen tuplaamisen ilman lisämaksua. Mutta jos maksaa ylimääräisestä täytteestä, kokki ei voi sanoa, että sinulla on jo punasipulia, joten en anna - vaikka omistaisit tämän pizzerian.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Veli Ponteva
Seuraa 
Viestejä954

Ero tietokoneen ja teidän tulosten välillä on se, että ohjelma antaa lisätäytteen riippumatta kahdesta ilmaisvalitusta täytteestä.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

wisti
Seuraa 
Viestejä18863

Rasvaperse kirjoitti:
elmis kirjoitti:
Laskitko mukaan myös kahden täytteen tapauksen?

PS. Mielestäni tehtävänanto kielsi saman täytteen tuplaamisen tai triplaamisen.

Jep, saman täytteen tuplaamisen ilman lisämaksua. Mutta jos maksaa ylimääräisestä täytteestä, kokki ei voi sanoa, että sinulla on jo punasipulia, joten en anna - vaikka omistaisit tämän pizzerian.


Sinun pitää riidellä tehtävän asettaneen ”opettajan” kanssa. Siitä et rahalla selviä.

Veli Ponteva
Seuraa 
Viestejä954

Kun tein ohjelmaan muutoksen, että kaikki kaksi (myös kolmas, jos se otetaan) ovat eri sorttia, erilaisia pizzoja on 693, eli:

693/5=13 viikkoa.

Nyt on varmaa, että lasku on laskettu väärin tai pizza-ohjelmani bugittaa.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

wisti
Seuraa 
Viestejä18863

Rasvaperse kirjoitti:
Kun tein ohjelmaan muutoksen, että kaikki kaksi (myös kolmas, jos se otetaan) ovat eri sorttia, erilaisia pizzoja on 693, eli:

693/5=13 viikkoa.

Nyt on varmaa, että lasku on laskettu väärin tai pizza-ohjelmani bugittaa.


Monellako tavalla tusinasta (12) voidaan valita kolmen ryhmä?

jarppah
Seuraa 
Viestejä2345

wisti kirjoitti:
Rasvaperse kirjoitti:
Kun tein ohjelmaan muutoksen, että kaikki kaksi (myös kolmas, jos se otetaan) ovat eri sorttia, erilaisia pizzoja on 693, eli:

693/5=13 viikkoa.

Nyt on varmaa, että lasku on laskettu väärin tai pizza-ohjelmani bugittaa.


Monellako tavalla tusinasta (12) voidaan valita kolmen ryhmä?

Ilman rajoituksia 12^3

jarppah
Seuraa 
Viestejä2345

jarppah kirjoitti:
wisti kirjoitti:
Rasvaperse kirjoitti:
Kun tein ohjelmaan muutoksen, että kaikki kaksi (myös kolmas, jos se otetaan) ovat eri sorttia, erilaisia pizzoja on 693, eli:

693/5=13 viikkoa.

Nyt on varmaa, että lasku on laskettu väärin tai pizza-ohjelmani bugittaa.


Monellako tavalla tusinasta (12) voidaan valita kolmen ryhmä?

Ilman rajoituksia 12^3

Ohiheittoon,, sori lukihäiriö

jarppah
Seuraa 
Viestejä2345

jarppah kirjoitti:
jarppah kirjoitti:
wisti kirjoitti:
Rasvaperse kirjoitti:
Kun tein ohjelmaan muutoksen, että kaikki kaksi (myös kolmas, jos se otetaan) ovat eri sorttia, erilaisia pizzoja on 693, eli:

693/5=13 viikkoa.

Nyt on varmaa, että lasku on laskettu väärin tai pizza-ohjelmani bugittaa.


Monellako tavalla tusinasta (12) voidaan valita kolmen ryhmä?

Ilman rajoituksia 12^3

Ohiheittoon,, sori lukihäiriö

Piti olla: ohhoh lukihäiriö... muun hölmöilyn päälle känny kirjoittelee omiaan😁

Veli Ponteva
Seuraa 
Viestejä954

Koodasin koko ohjelman vielä uudellee C++:lla. Jos täytteitä on 13, tulos olisi 858 erilaista pizzaa.

Mutta eikö tehtävän annossa sanota selkeästi, että täytteitä on 12, siispä erilaisia pizzoja on 660.

Riittää 660/5 = (tasan)132 viikkoa.

JA  KAS  MEITÄ  VIISAITA.  AINOASTAAN  KETJUN  ALOITTAJA  LASKI  LAAKISTA  OIKEIN.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Veli Ponteva
Seuraa 
Viestejä954

# include < stdio.h >
# include < memory.h >

# define TAYTTEITA 12

class pizza
{
   public:
   
   pizza(void);
   ~pizza(void);
   void teePizza(void);
   int onkoPizzaValidi(void);
   friend int operator==(pizza&, pizza&);
   
   private:
   
   int pohja;
   int validi;
   int taytteet[3];
};

pizza::pizza(void)
{
   memset(this, 0, sizeof(pizza));
}

pizza::~pizza(void)
{
}

// tuotetaan satunnaiskokonaisluku
unsigned long rnd(unsigned max)
{
   static unsigned long R16A=1L;
   static unsigned long R16B=2L;
   R16A -= 0x012357bfL;
   R16B += 0xfedca201L;
   R16A += (R16A>>16)^(R16B<<16);
   R16B -= (R16A<<16)^(R16B>>16);
   return (R16A^R16B)%max;
}

void swap(int &a, int &b)
{
   int c=a; a=b; b=c;
}

void pizza::teePizza(void)
{
   memset(this, 0, sizeof(pizza));
   pohja=rnd(3);
   taytteet[0]=rnd(TAYTTEITA);
   taytteet[1]=rnd(TAYTTEITA);
   if (rnd(2))
   taytteet[2]=rnd(TAYTTEITA);
   
   if (taytteet[0] < taytteet[1]) swap(taytteet[0], taytteet[1]);
   if (taytteet[0] < taytteet[2]) swap(taytteet[0], taytteet[2]);
   if (taytteet[1] < taytteet[2]) swap(taytteet[1], taytteet[2]);
}

int pizza::onkoPizzaValidi(void)
{
   validi=1;
   if (taytteet[0]==taytteet[1]) validi=0;
   if (taytteet[0]==taytteet[2]) validi=0;
   if (taytteet[1]==taytteet[2]) validi=0;
   return validi;
}

int operator==(pizza &a, pizza &b)
{
   if (a.pohja==b.pohja)
   if (a.taytteet[0]==b.taytteet[0])
   if (a.taytteet[1]==b.taytteet[1])
   if (a.taytteet[2]==b.taytteet[2])
   {
      return 1;
   }
   return 0;
}

int uusi_pizza(pizza uusi)
{
   static pizza X[1<<16];
   static int pizza_kpl=0;
   
   for (int i=0; i<pizza_kpl; i++)
   {
      if (uusi==X[i]) return 0;
   }
   X[pizza_kpl]=uusi;
   ++pizza_kpl;
   return 1;
}

void main(void)
{
   pizza uusi;
   int pizzoja=0;
   
   for (;;)
   {
      uusi.teePizza();
      if (uusi.onkoPizzaValidi())
      if (uusi_pizza(uusi))
      {
         ++pizzoja;
         printf("%d\n", pizzoja);
      }
   }
}

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

wisti
Seuraa 
Viestejä18863

Rasvaperse kirjoitti:
Koodasin koko ohjelman vielä uudellee C++:lla. Jos täytteitä on 13, tulos olisi 858 erilaista pizzaa.

Mutta eikö tehtävän annossa sanota selkeästi, että täytteitä on 12, siispä erilaisia pizzoja on 660.

Riittää 660/5 = (tasan)132 viikkoa.

JA  KAS  MEITÄ  VIISAITA.  AINOASTAAN  KETJUN  ALOITTAJA  LASKI  LAAKISTA  OIKEIN.


Luku 660 edustaa vain kolmen täytteen pitsoja. Siinä ei ole mukana kahden täytteen luomuksia lainkaan.

wisti
Seuraa 
Viestejä18863

Laskepa ****perse koodaten seuraava tehtävä tarkistukseksi. Pitsapohjia yksi, ei siis kome. Täytteitä vain kolmea sorttia. Nyt kahden täytteen pitsoja on kome ja kolmen täytteen yksi. Antaako ohjelmasi yhteensä neljä?

Veli Ponteva
Seuraa 
Viestejä954

Teen vielä yhden pizza-ohjelman, jossa on tuki kaikenmallisille pizzavariaatioille.Teen sen huomenna.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Sivut

Suosituimmat

Uusimmat

Sisältö jatkuu mainoksen alla

Suosituimmat