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] "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<
https://codeiq.jp/ace/yuki_hiroshi/
のGemString問題の解答用のrubyのコードです。
# ---------------------------------------------------------------- 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
よかった探しリース [いくらなんでも]
参加してみよう。
なんといっても
ごく平凡な一般ピープルとして,世の中に沢山出回る(ってますよね?)本に 名前が載るなんてなかなかありませんのでちょっと嬉しい。
もちろん普通に嬉しい事はたくさんあった一年でした。 宝物である三人のお嬢様の言動を筆頭に。
できれば、そんな幸せを邪魔するような世の中にならない事を祈ってます。 今年は相当にキナ臭い事になってきましたからね。
この「あ・い・す・べ・き」国日本は。
結城浩さんの「よかった探しリース」の企画です。
というわけでさっそく今年の良かったこと。なんといっても
結城さんの御本に名前を載せて頂いたこと
でしょうか。ごく平凡な一般ピープルとして,世の中に沢山出回る(ってますよね?)本に 名前が載るなんてなかなかありませんのでちょっと嬉しい。
もちろん普通に嬉しい事はたくさんあった一年でした。 宝物である三人のお嬢様の言動を筆頭に。
できれば、そんな幸せを邪魔するような世の中にならない事を祈ってます。 今年は相当にキナ臭い事になってきましたからね。
この「あ・い・す・べ・き」国日本は。
いやほんと、脱出計画も真剣に考えんといかんか。
そのまたつづき [いくらなんでも]
つづき [いくらなんでも]
久方ぶりにまともなネタを [いくらなんでも]
まあ,概ね仰る事は御尤もなんだけど・・・ [いくらなんでも]
このブログの話題からは少し離れるかもしれないんだけど・・・。
WIRED VISION "アカルイ"未来を考えるサイトhttp://wiredvision.jp/
というのがあって,そこで,「教育制度批判」という興味深いコラムが連載されています。
いやはや,なかなかに辛辣風味で面白いのです。
で,今回の中身はと言うと,義務教育では嘘を承知で「来るべき良質な国民」を育てるべく詰め込みでも何でも,綺麗事を刷り込んで,刷り込み具合を認定試験でテストして終了させて,それ以上の高校では,「そんなの嘘だピョーン」と真実を教え・・・という具合な痛快な記事です。
でもまあ,一つだけ苦言を申せば,「いかにも文系?あるいは理系ドロップアウト?」的な発想+「大学入試向け授業のみ受けて来た方?」的な見方に偏っていて,ちょっと困ります。
というのも,例えばここ「いくらなんでも幾何」で紹介している「古の幾何学」的なお話はすべて数学の基礎知識として「大切な事」だと思うのです。戦後すぐの教科書を見ると,ここで紹介しているような中身が随分と沢山しかも詳細に高等学校で扱われていて,なおかつそれは,数学の修練もですが,どちらかといえば,論理的な思考,推論や条件の確認といった,およそ「良質な大人」として備えるべき「マトモな思考」の鍛錬を想定したカリキュラムとして扱われている様子だからです。
確かに「古の幾何学」が何か具体的に「役に立つ」ことは少ないかもしれませんが,少なくとも「論理の筋道」をなぞる所謂「塗り絵」的な意味では密かに十分役に立ち,尚かつ他に適当な教育手段が見当たらないのではないでしょうか?と問い掛けたいと思います。直接返事が返ってくるか,コラムで取り上げられるか,無視されるか,まあいずれにせよどうでもよいのですが,とにかく一言書かずにはいられないので,書いてみました。
それにしても「アカルイ」未来というのが「嗚呼軽い未来」と読めてしまう不幸よ!って感じかも。
WIRED VISION "アカルイ"未来を考えるサイトhttp://wiredvision.jp/
というのがあって,そこで,「教育制度批判」という興味深いコラムが連載されています。
いやはや,なかなかに辛辣風味で面白いのです。
で,今回の中身はと言うと,義務教育では嘘を承知で「来るべき良質な国民」を育てるべく詰め込みでも何でも,綺麗事を刷り込んで,刷り込み具合を認定試験でテストして終了させて,それ以上の高校では,「そんなの嘘だピョーン」と真実を教え・・・という具合な痛快な記事です。
でもまあ,一つだけ苦言を申せば,「いかにも文系?あるいは理系ドロップアウト?」的な発想+「大学入試向け授業のみ受けて来た方?」的な見方に偏っていて,ちょっと困ります。
というのも,例えばここ「いくらなんでも幾何」で紹介している「古の幾何学」的なお話はすべて数学の基礎知識として「大切な事」だと思うのです。戦後すぐの教科書を見ると,ここで紹介しているような中身が随分と沢山しかも詳細に高等学校で扱われていて,なおかつそれは,数学の修練もですが,どちらかといえば,論理的な思考,推論や条件の確認といった,およそ「良質な大人」として備えるべき「マトモな思考」の鍛錬を想定したカリキュラムとして扱われている様子だからです。
確かに「古の幾何学」が何か具体的に「役に立つ」ことは少ないかもしれませんが,少なくとも「論理の筋道」をなぞる所謂「塗り絵」的な意味では密かに十分役に立ち,尚かつ他に適当な教育手段が見当たらないのではないでしょうか?と問い掛けたいと思います。直接返事が返ってくるか,コラムで取り上げられるか,無視されるか,まあいずれにせよどうでもよいのですが,とにかく一言書かずにはいられないので,書いてみました。
それにしても「アカルイ」未来というのが「嗚呼軽い未来」と読めてしまう不幸よ!って感じかも。