codez Posted April 18, 2015 Report Share Posted April 18, 2015 Risinot šo uzdevumu izdomāju interesantu variantu. Ir 2 skaitļi no 1 līdz 99, Jānim pasaka skaitļu reizinājumu, bet Pēterim summu. Starp viņiem norisinās šāds dialogs: J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Es nezinu šos skaitļus P: Es nezinu šos skaitļus J: Tagad es zinu šos skaitļus Kādi ir šie skaitļi? Quote Link to comment Share on other sites More sharing options...
php newbie Posted April 18, 2015 Report Share Posted April 18, 2015 pat nezinu ar ko sākt... Quote Link to comment Share on other sites More sharing options...
codez Posted April 21, 2015 Author Report Share Posted April 21, 2015 Uzdevums patiesībā nav grūts. Uzģenerējam visus iespējamos variantus, kopā ar to summām un reizinājumiem. Ja sākumā Jānis nezin, tas nozīmē, ka ir viņa reizinājums ir vairākas reizes starp iespējamajiem variantiem. Sagrupējam visus variantus pēc reizinājuma un atlasām to, kuri ir vairāk kā 1 reizi. To pašu dara ar summām, atlasa tās, kuras ir vairāk kā vienu reizi. Pēdējos 2 soļus dara 7 reizes. Tālāk, ja Jānis zin atbildi, tas nozīmē, ka šajā brīdī eksistē viens variants ar unikālu reizinājumu, kas arī ir atbilde. Kurš tiks pie atbildes? Quote Link to comment Share on other sites More sharing options...
waplet Posted April 21, 2015 Report Share Posted April 21, 2015 A pēc kā atlasīt otrajā iterācija? Quote Link to comment Share on other sites More sharing options...
codez Posted April 21, 2015 Author Report Share Posted April 21, 2015 Tāpat kā pirmajā. Pirmajā sākumā noņem visus reizinājumus, kas ir pa vienam, pēc tam visas summas. Otrajā iterācijā atkal būs jauni reizinājumi, kuri ir par vienam, jo iepriekš noņemot summas tādi varēja rasties. Quote Link to comment Share on other sites More sharing options...
php newbie Posted April 21, 2015 Report Share Posted April 21, 2015 it kā esmu mēģinājis šitādi ar tām funkcijām no mana uzdevuma. Varbūt {'sum', 'mul'} neuzmanības deļ nenomainijuanyway sanāca: 77;84 Quote Link to comment Share on other sites More sharing options...
codez Posted April 21, 2015 Author Report Share Posted April 21, 2015 (edited) Jā, tā ir pareizā atbilde. 77 un 84 https://ideone.com/X48DIB case class State(a: Int, b: Int, sum:Int, prod:Int) val allPossibleStates:Seq[State] = for { i <- 1 to 99; j <- i to 99 } yield State(i,j,i+j,i*j) (1 to 7).foldLeft(allPossibleStates)( (states, _) => states .groupBy(_.prod).filter(_._2.size > 1).flatMap(_._2) .groupBy(_.sum).filter(_._2.size > 1).flatMap(_._2) .toSeq ).groupBy(_.prod).filter(_._2.size == 1).flatMap(_._2) .map(println) P.S. Gribēju ielikt uzdevumu stackexcahnge puzlēs, bet ierakstot virsrakstu pamanīju, ka ir vesela kaudze ar summas un reizinājuma uzdevumu variācijām. Un kā reizi viena tieši tāda pati: http://puzzling.stackexchange.com/questions/8440/product-and-sum-variant-2b 1 - 99 izvēlējos tāpēc, ka tas bija ar visgarāko "es nezinu" dialogu. Daudzi pārējie varianti apkārt bija īsāki. Edited April 21, 2015 by codez Quote Link to comment Share on other sites More sharing options...
waplet Posted April 21, 2015 Report Share Posted April 21, 2015 PHP ir tāds groupBy idejiski? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.