先日SNSで次のようなクイズが表示されていて、それを回答している様子をプログラミングしてみたくなり、ブログで書いてみました。
普通に解答
何も説明が書かれていないので、勝手にルールを設定してみると、
ABCには、それぞれ別々の数値が入ると考えて、3桁の値を3個足し込んだときに、777という値になればいいということで、
まずは、777を3で割ってみます。
777 ÷ 3 = 259
キレイな形で割れたので、この259と言う数値がそれぞれ、A,B,Cだという事がわかります。
次に、「A+B+C = ?」とのことなので、
2 + 5 + 9 = 16
これが答えじゃないかと思います。
特に正解を見たわけじゃないんですが、おそらく間違っていないと思われます。
プログラミング的思考
手っ取り早くプログラミングするには、やっぱりJavascriptですね。
const answer = 777
let a = null
let b = null
let c = null
// 合計値を3で割る
const devide3 = answer / 3
// 桁べつに数値を格納する
a = String(debide3).charAt(0)
b = String(debide3).charAt(1)
c = String(debide3).charAt(2)
// 格納した数値の合計
console.log(a+b+c)
結果 > 16
比較的カンタンにできますが、難しいと感じた人は、おそらく、3桁の数値を、それぞれ1桁の値に変換する方法がわからなかったんじゃないでしょうか?
いろいろな方法があり、余剰計算などで算出することもできますが、今回は、3桁数値を文字列に変換して、文字を順番に値で取得しています。
プログラミングコードをもっと短く書いてみる
var arr=0,num
(a=>{for(num in String(a)){arr+=Number(String(a).charAt(num))}})(777/3)
console.log(arr)
結果 > 16
Javascript特有の無名関数と、アロー関数記述で書いてみました。
もっと短くすることもできそうなので、これを追求するのも面白いですね。
あとがき
たまにみかけるSNSなどでの問題の解答の先を考えたくなるこのクセ・・・
良いのか悪いのか自分でもわかっていませんが、
プログラミングに落とし込めるものは、なかなか多次元的に遊べると個人的に思っています。
ここから更に遊ぶ方法もあって、
・作り出したプログラムを以下に短く構築できるか?
・別のプログラム言語で書いてみる。
・問題を別の値に置き換えることができるか?
もはや、そもそもの問題の出題の意図とは大きくかけ離れてしまっていますが、個人的にはこんな脳ミソの思考でいるため、楽しみが他人のソレよりも違っている可能性もあるかもですね。
自分が楽しめればいいんですよ。
世の中の楽しめる素材を探す目を持った、ユゲタのブログでした。
0 件のコメント:
コメントを投稿