Najlepsza odpowiedź
Jest wiele interesujących odpowiedzi na to… dziwaczne pytanie… równie dobrze mógłbym spróbować szczęścia ?
Zatem otrzymujemy: 2 + 2 = 6 i 1 + 3 =?
Metoda 1:
To pytanie jest w jakiś sposób oznaczone w sekcji Mathematical Tricks and Puzzles i przypuszczam, że możemy zawiesić całą logikę matematyczną, którą znamy, powiedzieć ceteris paribus.
Po dokładniejszym przyjrzeniu się widzimy, że jedyny różnica między obydwoma równaniami to -1 (2 → 1) i +1 (2 → 3). Zakładając ceteris paribus , jak wspomniano, odpowiedź powinna również występować zarówno -1 i +1.
Dlatego prawdopodobnie najprostsza odpowiedź to
1 + 3 = 6
Metoda 2:
A ponieważ jest to puzzle, weźmy rzeczy z innej perspektywy. Podczas gdy inne metody zaczęły używać alfabetów, spróbuję typowej techniki zastępowania… chociaż może być wadliwa.
Załóżmy, że 2 = 3.
2u = 3, więc 1u = 1,5 i 3u = 4,5
Dlatego 1 + 3 = 1,5 + 4,5 = 6
Metoda 3:
Widzimy, że są obecne 4 liczby (2, 2, 1, 3), z których dwie są takie same (2) . Gdybyśmy mieli użyć mnożenia, co by było, gdyby liczby zostały podzielone na oba równania?
2 × 3 = 6. Zostało nam z 2 i 1.
Dlatego 2 × 1 = 2 = 1 + 3 = 2.
Tam jest tak wiele możliwych odpowiedzi, a wszystko sprowadza się do naszej kreatywności w naginaniu praw matematycznych.
Aktualizacja: bardzo podobało mi się podejście literowe do łamigłówki i wskazówki w dół, musi to być najbardziej logiczna, ale najlepiej dopasowana metoda układanki.
Odpowiedź
Wygląda na to, że wymaga to przeciążenia symbolu +!
A co powiesz na to? Jeśli masz wyrażenie, w którym dana liczba całkowita – nazwij ją Królikiem dla celów dyskusji – pojawia się po obu stronach +, Twoim obowiązkiem jest podwojenie Królika, podniesienie wyniku do kwadratu i dodanie Królika do kwadratu. Zatem 7 + 7 oznacza, że musisz podwoić 7, dając 14. Kwadrat 14, dając 196. Na koniec dodaj 7 do 196, dając 203.
Wydaje się, że to łatwa część. Dla mnie interesującą częścią układanki jest to, jak napisać definicję tej przeciążonej + metody w Scali, tak aby treść definicji mogła używać znaku + ze zwykłym znaczeniem prostego dodawania, a nie rekursywnego odniesienia.
Będę musiał podrapać się w głowę.
Aktualizacja: Poniższe okno dialogowe REPL Scala ilustruje sposób nadania + nowego znaczenia w kontekście nowego typu danych o nazwie Rabbit.
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)