- ベストアンサー
組み合わせを選ぶためのプログラミングについて
どなたか、こんなプログラムがエクセルなどの計算ソフトで作成できるものなのか教えてください。 例えば、1,2,3,4 という数字の因子があり、このうちのどんな組み合わせでも良いので4になる組み合わせを選び出し、答えとして「1,3」 と 「4」 を導き出すプログラムです。 よろしく御願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ここの「お知らせ」や「はじめての方へ」や「ご利用ガイド」等を細かく見ていただければわかると思いますが、 ・自分の環境 ・自分のスキルレベル ・何をやりたいか ・自分はどうやったか ・どううまくいかないか 等をできる範囲で細かく書いていただけないと、適切な回答はできません。 例えばプログラムをしようとしているのに「アルゴリズム」という単語を知らなかったというのは貴方の「お礼」で初めてわかりました。 仕事でプログラムをするなら、「情報処理用語辞典」のたぐいの書籍は最低入手しておきましょう。趣味でやられる方にはここまで言いませんが。 こういう内容の解法の物は、数学的な物ですから、たぶんそこら辺を調べないといけないと思います。「アルゴリズム辞典」のたぐいにもあるかもしれません。ただ、VBAでのサンプルは載っていないでしょうから、他の知識も必要になるかもしれません。(例えばC言語) 前回も言いましたが、簡単なのは総当たりでやってみるということですね。1と2を足したら3だから違う、1と3を足したら4だから解の1つ、1と4を足したら5だから違う、というふうにです。やり方としては稚拙ですが、まずこういう簡単に思いつく方法でやってみて、その後そのアルゴリズムを最適化していくという手法をとれば、多少はましになるでしょう。最適化で思いつく1つは、足される前の数字の1つが既に合計を越えていたら計算しない、等ですね。 それでは、がんばってください。
その他の回答 (3)
- i-touch
- ベストアンサー率40% (170/415)
「プログラムが組めるか」という質問なのか、「このプログラムはどう作るのか」という質問なのかよく分からないところがありますが・・・ エクセルでは「マクロ」=VBA(VisualBasic for Applicationだったか)という領域で、プログラムが組めるようになっていて、そこにBASIC言語でプログラムを書いて、すぐに実行できます。 一度起動して「ツール」→「マクロ」・・・とやってみてください。 例のプログラムでなら、前の方が書いたとおり、総当りのロジックを書くといいかと思います。 いかに計算回数が多くても、パソコンがやってくれますから。 VBAの使い方は、本屋に行って、VBA関連の本を買ってくるといいかと思います。 いっぱいありますよ。用途に応じたものを選んでください。 そのつど変更する変数や、結果の数値は、エクセルのセルからもらったり、出力させたりするといいと思います。(入出力項目が少ないときは InputBoxとかMsgBoxで) プログラミングは面白いので、はまりすぎないように頑張ってください。
お礼
お二人とも、私のつたない質問にお付き合いいただき、どうも有り難うございました。 お二人のアドバイスに基づいて、資料等を探していきたいと思います。 ありがとう(^з^)-☆チュ!! と男からされてもきもいだけでしょうから、ポイントをお二人におつけします。 ほんとはお二人に20づつあげたいのですが、そうも行かないので、回答を頂いた順でご容赦ください。 ほんとに、どうもでした。
- KojiS
- ベストアンサー率46% (145/312)
解法は、まず手動で解く時にどうするか、ということから入ります。一番簡単に思いつくのは総当たりですね。それをプログラムしてみましょう。 仕事に使うのですから、こういうところで質問する前に、いろいろ調べ考えましょう。アルゴリズム辞典のたぐいの本にはあるかもしれません。また、数学的な解法もあるかもしれません。 まずは本屋で探すのが良いかもしれません。 蛇足:できている物を無償でもらおうという考えはやめましょう。
お礼
早速のご回答有り難うございます。回答中のご指摘は、ある面では、もっともだと思います。私の質問中にご指摘のとおり適切ではない考え方もあったと思い、今後記載に当たっては、熟考するようにしたいと思います。 ただ、全くわからないものが物事を調べる場合、この場は、良い取っ掛かりを探す場だとは思うのですよ。 本で調べるのであろうと知人に聞くのであろうと教えてgooであろうとネットサーフィンであろうと、取っ掛かりを探すという作業には大差はないと思うからです。 その根拠としては、現にご回答により、アルゴリズムという単語そのものがわからないとの状況が若干打破できたと言えるからです。 その点において、今回及び前回のご回答には大変感謝しております。 どうも有り難うございました。
- KojiS
- ベストアンサー率46% (145/312)
エクセル自体の機能では無いはずです。 プログラムという観点から見れば、どういうアルゴリズムを考えているかによります。 アルゴリズム(解法)は考えていますか?
補足
早速の回答有り難うございます。 質問が適切でなくて申し訳ありません。私自身が全くそういうことがわからないものですが、仕事に必要なことから、ごく簡単にできるものなら作り方を教えてもらって何とか作れればと思ったのです。 ただ、アルゴリズムと言われただけで、めまいがするため前途多難な感じがします。 私のイメージとしては、解法はどんなものでも良いですが、応用の利くもの、たとえば答えが10になるものという方法もできるし、答えが8~10になるものという方法もできるものでないと困ると考えています。 ですが、正直に言えば、もしそういったプログラムを組んだエクセルのデータをお持ちなら、分けていただけたりすると、ものすごく喜びます。
お礼
お二人とも、私のつたない質問にお付き合いいただき、どうも有り難うございました。 お二人のアドバイスに基づいて、資料等を探していきたいと思います。 ありがとう(^з^)-☆チュ!! と男からされてもきしょいだけでしょうから、ポイントをお二人におつけします。 ほんとはお二人に20づつあげたいのですが、そうも行かないので、回答を頂いた順でご容赦ください。 ほんとに、どうもでした。