SSブログ
いくらなんでも ブログトップ

CodeIQ GemString問題のコード [いくらなんでも]

結城浩さんのCodeIQ「The Essence of Programming」

https://codeiq.jp/ace/yuki_hiroshi/

のGemString問題の解答用のrubyのコードです。

# abbbbcddddeefggg = [1,4,1,4,2,1,3] # eagcdfbe <== goal # ---------------------------------------------------------------- # ---------------------------------------------------------------- # allcomb([3,1,2],4) => [[3,1,0],[3,0,1],[2,1,1],[2,0,2],[1,1,2]] # 重複するものも含む素材個数リストstlから、計sum個の素材セットを選んで列挙する。 def allcomb(stl,sum) if sum<0 [] elsif stl.length<=1 if stl[0]<sum [] elsif sum==0 [[0]] else [[sum]] end else ans=[] l=stl.length-1 for i in (0..stl[0]) j=stl[0]-i sans=allcomb(stl[1..l],sum-j) if sans!=[] sans.each{|x| ans << [j]+x } else [] end end ans end end # ---------------------------------------------------------------- # fact(n)=n! 階乗 def fact(n) if n<=1 1 else n*fact(n-1) end end # ---------------------------------------------------------------- # allperm([2,1,2],5) => "aabcc"から5個以下を選んでの順列の総数を返す。 def allperm(stl,mxn) ans=0 for i in (0..mxn) allcomb(stl,i).each{|x| div=1 x.each{|m| div=div*fact(m) } ans=ans+fact(i)/div } end ans end # allperms([2,1,2]) => "aabcc"から部分順列の総数を返す。 def allperms(stl) maxl=0 stl.each{|x| maxl=maxl+x } allperm(stl,maxl) end # ---------------------------------------------------------------- # 素材から、素材集と素材個数リストを返す。 def pattlst(gems) p gems glst=[] gcnt=[] gems.each_char{|c| if !glst.include?(c) glst<<c gcnt<<gems.count(c) end } [glst,gcnt] end </pre> <pre> # ---------------------------------------------------------------- def gemsindex(gem,pat,gal) if gal.length<1 0 else cars=gal[0] cdrs=gal[1..-1] cidx=gem.index(cars) p [cars,cdrs,cidx] ans=0 if cidx>0 for i in (0..cidx-1) tmpat=pat.clone tmpat[i]=tmpat[i]-1 ans=ans+allperms(tmpat) end end ans=ans+1 pat[cidx]=pat[cidx]-1 ans+gemsindex(gem,pat,cdrs) end end # ---------------------------------------------------------------- # 走らせるとこ。サンプルと本題と # ---------------------------------------------------------------- gems='aaabcc' goal='caba' gpat=pattlst(gems) gemm=gpat[0] pats=gpat[1] p gemm,pats p gemsindex(gemm,pats,goal) # ---------------------------------------------------------------- gems='abbbbcddddeefggg' goal='eagcdfbe' gpat=pattlst(gems) gemm=gpat[0] pats=gpat[1] p gemm,pats p gemsindex(gemm,pats,goal) # 実行結果 # 〜------------------------------------ results 10:15:48 u "aaabcc" ["a", "b", "c"] [3, 1, 2] ["c", "aba", 2] ["a", "ba", 0] ["b", "a", 1] ["a", "", 0] 144 "abbbbcddddeefggg" ["a", "b", "c", "d", "e", "f", "g"] [1, 4, 1, 4, 2, 1, 3] ["e", "agcdfbe", 4] ["a", "gcdfbe", 0] ["g", "cdfbe", 6] ["c", "dfbe", 2] ["d", "fbe", 3] ["f", "be", 5] ["b", "e", 1] ["e", "", 4] 5578864439
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学問

よかった探しリース [いくらなんでも]

参加してみよう。

←左手 | よかった探しリース | 右手→

結城浩さんの「よかった探しリース」の企画です。
 というわけでさっそく今年の良かったこと。
 なんといっても
結城さんの御本に名前を載せて頂いたこと
でしょうか。
 ごく平凡な一般ピープルとして,世の中に沢山出回る(ってますよね?)本に 名前が載るなんてなかなかありませんのでちょっと嬉しい。
 もちろん普通に嬉しい事はたくさんあった一年でした。 宝物である三人のお嬢様の言動を筆頭に。
 できれば、そんな幸せを邪魔するような世の中にならない事を祈ってます。 今年は相当にキナ臭い事になってきましたからね。
この「あ・い・す・べ・き」国日本は。
いやほんと、脱出計画も真剣に考えんといかんか。
texshop_image.jpg

LaTeXとAsymptoteでEscher気分な習作 [いくらなんでも]

こんな感じです。 MePoTeX作者さんのAsyTeX暫定版を使っています。 aysy.png

そのまたつづき [いくらなんでも]

さてさて,尻切れとんぼなGoGeometryからの懸案問題のかいせつのつづきです。

texshop_image1.jpg

texshop_image2.jpg

texshop_image3.jpg

texshop_image4.jpg

texshop_image5.jpg

texshop_image6.jpg

というわけです。

このLaTeX文書をせっせと打っていた時には,
気がついていなかったのですが!(面目ない)
結局は,点Eが三角形FBCの内心になっているってところが,
ミソでした。とさ。ちゃんちゃん。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学問

つづき [いくらなんでも]

というわけで、つづきです。
こちらで解説を上げる前に,
丹後氏のページに解説が上がりました。

いやあ、なかなかに面白い問題です。
スナップショット 2008-12-09 21-19-45.jpg

こんな感じです。
角の二等分線と正三角形が相俟ってなかなかよく出来ています。

スナップショット 2008-12-09 21-20-11.jpg

そして,ここまで
スナップショット 2008-12-09 21-20-43.jpg

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:学問

久方ぶりにまともなネタを [いくらなんでも]

某所,GoGeometryに,こんな問題が最近載せられました。
スナップショット 2008-12-09 21-17-53.jpg
一週間程楽しみました。
折角なので御紹介。

最初は触りの部分を。
スナップショット 2008-12-09 21-18-55.jpg

何故か画像の順番が変になるので,本当に触り,
問題を考える為に作図するほんの最初の段階まで。
次回をご期待。
nice!(0)  コメント(0)  トラックバック(1) 
共通テーマ:学問

まあ,概ね仰る事は御尤もなんだけど・・・ [いくらなんでも]

このブログの話題からは少し離れるかもしれないんだけど・・・。

WIRED VISION "アカルイ"未来を考えるサイトhttp://wiredvision.jp/
というのがあって,そこで,「教育制度批判」という興味深いコラムが連載されています。
いやはや,なかなかに辛辣風味で面白いのです。
で,今回の中身はと言うと,義務教育では嘘を承知で「来るべき良質な国民」を育てるべく詰め込みでも何でも,綺麗事を刷り込んで,刷り込み具合を認定試験でテストして終了させて,それ以上の高校では,「そんなの嘘だピョーン」と真実を教え・・・という具合な痛快な記事です。

でもまあ,一つだけ苦言を申せば,「いかにも文系?あるいは理系ドロップアウト?」的な発想+「大学入試向け授業のみ受けて来た方?」的な見方に偏っていて,ちょっと困ります。

というのも,例えばここ「いくらなんでも幾何」で紹介している「古の幾何学」的なお話はすべて数学の基礎知識として「大切な事」だと思うのです。戦後すぐの教科書を見ると,ここで紹介しているような中身が随分と沢山しかも詳細に高等学校で扱われていて,なおかつそれは,数学の修練もですが,どちらかといえば,論理的な思考,推論や条件の確認といった,およそ「良質な大人」として備えるべき「マトモな思考」の鍛錬を想定したカリキュラムとして扱われている様子だからです。

確かに「古の幾何学」が何か具体的に「役に立つ」ことは少ないかもしれませんが,少なくとも「論理の筋道」をなぞる所謂「塗り絵」的な意味では密かに十分役に立ち,尚かつ他に適当な教育手段が見当たらないのではないでしょうか?と問い掛けたいと思います。直接返事が返ってくるか,コラムで取り上げられるか,無視されるか,まあいずれにせよどうでもよいのですが,とにかく一言書かずにはいられないので,書いてみました。

それにしても「アカルイ」未来というのが「嗚呼軽い未来」と読めてしまう不幸よ!って感じかも。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:育児
いくらなんでも ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。