Programming

10分でコーディング

たいへんよくできました@Ruby1.9 def fun(n, s) s.scan(/#{"(.)"*n}/).transpose.map &:join end p fun(3, "123123123") 時間とか測ってないけどわりと一瞬だったんじゃないかな。http://ameblo.jp/programming/entry-10001721422.html

情報オリンピック参加記

開始早々サーバーが激重で問題を開くのに15分以上かかった。結局18時までに延長となった。 SSLを使うようになってた他、内部システムをいろいろ変更しているようなので、まあいろいろあったんだろう。 見たかんじ、ブラウザから定期的にサーバーにアクセスが…

情報オリンピックの予選が始まりますね

シードなので受けなくてもいいのですが、 二年連続で満点だったのに、去年は満点とれず悔しかったので今年は満点が目標です。

ローリングコインタワー

テレビでやってたやつ。 円柱状の物体、というか所謂コインを積んでいって、倒したら負けというゲーム。あのゲームの、現時点での置ける範囲を計算するシミュレーションを作ってみた。A simulation program for "Coin Tower", a coin-stacking game. — Gist …

Chromium OS(Chrome OS)を見た僕らがやるべきこと

「Googleのアカウント以外でログインできる機構を作る方法」を模索しなければいけないと思った。といっても僕にはそれをするだけのリソースがない。

パソコン甲子園の問題1が綺麗に書けたで賞を今さらやってみた #include <stdio.h> int main() { while(1) { int i, hands[5], count[3]={0}, states[]={2,3,1}; for(i=0;i<5;++i){ scanf("%d", &hands[i]); if(!hands[i])return 0; hands[i]--; count[hands[i]]=1; } </stdio.h>…

パソコン甲子園参加記 - 「日本一である必要は何なのか、3位じゃだめなのか」

だめです。賞金の額が違います。 チームと結果 プログラミング部門P04、筑波大学附属駒場高等学校、チーム名「18.039リットル」。 三位。なお本校から本選出場したもう一つのチーム、「rand()」は優勝。 id:JAPLJのところは準優勝。上位3チームがなんかデジ…

id:JAPLJと二人でGoを勉強しました@パソコン甲子園

俺達のパソコン甲子園は終わりました。賞金もらえるといいな。会津若松ワシントンホテルに泊まりました。インターネットが使えます。幸せ。まだ日付は越していませんが、昨日の敵は今日のダチです。ということでid:JAPLJを無理に誘い、Goを勉強しました。 イ…

明日はパソコン甲子園です

最近アルゴリズムやってません。死にます。でも足掻きます。パソコン甲子園の問題は、明らかに体力ゲーというか、速度と正確さが競われるというか、女子学院の算数の入試問題みたいで今から心が折れます。あと環境にVimが入ってないらしいですね。VimとEmacs…

Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング

今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。しかし、C言語のポイン…

ブラウザの分類

IE6 IE7以降 Firefox、Opera、Safari、Chromeなど テキストブラウザ IE5.5以前、Netscape の5つに分類すればいいと思う。

SSLなんてクソくらえだ、SSHこそ最高

SSLは、以下の3つをごちゃ混ぜにしている。 身分証明 同一性証明 暗号化 身分証明が必要なのが厄介というか、許せない。身分証明は不要で暗号化だけあればいい場面を知ってるでしょ。Googleは信用していいけど、友人、身内や、自分さえ信じちゃいけない、と…

OSASKのアレは別にいいと思う

OSASKは形式上オープンソースっぽいだけでオープンソースだなんて概念これっぽっちも継承してないし、今回の騒動はそのことを確認したに過ぎないので別に良いんじゃないんでしょうかね。 ↑2009/11/07追記オサスクドット ジャパン: おさゲなニュースと雑談サ…

双方向キューの出し入れメモ

どれがどれだかわからない人用。Perl方式。STLの命名規則はいろいろとウザいので無視。

id:CanIがそろそろさすがに不憫に見えてきた

ずっとインタビューアの人が悪いと思ってたけど、本当は何が悪いのかはっきりしてきた。天才プログラマに聞く10の質問 − @IT自分戦略研究所この企画そのもの(正確にはこの企画の発想をそのまま中高生にも適用してしまったこと)が悪いのか。そうだな。機械が…

SuperCon2009 今さらだけど参加記

Supercon 2009 - JGeek Log上記の記事でおおよそ話はついちゃうんだけれど、なんかちゃんと説明する必要に迫られたので書く。 参加チーム チームZATORIKU。SuperCon2009優勝。 予選 面倒なので完全に省略。今年は本選の内容と関係なかったし。与えられたデー…

僕がクラウドを嫌いな理由

クラウドは囲い込み的だから。 かつて囲い込みによってインターネットを残念にした敵*1がいるから。 囲い込みが階層化を進め、良き「シンプルな自由」を奪った歴史を知っているから。 囲い込み的でないインターネットや囲い込み的でないソフトウェアが本当に…

charの符号の有無の判定

#include <stdio.h> int main() { char ch = -1; if(ch == -1) { puts("char is signed."); } else { puts("char is unsigned."); } return 0; }</stdio.h>

有理数の平方根を扱うRubyクラスを作った

有理数の平方根や、その合計値を式を保持して扱います。(複素数の範囲はサポートしません)Wikipediaのフィボナッチ数#一般項にあるような式を扱ったりできます。コード:RtNumber: handles sum of rational numbers' sqrt — Gistコードに付属してるサンプル: …

mathn.rbを副作用なしでロード

なんでPrimeがmathn.rbに入ってるんだろう。 追記: Ruby1.9.0のRevision 19095あたりからprime.rbが作成されたのでこのような方法は不要なようです。 unless $".include? "mathn.rb" module Math alias sqrt_tmp sqrt end load "mathn.rb" class Fixnum remo…

ビットリバース

ビットを数える・探すアルゴリズムのpopcountをちょっと改変すればいいだけやんけ。 #include <stdio.h> unsigned int bitreverse(unsigned int x) { x = (x & 0x55555555)<<1 | (x & 0xaaaaaaaa)>>1; x = (x & 0x33333333)<<2 | (x & 0xcccccccc)>>2; x = (x & 0x0f0</stdio.h>…

FlashばーさすHTML5のはなし

Life is beautiful: 「Flash vs. HTML5」という構図がはっきりと見え始めたぞ、とHTML5 > Silverlight > NativeClient > Flash HTMLはコンテンツの記述言語としては最高級だと思う .NETの移植性とC#のプログラミング言語としての素晴らしさを発揮してるのでS…

Cプリプロセッサで加算までやった

数値は2進リスト。 #define par_open ( #define par_close ) #define comma , #define cat_(a,b) a##b #define cat(a,b) cat_(a,b) #define defif_val_0(t, f) f #define defif_val_1(t, f) t #define defif_(b) defif_val_##b #define defif(b) defif_(b) #…

CPPで真偽値とリスト

CPPはC PlusPlusじゃなくてC PreProcessorだよ! gcc -E nanntoka.cで実行。 #define par_open ( #define par_close ) #define cat_(a,b) a##b #define cat(a,b) cat_(a,b) #define defif_0(t, f) f #define defif_1(t, f) t #define defif_(b, t, f) defif_…

Cでquine

暫定最短。 #define t(x)u=#x;x t(main(){printf("#define t(x)u=#x;x\nt(%s)",u);}) C preprocessor - Wikipedia, the free encyclopedia

ビット演算関連

基本 フラグとして使ったりするときに必須なやつ。 &で論理積 |で論理和 ^で排他的論理和 ~でビット反転 a|=bでフラグを立てる。 a&=~bでフラグを折る。 a^=bでフラグを反転。 シフト >>で右シフト。算術シフトか論理シフトかは決まってないらしい。 算術シ…

C99で疑似デフォルト引数

可変長引数マクロと可変長引数関数を組みあわせて引数の最後の1つにデフォルト値を与えることができる。 qnighy's gist: 189476 — Gist //This source code is for C99 //Pseudo default-argument feature for C99 #include <stdio.h> #define func(...) func_impl(__</stdio.h>…

4文字タイトルを判定する正規表現

qnighy's gist: 178354 — Gist #!/usr/bin/ruby -Ku # -*- coding: utf-8 -*- r = /\A(([あいうえおか-もやゆよら-ろわ-んアイウエオカ-モヤユヨラ-ロワ-ヴ]|う゛)[ぁぃぅぇぉゃゅょゎァィゥェォャュョヮ]?){2}[×☆]?(([あいうえおか-もやゆよら-ろわ-んアイ…

std::vector::operator[]に範囲チェックを追加するヘッダ

STLのstd::vectorの配列アクセスはat()とoperator[]があって、at()でないと範囲チェックをしないんだけど、at()とかコードが気持ち悪くなるので使いたくない。あと僕にはわからないが速度の問題が気になる人ももしかしたらいるかもしれない。デバッグの必要…

書けるようになりたいアルゴリズム

Linear Programming (Simplex Method) Maximum Flow Problem (Ford–Fulkerson algorithm) Arbitrary precision (multiplying with FFT) Random (xorshift method)