codez Posted April 18, 2015 Report 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
codez Posted April 21, 2015 Author Report 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
codez Posted April 21, 2015 Author Report 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
php newbie Posted April 21, 2015 Report 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
codez Posted April 21, 2015 Author Report 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
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.