Programming

SuperCon2009

ごぶさたしてます。 ブログにまだ書いてなかったのですが、SuperCon2009優勝しました。正直、potassioが優勝だと思っていたので意外でした。potassioも予想外の結果(精度も時間も)らしく、なぜそうなったのか今でもわからないらしいです。あとH5N1が精度では…

doubleの配列をバケットソートする

Array.sortよりも少しだけだけど高速に動作したりした!やった! ※体感には個人差環境差がありますIEEE754の仕様により、double値をそのままlong値にキャストすると、正負それぞれが正しい順序を保つ、という性質を利用しています。また、バケットソートとい…

よくわかる現代魔法1話の姉原美鎖の使ったプログラムソース

一部勝手補完して作ってみた。このソースの出典だけど、u8とかs16とかの型名から、Linuxカーネルかと思ったけどカーネルにC++使わないので関係なくて、他にああいう型名が既定で定義されているのはGBA/NDSプログラミングっぽいので、そっちまわりのサンプル…

JavaでRubyのpもどきを実装してみた

スーパーリフレクティングターイム qnighy's gist: 145639 — Gist 以下のようにつかう。 import java.util.HashMap; import static org.acikelabo.RubyInspect.p; public class Test { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<String, Integer>(</string,></string,>…

マジコン

Javaアプリが動かせるJVMマジコンみたいのを作れば、違法コピーはできないけどアプリ自作できてウハウハだと思います。まあ任天堂からすればそんなものの存在は邪魔なのかもしれないけど。

「文字列の中身をランダムに入れ替えるというマイナーな関数」

…のようで、文字列の中身をランダムに入れ替えるというマイナーな関数に関するバグ報告に対しては、「この関数は… Debianがglibcの派生版「eglibc」を採用へ − @IT さがしてみた。 % pwd /home/aaaa/glibc-2.9/string % ls (略) % ack-grep "random" (略)み…

qsortを撃墜し(最悪ケースを与え)てみた。

glibcのqsortをターゲットに、クイックソートの最悪ケースO(n^2)を与えてみた。先日の記事の通り、glibcのqsortはマージソートだが、非常に大きいデータのときはクイックソートを利用するので、そのように仕向けてみた。実行した結果、約5億バイトの配列が確…

すごい人は何がすごいのか、の話

id:tatsu_pcに質問されたまま放っておいてしまってた。 ぜひとも聞きたいことがあって、それはいつも何を考えているのか、です。何も考えていないのかもしれませんし、この記事の内容に近似していても是非聞いてみたいものです。できれば、以下の方々に聞き…

glibcのqsort()はクイックソートではない

クイックソートの最悪ケースの実証しようかなーと思ってglibcのソースを見たらクイックソートじゃなかった。まだちゃんとは読んでないが、次のような仕様ではないかと思われる。 まず、必要な一時領域のサイズを決定する。 通常は元の配列と同じ。(nmemb * s…

qnighy's gist: 99683 — Gist #include <stdio.h> int main(int argc, char *argv[], char *envp[]) {( **/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/ */**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/**/* /**/*</stdio.h>…

C Preprocessors evil behavior

I can't believe that most C compilers can compile such a obfuscated code.http://gist.github.com/98042 %:include /\ \ *\*\*\*\*\*\*\ konyanyachiwa! *\*\*\*\*\*\*\ / <stdio.h> int ma\ in (a,b) int a; char b <::><::>;<% puts("Hel""lo,\ world!"); return 0; %></::></::></stdio.h>

main = 195;

main = 195; It throws no exception in IA32 architecture.Because 195 == 0xc3 means "ret" in IA32.but, char main = 195; throws segmentation fault in my environment.Because it is optimized.We can control this exception by investing "volatile"…

ビット演算でエイトクイーン

ビット演算で華麗に決めてやろうと思ったけど無理だった。どうみても改善の余地あり。 long long o[]={0x101010101010101LL,0x202020202020202LL,0x404040404040404LL,0x808080808080808LL,0x1010101010101010LL,0x2020202020202020LL,0x4040404040404040LL,…

15パズルのパリティー

15パズルの状態は2つの集合にわけられ、片方からもう片方の状態に遷移することはない。どちらの集合に所属しているかを、ある値で表現してみる。 並びのパリティー 15パズルの各部品に0から15の番号をつける。今回は、板は番号そのまま、穴は0とした。また、…

C言語の文法「宣言は置換規則」

最近思うんだけれど、C言語の文法って 「宣言は置換規則」 っていう発想がところどころみられるよね。 たとえば、古いK&Rの関数定義なら #include <stdio.h> /* funcの定義 */ char func(x,y) int x; double y; { return 'B'; } /* funcの利用 */ main() { int x; /* </stdio.h>…

簡単bingoプログラム in Java

Inspired by 簡単bingoプログラム on Proce55ing - Qu記(仮). Made for MATHIC spring camp. qnighy's gist: 92328 — Gist import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import javax.swing.*; import …

ただいまJOI合宿中(1泊/12泊)

現在情報オリンピックの合宿をしています。がんばってます。情報が終わると、そのあとすぐ数学オリンピックの合宿があります。大変だけど楽しいです。がんばります。

中高生ターゲットに勉強会というかオフ会みたいのやりたい

中高生をターゲットに、IT勉強会っぽいのを開きたいと思った。と思ったんだけど、勉強会みたいにテーマがあるわけじゃないので、オフ会っぽいのがいいっぽい。けどコーディングもしたい。そしたら、Hack-a-thonの形式がいいんじゃねってid:daiki41tiがいって…

プログラムを作る人なら「伽藍とバザール」は読むべき。

日本語訳 → The Cathedral and the Bazaar: Japanese気になったので読んでみた。オープンソースの二つの開発方式に関しての分析から、いろいろな事実を見出している論文。しかもこの論文、Firefoxの生みの親と言えるかもしれない。もっと早くに読むべきだっ…

オープンソースカンファレンス2009 Tokyo/Springいってきました

午前に学校にいって、午後の2時すぎくらいに大久保に到着。勉強会勉強会のに途中参加してから、展示をまわった。とりあえず、OSCは「人のいないコミケ」なのか「勉強会」なのか、正体がわからず困ってたが、正解は「人のいないコミケと勉強会を同時開催」な…

本選満点3人つえええとか言ってるやつ

はっきり言おう。あれは簡単。100点とか余裕。僕がだめだめなだけだ。

情報オリンピックの講演についての僕の感想

id:haradatsさんが講演をしてくれた人っぽいのでIDコール。 講演のサポートページ 公開されている講演資料(PDF) Linuxについての話 僕はこれでも2年以上はLinuxのお世話になってるし、LinuxとかOSSの考えはとても好きなので、ちょっとこの講演の内容が想定し…

情報オリンピック本選通過(合宿招待)報告!

調子悪かったのでgkbr*1してたんだけど通過したよ!やった! JOI 本選結果通知・合宿招待状ID: *********第8回日本情報オリンピック本選にご参加いただき,ありがとうございました.採点結果をお知らせします.A ランク (68点)あなたは優秀な成績でしたので, …

TopCoder SRM435 Div1

…というのは嘘で、高校の入学試験をうけてきました。といっても、連絡進学なので、よほどのことがなければ進学できるはずです。それにしても、SRM434は情報オリンピック本選のせいでできなかったし、SRM435は入試でできないし、ほんとう困りものだ。 今週は…

ProjectEuler 1-10 Ruby

#!/usr/bin/ruby require "rational" def p1 p (0...1000).select {|i|i%3==0||i%5==0}.inject(0) {|a,b|a+b} end def p2 a,b = 1,1 sum = 0 while b<=4000000 sum += b if b%2==0 a,b = b,a+b end p sum end def p3 a=600851475143;(2..a).each{|i|i

ProjectEuler 3 C++TMP

#include <iostream> template<long long int p,long long int i=2> struct p3 { //static const bool per = p%i==0; static const long long int value = p3<p%i==0?p/i:p,p%i==0?i:i+1>::value; }; template<long long int p> struct p3<p,p> { static const long long int value = p; }; int main() { std::cout << p3<6…</p,p></long></p%i==0?p/i:p,p%i==0?i:i+1></long></iostream>

ProjectEuler 3 Ruby

#!/usr/bin/ruby #ans 1 a=600851475143 i=2 while i

ProjectEuler 2 Ruby

a,b = 1,1 sum = 0 while b<=4000000 sum += b if b%2==0 a,b = b,a+b end p sum

ProjectEuler 2 C++TMP

#include <iostream> template<int a,int b> struct intlt { static const bool value = a < b; }; template<bool inrange=true,int a=1,int b=1> struct fibsum { static const int value = fibsum<intlt<a+b,4000000>::value,b,a+b>::value + (b%2==0?b:0); }; template<int a,int b> struct fibsum<false,a,b> { static …</false,a,b></int></intlt<a+b,4000000></bool></int></iostream>

ProjectEuler 1 C++TMP

#include <iostream> template<int i=0> struct sum35 { static const int value = sum35<i+1>::value + ((i%3==0 || i%5==0)?i:0); }; template<> struct sum35<1000> { static const int value = 0; }; int main() { std::cout << sum35<0>::value << std::endl; return 0; }</i+1></int></iostream>