プログラミングのお題スレ Part11
■ このスレッドは過去ログ倉庫に格納されています
>>495 ランダムに入れ替えるのはいいけど、元の単語と同じ並びは排除しないと期待外れの出力になるね 完全にランダムなんだから、結果が同じ並びでもそのまま出力するのが筋だろ 変更するなら日本語の文章の方だ >>487 Squeak/Pharo Smalltalk 同じ並びは排除 | input nonLetters | input := '以前2ch で このこと に ついて ケブンリッジ で はっけん された と いうような ないよう の ぶんしょう が コピペ されて ひろまり いちじき ゆうめい になり それよう の へんかん を する ケブンリッジ ジェネレータ の ページ(Java Script で つくられ てたと 思う)が つくられ たりも していた。 今 は もうない ようだが こんかい の お題 は これ である。つまり、にゅうりょく された 単語 の さいしょ と 最後 は そのまま で とちゅう の もじじゅんじょ を ランダム に いれかえ た 結果 を しゅつりょく する。 にほんご の ぶんしょう は 普通 は 単語 と 単語 の 間 に スペース が ないが、これ に ついては 処理 を かんたん に するため に スペース あり で にゅうりょく された ぶんしょう'. nonLetters := input reject: #isLetter. (input findTokens: nonLetters keep: nonLetters) inject: '' into: [:acc :token | | middle | (token first isLetter and: [token size > 3 and: [(middle := token copyFrom: 2 to: token size - 1) asSet size > 1]]) ifTrue: [ | shuffled | [(shuffled := middle shuffled) = middle] whileTrue. acc, (token first: 1), shuffled, (token last: 1)] ifFalse: [acc, token]] "=> 以前2ch で ここのと に ついて ケンブッリジ で はけっん された と いううよな なよいう の ぶしょんう が コピペ されて ひまろり いじちき ゆめうい になり そよれう の へかんん を する ケリンッブジ ジネレェータ の ページ(Jvaa Srcpit で つらくれ てたと 思う)が つらくれ たりも しいてた。 今 は もなうい よだうが こかんい の お題 は これ である。つまり、にりょうゅく された 単語 の さしいょ と 最後 は そまのま で とゅちう の もじじんゅじょ を ラダンム に いかれえ た 結果 を しょつゅりく する。 にんほご の ぶしんょう は 普通 は 単語 と 単語 の 間 に スーペス が ないが、これ に つていは 処理 を かたんん に すたるめ に スーペス あり で にうりょゅく された ぶょんしう" 単語の最初と最後が正しいと途中の文字順序が違っていても正しい単語と見間違える というのは無いこともないが、やっぱりおかしな単語はおかしく見えるな >>487 Kotlin https://paiza.io/projects/vW2LiM_sGEYAb_l7QfaA_g paiza.io の Kotlin はちょっとバージョンが古いようで shuffle() がなかったので自作した。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 AI2XF 僕の 知合いりの 知合りいが できた パコソン 一台で お持れちにな金る やり方 役立につ かまれもしせん グルグーで 検るす索と いかいも 『 ネットぐ方稼で法 モヌレアフニノ 』 AXI2F 荒らし業者の連投規制回避の小さな変更 さっさとアク禁になれ 2個目はどう考えても業者じゃなくてスレ住人だろ… 業者はアク禁になってほしいのは同意 >>506 お前のレスがあるまでケブンリッジジェネレータなのに気付かなかったわw 人間の認識力はそんなもんなんだろうな。ちょっと似てると同じと判断しまう。そうやって脳は省力化してエネルギーあまり使わないようにしてるのかも知れない。脳を動かすには糖分沢山必要だからな。 逆に言えばいちいち全部の文字を正確に認識してたらちょっと誤字脱字や書き損じがあっただけで意味がわからなってしまうぞ botの書き込みなんていちいち推敲モードで読まないからな >>518 あ、ホントだ、恥ずかしいww 校正というべきだったか あ、ごめん。テキストファイルじゃなくて標準入力からでもいい。 何処から入力するかはたいした問題ではない。 http://www.din.or.jp/ ~ohzaki/mail_regex.htm RFC通りのメールアドレス判定なんて不毛だってはっきりわかんだね 昔仕事で MUA 作った時に >>526 にある folding white space をぶち込んでくる送信元がいて苦労した記憶が… >>526 ここはお題スレだから不毛で良いんだよ。パズルを解くようなもんなんだから。 計算式まで示されちゃってるから出力形式に凝らないと厳しいかな・・・ お題: ある数値nが与えられた時に、次の条件を満たす2つの数値a,bを求め、表示するプログラムを作成しなさい。 ●aとbの最小公倍数がnとなる ●a<bかつaとbの差(b-a)が最小となる 例:n= 360→a= 36,b= 40 n=1000→a=125,b=200 例が間違ってたらゴメン >>533 n=1000だとa=200,b=250? 数学板じゃなくてもさすがに最小公倍数くらいは このスレならみんな知ってると思ってた >>541 公倍数は最小公倍数の倍数 公約数は最大公約数の約数 …当たり前のように思えて実際の証明は結構イメージしにくく、一回読んだだけではよくわからないのでした… お題:標準入力からhtmlが一行ずつ与えられるのでh1,h2などのhタグを階層化して出力しなさい。タグ内のテキストも一緒に出力し、タグ内にimgが含まれていたらそのaltを出力しなさい。 出力例: h1 5ちゃんねるにようこそ ....h2 クソスレ乙 ........h3 逝ってよし ....h2 オマエモナー 任意の文字列を含む有効なビットコインのアドレスを生成するプログラムを作成せよ。有効な形式のアドレスでなければブロックチェーンエクスプローラで検索しても認識されない。ビットコインアドレスの形式については下記サイトを参照。 https://qiita.com/pokochi/items/4d536a4a24067505abea 例:下記サイトの二番目にあるようなアドレス、 https://bitflyer.com/ja-jp/glossary/address >>533 C++(使ってるのはほとんどCですが) https://ideone.com/S4H5Mo 自分の考えてたアルゴリズムをCで記述してみました。 模範解答、とはとても言えない代物です。もっと改良の余地がありますし、バグも取りきれてないかもしれません。 それと>533出題時に考えてたアルゴリズム(手計算でやってましたが)を↓に記述してみました。 こちらは明確に誤った答が出されてしまいます。参考程度に orz https://ideone.com/HdfYPe ↓ お題:三捨四入せよ 負の丸め方向はどちらでも良い https://ideone.com/Z6fTGh やれるものならやってみろ。 などと挑発してみるとアホが大漁に釣れるかも知れない。 問題は釣れるのがアホなのでものすごく頑張った揚げ句たいしたものができない率が非常に高いことにある。 これでこんなこともできる https://chainflyer.b ;itflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC >>543 io !(?<_><.?>)(.)\k<_>! <- '\1' >>561 >>562 それなんてエロゲ、じゃない、なんて言語? 情報オリンピックの問題って組合せ最適化ばかりなのかなぁ? ttps://www.ioi-jp.org/joi/problem_archive-light.html 鈴木貫太郎 灘中 中学入試 整数問題 https://youtu.be/okKan0C_--E 問1 4つの異なる数字、1, 3, 9, x から、 異なる数字を取り出して並べる、3桁の整数は24個あり、それらの平均値は555 である時、x は何の数字か? 問2 5桁の36の倍数で、2, 3, 5 のどれもが、 いずれかの桁に、1回以上現れる整数のうち、最小のものを求めよ 答え、問1 : 7、問2 : 13,572 灘中の問題は、以下の性質を使うものが多い 2 の倍数は、下1桁が偶数 4 の倍数は、下2桁が4の倍数 3 の倍数は、各桁の数字を足したものが、3の倍数 9 の倍数は、各桁の数字を足したものが、9の倍数 だから数字を因数分解して、これらに該当するかどうかで、問題を判別できる >>569 問1 を、Ruby で作った。 問2 は、難しくて作れない nums_3 = [1, 3, 9] nums_4 = nums_3 + [0] (0..9).each do |num| next if nums_3.include? num # 含まれていれば nums_4[-1] = num sum = 0 nums_4.permutation(3) { |a, b, c| sum += (a*100 + b*10 + c) } puts num if sum == 24 * 555 #=> 7 end じゃあ問2を酷いコードで >>569 Java java.util.stream.IntStream.range(10000, 100000).filter(i -> i % 36 == 0).mapToObj(Integer::toString).filter(s -> s.matches("(?=.*2)(?=.*3)(?=.*5).*")).findFirst().ifPresent(System.out::println); コンピュータを使ってブルートフォースで答えを探す方法はわかってもコンピュータを使わずに数学的に解く方法が思い浮かばない。 しかしそれを小学生が解いて入学するという現実。orz >>569 Squeak/Pharo Smalltalk "問1" ((0 to: 9) copyWithoutAll: #(1 3 9)) detect: [:n | | set | set := Set new. '139', n asString combinations: 3 atATimeDo: [:comb | comb permutationsDo: [:perm | perm first ~= $0 ifTrue: [set add: (perm as: String) asInteger] ] ]. set size = 24 and: [set average = 555] ] "=> 7 " "問2" ((10000 roundTo: 36) to: 99999 by: 36) detect: [:n | n asString includesAllOf: '235'] "=> 13572 " このスレprologニキっていないの? 手続き型以外の解法見たい あとJニキ最近見なくて寂しい >>569 問1 4種の数字から作られる24個の数字の平均が555 →合計が1110になる12組の数字にまとめられる→どの桁も合計が10になる2組の数字の組合せで構成される →1,3,9,xのうち1と9を除外した3と「足して10になる数」→x=7 問2 36の倍数→4の倍数かつ9の倍数 →5桁の数字は9の倍数なので各桁の数字の合計が9の倍数になる →5桁の数字には「2,3,5」が少なくとも1つ以上含まれているので、この時点で各桁の数字の合計は10より多くなる。 →各桁の数字の合計は9ではないので、18とする。残り2桁の数字の合計は8。この中で一番小さな数が作れるのは1,7。 →「1,2,3,5,7」の組み合わせの内、下2桁が4の倍数で最も小さい数は13572となる。 かなり乱暴に書くとこんな感じで解けば良いのかな? しかし、これをプログラムで表現しようとするのはかなり骨っぽい(数を1桁ずつ分解するのに余計な手間がかかりそう)。 それよりも総当たりで解いた方がコンピュータ的には手っ取り早い気がしますね。 >>578 最初の「合計が1110になる12組の数字にまとめられる」が何故なのかわからん。 >>579 作成される数字を順列とみなした時に 「ABCD ABDC ACBD ACDB ...」を逆順にした 「DCBA DCAB DBCA DBAC ...」という列を組み合わせたら…なんて考えてたんですが、後で見ると意味不明でした。申し訳ない。 問1について、それよりも単純な方法がありました。 xがどの桁で使用されてるかで場合分けし、それぞれを合計する x不使用:139 193 319 391 913 931 :2886 xが1の桁:13x 19x 31x 39x 91x 93x :2860 + 6x xが10の桁:1x3 1x9 3x1 3x9 9x1 9x3 :2626 + 60x xが100の桁:x13 x19 x31 x39 x91 x93 :286 + 600x 上記をすべて合計:8658 + 666x 24個の数字の平均が555だから合計は 555*24=13320 8658+666x=13320 666x=4662 x=7 若干手続きはコンピュータ向けと言えなくもないですが、やはりプログラミングするには手間ですね。 問1 24=4! なので4個の数字はすべて異なる 24通りを並べると各桁1, 3, 9, x が同じ回数出現する これらの平均が555なので 1, 3, 9, x の平均が5とわかる 1, 9の平均が5なので3, xの平均が5となる7が答え 問2 最小を求めるので10000の位が1になる数を考える (考えて、なければ他を考える) 各桁の合計が9の倍数から1, 2, 3, 5, 7とわかる この中で偶数は2だけなのでこれが1の位 1の位が4で割りきれないので10の位は奇数であれば4の倍数 つまり10の位が3, 5, 7のどれでも36の倍数になる 3, 5, 7を小さい順にならべて13572が答え 問1 x = 111 * (24 * 5 - 6 * (1 + 3 + 9) ) / (6 * 111) = 7 問2 5つの数を A, B, 2, 3, 5 とすると A + B + (2 + 3 + 5) = 0 mod 9 <=> A + B + 1 = 0 mod 9 かつ末尾2桁が4の倍数になる 従って一番左の桁は1で確定し {A, B} = {1, 7}も確定 2が末尾に来ることは確定していてかつそのとき任意の並びで4の倍数になるため13572が題意を満たす数 以上が東大理学部物理学科卒の考え方 両方合わせて40秒くらい やっぱ紙と鉛筆で解く問題だよね。 最初から解析的に解けない問題出して欲しい。 >>580 小学生が解く場合に途中で 8658+666x=13320 のような数学的表現で考えるのはありなのか? 回答者個人にそれができるかできないかの問題ではなく小学校が教えている範囲にそれが含まれるのかの問題ね。 もし含まれていないとしたら他の方法で解く事が可能という事になる。 >>583 「従って一番左の桁は1で確定し」 がわかりません >>584 だよね 36の倍数は、4, 9 の倍数で、それらの特徴を利用できるかどうかだけ 捨て問題だろ。 考えたり解いたりすると、2問で10分使うから、落ちるだけ。 即座に無視しないといけない。 新パターンの問題は、時間を使わせるから無視しろっていう、受験テクニック 灘中高は、100%塾の生徒しか受からない。 灘用の受験技術だから、その授業を受けていないと受からない 文系が東大工学部に入る、受験技術のマンガ「ドラゴン桜」と同じ。 賢い者ではなく、塾代という貧富の格差で決まる 大型資格もそう。 TAC, 大原などに行ってないと受からない 貧富の格差、貧富の遺伝 >>586 ものすごくかみ砕いて言うと A + B + 1 = 0 mod 9 (A, B ∈ {0, 1, ..., 9}) を満たす A, B に関して 任意のAに対して対応するBが少なくとも1つは存在することは自明なので A = 1 として 1XX32 という数を考えればこの数は36の倍数でありかつ 2, 3, 5 を各桁に含む (XXには A = 1 に対応する B の値の内の1つと 5 が入る) 解は10000以上1XX32以下の整数なので左端の桁は1であると確定する >>569 Rubyで問1。 def odai_11_569_1(a_ary, a_avg) (a_ary.size + 1) * (a_avg / 111) - a_ary.inject(:+) end w_ary = [1, 3, 9] w_avg = 555 p odai_11_569_1(w_ary, w_avg) 結果:7 >>569 Rubyで問2。 def odai_11_569_2(a_ary, a_base, a_col) a_ary.map!(&:to_s) w = 10**(a_col - 1) w = w / a_base - (w % a_base > 0 ? 0 : 1) w *= a_base loop do w += a_base next if (a_ary - w.to_s.split('')) != [] return w end end a_ary = [2, 3, 5] a_base = 36 a_col = 5 p odai_11_569_2(a_ary, a_base, a_col) # 結果:13572 rubyならさくっとワンライナーで p (10000-10000%-36).step(10**5,36).find{|i|(i.digits&[2,3,5])[2]} #=> 13572 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる