コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
ヘンルーダ ◆yprQSt4Ll9A2
2018/12/4 22:21
情報交換
プログラミング問題を解くにあたって
当然解法や方針はいくつもありますが、だからこそ、私が立てた方針への批評、皆さんの立てる方針の例を教えて頂けると嬉しいです。

プログラミング問題:集合論
最初のカードには, 集合Aの要素の5個の整数がパンチされ, 2枚目のカードには, 集合Bの要素の7個の整数がパンチされている. (a) A∩B, (b) A∪B, (c) A\B を書き出すプログラムを書け. 以下を入力してプログラムを試せ :
(@)
1枚目 : 1, 3, −5, 8, −4
2枚目 : 7, −4, 2, 3, 8, −6, 5
(A)
1枚目 : 1, 3, −5, 8, −4
2枚目 : 7, −2, 3, 2, −6, 9, −4
(引用:マグロウヒル大学演習 離散数学より)

私が立てた方針と言いましたが、厳密には解釈と言い表すのが良いのかもしれません。(初見では何を言っているのか分からなかった)
以下私の解釈。
すべきこと:
1枚目と2枚目について、(a)共通してある整数, (b)少なくともどちらかにある整数, (c)1枚目にあって2枚目にない整数を各々判定し、printすることが出来ればよさそう。
実際のプログラムの為に:
dataとreadを使うことができそう。(使ったことないけど)
判定には、1枚目から選んだ整数と2枚目の整数を照合し、共通した場合を何らかで記録しておくことができればよさそう。

コメント

アバター
こういち 2018/12/5 5:26 ◆ou0jbJnEJ0Kb
すべきことはOKだと思います。
何らかで記録するの何らかの部分は
Unionfind木が効率良さそう。(詳しくは知らない)
まぁ配列で良いと思います。
アバター
ツララ 2018/12/5 11:23 ◆ArUdBYOYME1V
そもそもこれって入力がパンチカード式のコンピュータの演習問題だったから
意味不明だったんじゃないんです?
数学記号の∩が共通部分で、∪が和集合で、\が差集合を表してるって言う専門用語の知識があれば
やることは入力と計算と出力っていう、機械に計算させる基本的な操作なだけですし
それがプチコンではどんな命令に相当するのかっていうのが分かれば
問題になるのはアルゴリズムだけですよね。

1枚目と2枚目に書かれた整数のうち最大が9、最小は-6なので差は15
範囲が32以下なので一つの整数値のビットとして表せるので
左から-6←→9の順で表記するなら(@)の
1枚目の要素は0110000101000010
2枚目の要素は1010000011010110
(A)の
1枚目の要素は0110000101000010
2枚目の要素は1010100011000101
と表せれるので
そっくりそのままANDとORとXORでポンっと出ますよね。

データ入力は別にDATAやREADじゃなくて
INKEY$とかでもいいんじゃないんです?
PUSHを使えば配列にそのまま格納できますし
アバター
ツララ 2018/12/22 17:14 ◆ArUdBYOYME1V
集合論とか数学記号とか普段使わない用語で混乱してるだけで
そんな難しく考えすぎなくてもいいと思いますよ?
知らない知識なら調べて吸収すればいいだけですし。
案ずるより産むがやすしだったりしますし、目の前に便利なツール(プチコン)が有るなら、まず手を動かしてみた方が近道って場合も。

というかヘンルーダさん
プログラム問題の解法考えるのって、もう飽きちゃいました?

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -