Cel mai bun răspuns
Există multe răspunsuri interesante la această … întrebare bizzare … s-ar putea la fel de bine să-mi încerc norocul, presupun ?
Deci, ni se dă: 2 + 2 = 6 și 1 + 3 =?
Metoda 1:
Această întrebare este cumva etichetată sub Trucuri și puzzle-uri matematice și presupun că putem suspenda toată logica matematică pe care o cunoaștem, să spunem ceteris paribus.
La o inspecție mai atentă, vedem că singurul diferența dintre ambele ecuații este -1 (2 → 1) și +1 (2 → 3). Presupunând ceteris paribus așa cum am menționat, răspunsul ar trebui să experimenteze atât -1 și +1.
Prin urmare, posibil răspunsul simplu este
1 + 3 = 6
Metoda 2:
Și deoarece acesta este un puzzle, să luăm lucrurile dintr-o altă perspectivă. În timp ce alte metode au început să utilizeze alfabete, voi încerca o tehnică de substituție tipică … deși poate fi defectă.
Să presupunem că 2 = 3.
2u = 3 deci, 1u = 1.5 și 3u = 4.5
Prin urmare, 1 + 3 = 1.5 + 4.5 = 6
Metoda 3:
Vedem că există 4 numere prezente (2, 2, 1, 3), dintre care două sunt aceleași (2) . Dacă ar fi să folosim multiplicarea, ce ar fi dacă numerele ar fi împărțite în ambele ecuații?
2 × 3 = 6. Am rămas cu 2 și 1.
Prin urmare, 2 × 1 = 2 = 1 + 3 = 2.
Acolo sunt atât de multe răspunsuri posibile și totul se rezumă la creativitatea noastră în îndoirea legilor matematice.
Actualizare: mi-a plăcut foarte mult abordarea literelor la puzzle și mâini în jos, trebuie să fie cea mai logică, dar cea mai potrivită metodă pentru un puzzle.
Răspuns
Se pare că acest lucru necesită supraîncărcarea simbolului +!
Ce zici de asta? Dacă aveți o expresie în care un număr întreg dat – numiți-l Iepure pentru a discuta – apare pe ambele părți ale +, este de datoria dvs. să dublați Iepurele, să păstrați rezultatul și să adăugați Iepure în pătrat. Deci, 7 + 7 înseamnă că trebuie să dublați 7, oferind 14. Pătrat 14, oferind 196. În cele din urmă, adăugați 7 la 196, oferind 203.
Aceasta pare a fi partea ușoară. Partea interesantă a puzzle-ului, pentru mine, este cum să scriu o definiție a metodei supraîncărcate + în Scala, astfel încât corpul definiției să poată folosi + cu sensul său obișnuit de simplă adăugare, nu o referință recursivă.
Va trebui să mă zgâri în cap.
Actualizare: Următorul dialog Scala REPL ilustrează o modalitate de a da + un nou sens, în contextul unui nou tip de date numit Iepure.
scala> case class Rabbit(i: Int) {def +(y:Rabbit):Int=4*i*i+y.i}
defined class Rabbit
scala> Rabbit(7)
res5: Rabbit = Rabbit(7)
scala> res5+res5
res6: Int = 203
scala> (1 to 7).map(Rabbit(\_)).map(r=>r+r)
res7: scala.collection.immutable.IndexedSeq[Int] = Vector(5, 18, 39, 68, 105, 150, 203)