ベストアンサー
これには興味深い答えがたくさんあります…奇妙な質問…私が思うに、運を試してみたほうがいいかもしれません?
つまり、次のようになります: 2 + 2 = 6 および 1 + 3 =?
方法1:
この質問は、数学的なトリックとパズルの下で何らかの形でタグ付けされています ceterisparibusなどの既知のすべての数学ロジックを一時停止できると思います。
詳しく調べてみると、両方の方程式の違いは、 -1(2→1)と +1(2→3)です。 前述のように、 ceteris paribus を想定すると、回答でも -1 の両方が発生するはずです。および +1。
したがって、おそらく簡単な答えは
1 + 3 = 6
方法2:
これは、パズル、別の視点から物事を見てみましょう。他の方法でもアルファベットの使用が開始されていますが、欠陥があるかもしれませんが、一般的な置換手法を試してみます。
2 = 3と仮定しましょう。
2u = 3なので、1u = 1.5および3u = 4.5
したがって、 1 + 3 = 1.5 + 4.5 = 6
方法3:
4つの数字(2、2、1、3)があり、そのうち2つは同じ(2)であることがわかります。 。乗算を使用する場合、数値を両方の方程式に分割するとどうなりますか?
2×3 = 6。残ります。 2と1を使用します。
したがって、 2×1 = 2 = 1 + 3 = 2。
あります。考えられる答えはたくさんありますが、それはすべて、数学の法則を曲げる創造性に帰着します。
更新:パズルと手への文字によるアプローチが本当に気に入りましたダウン、それはパズルのための最も論理的でありながら最も適切な方法でなければなりません。
答え
これは+記号をオーバーロードする必要があるようです!
これはどうですか? +の両側に特定の整数(説明のためにRabbitと呼びます)が表示される式がある場合、Rabbitを2倍にし、結果を2乗し、その2乗にRabbitを追加する必要があります。つまり、7 + 7は、7を2倍にして14を与える必要があることを意味します。Square14は196を与えます。最後に、7を196に加えて203を与えます。
これは簡単な部分のようです。私にとってパズルの興味深い部分は、オーバーロードされた+メソッドの定義をScalaで記述して、定義の本体が再帰的な参照ではなく、単純な加算という通常の意味で+を使用できるようにする方法です。
それについて頭を悩ませる必要があります。
更新:次のScala REPLダイアログは、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)