Paras vastaus
Tähän… bizzare-kysymykseen on monia mielenkiintoisia vastauksia … luultavasti voisin myös kokeilla onneani ?
Meille annetaan siis: 2 + 2 = 6 ja 1 + 3 =?
Menetelmä 1:
Tämä kysymys on jotenkin merkitty matemaattisiin temppuihin ja palapeleihin ja luulen, että voimme keskeyttää kaiken tiedämme matemaattisen logiikan, sanoa ceteris paribus.
Tarkasteltaessa huomaamme, että ainoa ero molempien yhtälöiden välillä on -1 (2 → 1) ja +1 (2 → 3). Olettaen, että ceteris paribus mainittiin, vastauksen tulisi myös kokea molemmat -1 ja +1.
Siksi mahdollisesti yksinkertainen vastaus on
1 + 3 = 6
Menetelmä 2:
Ja koska tämä on palapeli, otetaan asiat toisesta näkökulmasta. Vaikka muut menetelmät ovat alkaneet käyttää aakkosia, yritän tyypillistä korvaustekniikkaa … vaikka se saattaa olla puutteellinen.
Oletetaan, että 2 = 3.
2u = 3, siis 1u = 1,5 ja 3u = 4,5
Siksi 1 + 3 = 1,5 + 4,5 = 6
Tapa 3:
Näemme, että läsnä on 4 numeroa (2, 2, 1, 3), joista kaksi on samat (2) . Jos käytämme kertolaskua, entä jos numerot jaettaisiin molempiin yhtälöihin?
2 × 3 = 6. Olemme jäljellä 2 ja 1 kanssa.
Siksi 2 × 1 = 2 = 1 + 3 = 2.
Siellä on niin monia mahdollisia vastauksia, ja se kaikki johtuu luovuudestamme matemaattisten lakien taivuttamisessa.
Päivitys: Pidin todella palapelin ja käsien kirjaimellisesta lähestymistavasta alaspäin, sen on oltava loogisin mutta silti sopivin tapa palapelille.
Vastaus
Näyttää siltä, että tämä vaatii ylikuormittaa + -merkkiä!
Entä tämä? Jos sinulla on lauseke, jossa annettu kokonaisluku – kutsu sitä keskustelun vuoksi Kaniksi – näkyy +: n molemmin puolin, sinun on kaksinkertaistettava Kani, neliö tulos ja lisättävä Kani neliöön. Joten 7 + 7 tarkoittaa, että sinun on kaksinkertaistettava 7, jolloin 14. Neliö 14, jolloin 196. Lisää lopuksi 7 196: een ja anna 203.
Se näyttää olevan helppo osa. Palapelin mielenkiintoinen osa on minulle se, kuinka kirjoitetaan määritelmä tälle ylikuormitetulle + -menetelmälle Scalassa siten, että määritelmän runko voi käyttää + tavallisella merkityksellään yksinkertainen lisäys, ei rekursiivinen viite.
Minun on naarmuttava siitä päätäni.
Päivitys: Seuraava Scala REPL -valintaikkuna kuvaa tapaa antaa + uusi merkitys uuden tietotyypin yhteydessä, nimeltään Kani.
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)