2009-01-01から1ヶ月間の記事一覧

Jでハイパーメモ化再帰タイム

timer =: 6!:2 NB. 実行時間が計れるよ! fib =: ($:@-&2 + $:@:]) NB. ふつうにフィボナッチ数を求める fib"0 (i.18) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 fibx =: ($:@-&2 + $:@:]) M. NB. M.をつけるだけでメモ化しちゃう fibx"0 (…

TopCoder SRM 159 DIV 1 Medium 練習

情報オリンピックに備えてC++での挑戦。

入試終わった

2/8(情報オリンピック本選)に向けての特訓に入る

優先順位つきキュー

ソース長いので

NextPermutationにバグ

C#

if(end < start || end - start <= 1) return false; ここの条件式 end - start <= 1 どうみても対象の範囲が2要素のときfalse返します。本当にありがとうございました。というわけで該当記事を訂正しておいた。

なんでもないです

C#でSTLのnext_permutation的なものを

TopCoderでnext_permutationゲーな問題が出ると途端にC++が有利になって、C#だとコーディング時間的に厳しいので、C#で実装しておく。パフォーマンスなんて知りません。2009/1/23 バグ修正&TopCoder SRM 433 Div 1 Easy MagicWordsでVerified using System;…

末尾再帰たんの行方を探ってみた

F#

(* 再帰的な階乗の定義(F#) *) let rec fact = function 0 -> 1 | n -> n * fact (n-1) コンパイルしてデコンパイル↓ public static int fact(int _arg1) { switch (_arg1) { case 0: return 1; } return (_arg1 * fact(_arg1 - 1)); } ま さ に 直 訳 (* 末…

末尾再帰たん萌え

たとえばF#で階乗をつぎみたいに実装したとするよね↓ let fact n res = if n = 0 then res else fact (n-1) (n*res) 末尾再帰たんモエスなんだけど、末尾再帰って最適化されちゃうんだよね?特にSchemeとかだと。たとえばさっきの階乗をC風に書けば int fact…

TopCoder SRM 433 DIV 2

ちくしょおおおおおおおおおおおおおおおおおおおおお泣いて・・・いいですか・・・。1046 -> 1096でも上がったwwwwwwww

TopCoder SRM 156 DIV 1 Hard 練習

やたーHard解けたよー

TopCoder SRM 156 DIV 1 Medium 練習

問題 いつ、どこから、どこまでエレベータを利用するかという情報が与えられるから、エレベータが最善の動きをしたときに全員を運び終えるまでにかかる時間はどれくらいですか。 解 人が全部で5人(!)しか居ないから全部試す。 using System; using System.T…

TopCoder SRM 156 DIV 1 Easy 練習

問題 マインスイーパ的ゲームで、最初の一個が爆弾なら負け、最初の一個が爆弾でなくその周囲にも爆弾が存在しないなら勝ちとする。ゲームフィールドが与えられるので勝率を求めなさい。 解 やるだけ。これは解き慣れるしかないぜ。 using System; using Sys…

PythonでF#っぽくマージソート実装

っぽく、というかこの間のF#版をそのまま書いただけだけどw def length(l): if l == []: return 0 else: return 1 + length(l[1:]) def reverse(l): if l == []: return [] else: return reverse(l[1:]) + [l[0]] def mergesort(comp, l): def merge(l1, l2…

TopCoder SRM 155 DIV 1 Easy 練習

問題 子、母、男のDNAっぽいのが与えられるので、男が子の父親かどうか判定してねっていう。母からのDNAを半分、男からのDNAを半分ずつそれぞれ子が引き継いでいる場合は父親だと思うよ。 解 男と子の間の一致数が半分を超えて、かつ男と母どちらでもないDNA…

TopCoder SRM 154 DIV 1 Medium 練習

問題 コンテストの結果をソートしてください。 解 めんどい。やるだけ。 using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public class Data : IComparable { public…

TopCoder SRM 154 DIV 1 Easy 練習

問題 条件にマッチする文字列はどれ?っていう。 解 適当に変換して調べる。 using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public class CheatCode { public int[…

TopCoder SRM 153 DIV 1 Easy 練習

問題 問題長すぎだろ・・・jk・・・ 解 問題読めれば問題はない。 using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public class Inventory { public int monthlyO…

TopCoder過去問系記事うぜぇ

って自分でも思い始めたのでこれからは「続きを読む」を使うことにしました。

日本でPythonはまだ弱いようです

これから一からプログラミングを覚えようと考えています。様々な言語がありますが、どれを覚えるべきでしょうか?Python・・・。

TCHS09 Round 3

これはひどいいやこれはひどいいやこ れ は ひ ど いというわけでTCHS09おわり^^いいもん!SRMがんばるもん!あ、レーティングは 1395 -> 1326 です^^

マージソート書いてみた

F#

ソース↓ let rec mergesort cmp l = let rec merge l1 l2 res = match (l1, l2) with ([], []) -> res | ([], l) | (l, []) -> (List.rev l) @ res | (m::ms, n::ns) -> if (cmp m n) < 1 then merge ms l2 (m::res) else merge l1 ns (n::res) in let split…

TopCoder SRM 152 DIV 1 Medium 練習

問題 ちょっと変わった言語処理系実装してね。言語仕様まで全部書くとめんどくさい。 解 ハイパーやるだけ。最初MISMATCHの意味を取り違えてて色々なんかアレ。ソース汚物。 using System; using System.Text; using System.Text.RegularExpressions; using …

TopCoder SRM 152 DIV 1 Easy 練習

問題 あんまり読めてない。Example頼りの問題解釈なので説明できない。 解 数がちっちゃいので全部やった。 using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; public …

TopCoder SRM 151 DIV 1 Medium 練習

問題 数列が与えられる。これをマージソートした時に比較の回数は何回になりますか。 解 テラやるだけwwww using System; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; publ…

TopCoder SRM 151 DIV 1 Easy 練習

問題 円に正n角形を内接させて、その正n角形の周を円周としたときの円周率の近似を求めなさい。 解 最初余弦定理がどうたらこうたらであばばばばばばってなって、結局精度が悪くてTest落ちた。その後某IRCの助けをいただいて理解。 23:07 (JAPLJ) PI = 180° …

インフルエンザwwwwwwwwwwwwww

インフルエンザに罹った

TopCoder SRM 150 DIV 1 Medium 練習

問題 あるキャンバスに縦のストライプを塗る。ストライプの柄が与えられるので、最小で何回キャンバスに描けば模様が完成するか。 解 俺の嫁ですとも。ええ。動的計画法です。 using System; using System.Text; using System.Text.RegularExpressions; usin…

TopCoder SRM 150 DIV 1 Easy 練習

問題 ある自然数n(2 ≦ n ≦ 30)について、n進法で数を表記したとき、ある一桁の数kの倍数は全てその桁を合計するとkの倍数になるようなkを全て求めなさい。たとえば10進法において、 159 * 3 = 477, 4+7+7 = 15 = 3 * 5 なので3が該当する。 解 全部やればい…

TopCoder SRM 149 DIV 1 Medium 練習

問題 単語一覧が与えられるので、与えられた文字列の適切な位置にスペースを挟んで、もとの単語の並びを復元しなさい。ただし複数の解が存在するなら AMBIGUOUS! を、解が存在しないなら IMPOSSIBLE! を返しなさい。 解 最初に必殺総当り再帰で解いて、時間…