<   2012年 04月 ( 31 )   > この月の画像一覧

 

絶賛ひきこもりの一日

今日は休みだったので何をやったか思い出せない程度には・・・。
恐らく、タイピングゲームの開発をやりつつも、ぐだぐだしていたことは確かです。
f0019846_1595029.jpg

運動していた形跡はありました。

  by ddrer-yossi | 2012-04-30 23:59 | 日常生活 | Comments(0)

栃木旅行 鬼怒川温泉二日目 ~発表そして帰宅~

今日は朝6時に起きて露天風呂へ。
外は風が強かったので肩から上が寒く、下は暖かいという妙な感覚を味わいました。
後はサウナ4分→水風呂→風呂のローテーションを3回。

あんまり公には出来ないですが、何かにも遭遇しました。

その後は8時から朝飯。

f0019846_1047174.jpg


f0019846_10472765.jpg


朝食(Lv7)
30分少々で片づけました。

9時半から発表。
特に何も作っていないので、GCJに関する発表を行いました。
12時には切り上げて、ご飯へ。

f0019846_10485231.jpg


f0019846_1051948.jpg


たぬきそばをいただきました。正直朝食のおかげで腹は減っていなかったのです。

その後は一旦ホテルに戻り、500円で再度温泉へ。4度目です。
終了後はおみやげを買って駅へ。

f0019846_1050177.jpg


f0019846_10503724.jpg


特急券を購入して特急に乗ります。
f0019846_10514754.jpg


f0019846_1053174.jpg


特急の感想は、やはり家族連れが多くて、どうしてもうるさくなってしまうことかな。
後は全席指定なのにもかかわらず、フリーダムに席を使おうとする人とか・・・。
通常列車では気にならないマナーが気になって仕方ないのです。

f0019846_10534529.jpg

16時過ぎに到着。疲労が凄いです。

その後は地元ゲーセン。
ビーマニ1クレ、sound voltex1クレ、diva1クレ、バスケ1クレで終了。

f0019846_10563724.jpg


f0019846_1057323.jpg


なかなか良い記録が出せました。
バスケは久々で370台。
ビーマニはType Marsの難易度9をクリア。(クリアレート60台)

f0019846_10552786.jpg

おみやげ。

夜は何かがんばろうと思っていましたが、ほとんど無理でした(主に日記)
やる気が起きず・・・という。
やったことといえば、IconImageを使ってSecurityPolicyに引っかからないようにする
にはどうすればいいかということ。便利なので一応メモっておきますか。

アドレスにはアドレスを。
ImageIcon icon = new ImageIcon("アドレス");
と書くとローカルのファイルを読み込もうとするので、ダメです。

try{
URL imgUrl = new URL(getCodeBase(),"アドレス");
ImageIcon icon = new ImageIcon(imgUrl);
Image img = icon.getImage();
}catch(Exception e){
}

と書くか
MediaTracker tracker;
Image img = getImage(getCodeBase(),"アドレス");
tracker.addImage(img,0);
try{
tracker.waitForID(0);
}catch(InterruptedException e){
}

のどちらかです。IconImageを使わないと、
画像をロードするタイミングをMediaTrackerなどで指定しなければ、
読み込もうとする時まで読みません。

つまりタイピングゲーム開始→開始してから画像を読み込む
だと画像読み込みラグが発生してしまうので、
タイピングゲーム起動→画像を読み込んでおく→タイピングゲーム開始
といった形にする必要があるのです。

簡単に修正点

vyi vyeで vi veと表示されている時にvyと入力したら終わってしまうバグを修正
yiを「い」に対応

Typing Test

  by ddrer-yossi | 2012-04-29 23:43 | 旅行 | Comments(0)

栃木旅行 鬼怒川温泉一日目 ~GCJとHack-a-thon~

今日は朝10時からGoogle Code Jam Round 1のAが始まりました。
今年こそは予選突破するぞーと意気込んで参加。
まずはAを見る。あー、確率の問題、AとCの手法は割かし簡単だけどBが難しそう。
Bの実装めんどいしSmall解専用にするかなーと思っていたら、
余事象使えば計算できるんじゃねということで、両方用の解に。
提出時の順位は1043位とかそのあたり。

Bに取り掛かる。うーん、問題文ややこしいな。1スター評価と2スター評価があるっぽい。
じゃあ2スターをどっかでたくさん集めればいっかと思ったのが誤り。
実際は2スター評価が最高で、それ以上そのステージでスターは取れない。

これに気づいて書きなおす。
・・・とおらない。なぜとおらないんだくっそくっそ・・・!
とやっていたら5回Incorrectを出した後通りました。

うえっへ、1200位かー・・・。

がっかりしてもしかたないので残り20分でCを読む。
なになに、カーシミュレーション・・・。
衝突判定超絶難しそうなにこれやばい。

組んでみるものの20分では終わりませんでした。

終わってみればA Largeが落ちていて43ptsの1440位。
ちなみにA Largeが通っていても、ぎりぎり1000位に入らないぐらいです。(5ミスのペナルティ)

次回頑張る・・・!

Aの解答(Large落ち)
import java.util.*;
import java.io.*;

public class Test {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("./iothings/A-small-attempt2.in"));
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));
int n = input.nextInt();
for(int i = 0 ; i < n ; i++){
int A = input.nextInt();
int B = input.nextInt();
double[] pr = new double[A];
for(int j = 0 ; j < pr.length ; j++){
pr[j] = input.nextDouble();
}
pw.println("Case #"+(i+1)+": "+num(A,B,pr));
}
input.close();
pw.flush();
pw.close();
}

public static double num(int A,int B,double[] pr){
double keeptype = 0.0;
double bstype = 999999999;
double retype = 0.0;

double keepseki = 1;
for(int i = 0 ; i < pr.length ; i++){
keepseki *= pr[i];
}
keeptype = keepseki*(B-A+1)+(1-keepseki)*(2*B-A+2);

retype = B+2;

for(int i = 1 ; i <= A ; i++){
keepseki = 1;
for(int j = 0 ; j < A-i ; j++){
keepseki *= pr[j];
}
bstype = Math.min(bstype,keepseki*(B-A+2+i)+(1-keepseki)*(2*B-A+3+i));
}

return Math.min(Math.min(keeptype,bstype),retype);

}
}

B(両方パス)

import java.util.*;
import java.io.*;

public class Test {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("./iothings/B-small-attempt5.in"));
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));
int n = input.nextInt();
for(int i = 0 ; i < n ; i++){
int stage = input.nextInt();
MyPair[] pair = new MyPair[stage];
for(int j = 0 ; j < stage ; j++){
pair[j] = new MyPair();
int st1 = input.nextInt();
int st2 = input.nextInt();
pair[j].setFirst(st2);
pair[j].setSecond(st1);
}
pw.println("Case #"+(i+1)+": "+num(stage,pair));
}
input.close();
pw.flush();
pw.close();
}

public static String num(int stage,MyPair[] pair){
Arrays.sort(pair);
boolean isng = true;
for(int i = 0 ; i < stage ; i++){
//System.out.println(pair[i].getFirst()+","+pair[i].getSecond());
if((Integer)pair[i].getFirst() == 0 || (Integer)pair[i].getSecond() == 0){
isng = false;
break;
}
}
if(isng)return "Too Bad";
int stagecount = 0;
int stars = 0;
int stagec = 0;
int[] completenumber = new int[stage];
while(stagecount != stage){
boolean siraberu = true;
if(stars >= (Integer)pair[stagecount].getFirst()){
stars+=(2-completenumber[stagecount]);
completenumber[stagecount] +=2;
stagecount++;
stagec++;
siraberu = false;
}
if(siraberu){
int maxhor = -1;
int maxsec = 0;
int index = -1;
for(int i = 0 ; i < stage ; i++){
if(stars >= (Integer)pair[i].getSecond() && completenumber[i] == 0){
if((Integer)pair[i].getFirst() >= maxhor){
int tmpsec = (Integer)pair[i].getFirst();
if(tmpsec > maxsec){
maxhor = (Integer)pair[i].getSecond();
maxsec = tmpsec;
index = i;
}
}
}
}
if(index != -1){
siraberu = false;
stars+=1;
stagec++;
completenumber[index]++;
}
}
if(siraberu){
return "Too Bad";
}
}

return stagec+"";
}

}

class MyPair implements Cloneable,Comparable>, Serializable {
private static final long serialVersionUID = -553348920790587668L;
@Override
public MyPair clone() {
try {
return (MyPair) super.clone();
} catch (CloneNotSupportedException e) {
throw new IllegalStateException(e);
}
}
public MyPair(){//S first, T second) {
//this.first = first;
//this.second = second;
//return;
}
private S first;
private T second;
@SuppressWarnings("unchecked")
public MyPair(MyPair p) {
first = (S) p.getFirst();
second = (T) p.getSecond();
}
public S getFirst() {
return first;
}
public void setFirst(S first) {
this.first = first;
}
public T getSecond() {
return second;
}
public void setSecond(T second) {
this.second = second;
}
@Override
public boolean equals(Object obj) {
if (obj == this) { return true; }
if (!(obj instanceof MyPair)) { return false; }
MyPair pair = (MyPair) obj;
if (first == null) {
if (second == null) {
if (pair.first == null && pair.second == null) { return true; }
return false;
}
if (pair.first == null) { return second.equals(pair.second); }
return false;
}
if (second == null) {
if (first != null) {
if (pair.second == null) { return first.equals(pair.first); }
return false;
}
}
return first.equals(pair.first) && second.equals(pair.second);
}
/**
* hashcode
*/
@Override
public int hashCode() {
int result = 17;
result *= 31;
if (first != null) {
result += first.hashCode();
}
result *= 31;
if (second != null) {
result += second.hashCode();
}
return result;
}
@Override
public String toString() {
return "[" + (first != null ? first : "null") + ", " + (second != null ? second : "null") + "]";
}
@SuppressWarnings("unchecked")
public int compareTo(MyPair o) {// Comparable>
Comparable f = null;
Comparable s = null;
try {
f = (Comparable) first;
s = (Comparable) second;
} catch (ClassCastException e) {
throw new IllegalStateException(e);
}
if (f == null || s == null || o == null) throw new NullPointerException();
int c = f.compareTo(o.first);
if (c != 0) {return c; }
return s.compareTo(o.second);
}
}

Bはペアを自作しているのでソースコードが長めです。

その後は14時に出発して、鬼怒川温泉へ。
4時間にも及ぶ電車の旅でした。
東武鉄道6両のうち、2両ずつの切り離しとかとても斬新でした。

f0019846_12544169.jpg


f0019846_12553159.jpg


f0019846_12563497.jpg


f0019846_12565859.jpg


f0019846_1258345.jpg

ふれあい橋の階段。芸が細かいです。

f0019846_12584289.jpg


f0019846_1259879.jpg

4人部屋です。

まずは温泉へ。これが1回目。サウナに行くのを完全に忘れていました。

夕飯はバイキング。

f0019846_12595178.jpg


f0019846_130654.jpg


f0019846_1302256.jpg


その後はお腹いっぱいになり、わりとしんどかったです。
ナイトセッションもどきを少し聞いた後で、資料作成にとりかかりました。
ビールが飲みたくなったのでビールを購入しつつやる。
1時にはもう一度温泉へ。しかし露天もサウナもやっていないという感じでした。残念!

f0019846_1355311.jpg


f0019846_1305588.jpg


4時前には限界が来ていたので寝ました。

  by ddrer-yossi | 2012-04-28 23:34 | 旅行 | Comments(0)

久しぶりにまともにjubeat

今日は朝から大雨でなかなか面倒でした。
お昼はねぎ玉で。

f0019846_13472049.jpg


夜は若干の雨の中ゲーセンへ。

jubeat4クレとbeatmania1クレの構成でした。
やっぱり仲間内でプレーしなければやる機会あんましないなーという。

ビーマニは難易度9最難関らしきFEEL ITをやってみたら、
一発でクリアできた。トリルで落とさなきゃいいだけの話だけど、
左手トリルが苦手な人が多いという認識でいいのかな。

f0019846_13503986.jpg


夜はお約束のダンレボ・・・ですが、またも最後の曲で踏みミスをして落とす。

  by ddrer-yossi | 2012-04-27 23:45 | 日常生活 | Comments(0)

遅れて間に合うこともある

今日は時刻的には完全に遅れていたのですが、
電車も遅れていてうまい具合に乗り合わせました。
おかげで間に合うことができました。

今日は補講というのもあり、かなり疲れた一日でした。
カービィの7面をクリアした後に帰宅。

DDRを2セットとWiiFitというかなりきつめの運動。
DDRの2回目もところどころ踏めていません。
WiiFitのときはもはやまともに足が動きませんでした。

f0019846_13585212.jpg


f0019846_1359411.jpg

  by ddrer-yossi | 2012-04-26 23:55 | 日常生活 | Comments(0)

仕事後ゲーセン。Diva進捗。

今日は仕事へ。
お昼は白髪ネギ。すき家の今あるトッピングの中では一番好きな奴です。
f0019846_142157.jpg


夜はゲーセン。
どうしてこうなったに手応えを感じたので地元ゲーセンでも粘ることを決意した。
ビーマニはQuantom Teleportationで落とす。無理だわ・・・。

jubeatはついにSigSigでフルコン。スコアが物凄い低いのはラストで切らないように
慎重になりすぎたというところです。
f0019846_144524.jpg


そしてこちらも終了。○×□△ ×□△○ □△○×○ がわかればok。
あとは同時押しで落とさないこと。
f0019846_1453927.jpg


運動もしっかりやりました。
f0019846_1472136.jpg

  by ddrer-yossi | 2012-04-25 23:00 | 日常生活 | Comments(0)

暑さが身にしみた一日

今日は急に夏日になりました。
発表があるので10時ぐらいに某所へ。

午後発表してみたら汗だくでした。うーむ、暑い!

16時までセミナーはあり、その後はカービィの5面と6面を知り合いとプレー。

終了後は帰路へ。

ゲーセンではgigadelic(N)とbroadbanded(H)をようやくノマゲクリア。
ギガデリはあっさりだったけどブロバンは難しいね。

f0019846_1443288.jpg

ついでにMedicine of Loveをフルコン。

夜はお約束。
f0019846_14425548.jpg

  by ddrer-yossi | 2012-04-24 23:09 | 日常生活 | Comments(0)

篭って開発 TopCoder SRM541

今日は朝から午後にかけて某所で講義、
その後は某タイピングゲームの開発をしていました。

前にっが入る入力 例 っじゃとかで
zzya jja jjya などの入力に対応させることに専念していました。
後はどこまで許容するか検討した結果、全部のIMEに対応させる感じにすることにしました。

たとえば swaですぁと入力できるのはMS-IMEぐらいです。
hwyuでふゅと入力できるのはGoogle-IMEのみとか。
バグも見つかったのでそれも直しつつ18時まで作業。
あいうえおなにぬねのはカバーしていたのですが、やゆよを完全に忘れていたので、
nnとの組み合わせでバグが。
たとえば「こんや」を打つにはnを2回入れるなりする必要がありますが、konyaになっていました。
Microsoft社がミスっているんですし・・・!

その後はジャグリングの練習に久しぶりに参加しました。
4ミルズの練習始めました(えっ
みんな元気そうで何よりです。

帰宅後はTopCoder SRM541に参戦。
easyが難しく、時間をかけすぎたせいでmediumに時間が取れませんでした。

easy は わあい X あかり X だいすき で
わあい、X、あかり、だいすきの部分の組み合わせの数を求める問題。
下は三重ループO(n^3)の実装例。
まずは文字列から標本となる部分列を取ってくる(O(n^2))
それぞれに関してそれ以降にもう一度標本となる文字列が出るか探す。(O(n))
ただし探す場所は標本の位置以降で、かつ最後の1歩手前までが条件となる。


public class AkariDaisukiDiv2 {

public int countTuples(String S) {
int count = 0;
for(int i = 1 ; i < S.length()-1; i ++){
for(int j = i+1 ; j < S.length(); j++){
String sb = S.substring(i,j);
for(int k = i+sb.length()+1 ; k < S.length()-sb.length() ; k++){
if(sb.equals(S.substring(k,k+sb.length()))){
count++;
}
}
}
}
return count;
}

}

mediumは一応System Test後に通したので。
問題としてはアリの座標がx,yで与えられていて、進行方向が与えられている。
ぶつかったアリは同時に消滅する。残ったアリの数を求めよ。

単純にシミュレートするのが楽。ただし、こういった場合は注意。




1が下、2が上に行こうとする時、1マスシミュレートだと入れ替えになって衝突判定ができない。
これがあるので座標を2倍するというテクニックを用いるとうまくいく。
シミュレーションは十分な値をとって行う。その際オーダには気をつけること。

import java.util.ArrayList;

public class AntsMeet {

public int countAnts(int[] x, int[] y, String direction) {
for(int i = 0 ; i < x.length ; i++){
x[i] = x[i]*2;
y[i] = y[i]*2;
}
int count = 0;
for(int i = 0 ; i < 10000 ; i++){
for(int j = 0 ; j < x.length ; j++){
if(x[j] != 10000){
if(direction.charAt(j) == 'N'){
y[j]++;
}else if(direction.charAt(j) == 'E'){
x[j]++;
}else if(direction.charAt(j) == 'W'){
x[j]--;
}else if(direction.charAt(j) == 'S'){
y[j]--;
}
}
}
for(int k = 0 ; k < x.length-1 ; k++){
ArrayList list = new ArrayList();
if(x[k] != 10000){
for(int l = k+1 ; l < x.length ; l++){
//System.out.println(x2[l]+","+x2[k]+","+y2[k]+","+y2[l]);
if(x[l] != 10000 && x[k] == x[l] && y[k] == y[l]){
list.add(l);
}
}
}
if(list.size() != 0){
count++;
x[k] = 10000;
for(int t = 0 ; t < list.size() ; t++){
count++;
x[list.get(t)] = 10000;
}
}
}
}
return x.length-count;
}

}

夜は這いよれニャル子さんが流行っていたので見てみました。
うーん、カオスですね。

カップヌードルのキングサイズがどんなものか食べました。夜食です。
f0019846_1515579.jpg

思ったほどパッケージの割に大して量入ってなかった気がします。

  by ddrer-yossi | 2012-04-23 23:58 | TopCoder | Comments(0)

具合の悪い一日

定例会の余興ということで、朝10時にぷんださんのバイクに乗って大岡山のゲーセンへ。
選曲は1曲目は忘れましたが、2曲目Sakura Sunrise 3曲目Max300とやってぜぇぜぇ。
この後急に気持ち悪くなり、地獄を見ることになりました。

その後Sound Voltexをやるも、体調は回復せず。
あまりにもしんどかったので11時半頃には引き上げることにしました。
ほとんどなにもできませんでしたがお疲れ様でした。

しかし、地元ゲーセンに戻ってからは元気を取り戻しました。
主にproject divaをプレー。

イヤイヤ、サイハテでGreat判定、フランシスカは二度目のperfectでした。

f0019846_15213134.jpg


f0019846_15213676.jpg


f0019846_15214227.jpg


帰宅後はだらだらしていたかと思います。
運動もしました。なぜかこちらは絶好調。

f0019846_15232172.jpg


乙女☆道でフルコンです。初かもしれません。

  by ddrer-yossi | 2012-04-22 15:18 | DDR | Comments(0)

勉強会+KPL定例会

今日は午後から勉強会。10時には出発といったところ。
JavaScriptの会も一旦これで終了。次回はHTML5かOpenGLESをやるんだとか。
どちらに参加するかまだ迷っています。

終了後はKPLへ。電車に2時間半揺られてまずは平気でオーバーして大岡山へ。
到着したのは8時少しすぎたところでした。

本日のKPLメニュー。

f0019846_17425661.jpg


f0019846_1743469.jpg


f0019846_1743204.jpg


f0019846_1745067.jpg


f0019846_17451084.jpg


f0019846_17451779.jpg


f0019846_17452741.jpg


f0019846_17453765.jpg


f0019846_17454496.jpg


f0019846_1747163.png


梅酒を結構飲んでいたのと、iPadを音ゲープレイヤーの面々に渡したところで、
手持ち無沙汰になったところで急に気持ち悪くなりました。
言うなればKPL初で、かつ今年初のリバースです。
普段はそう簡単には行かないのですが、今日は疲労も関係していたのかもしれません。
ご迷惑おかけしました・・・。
結果的に1時前ぐらいには落ちてしまいました。ざんねん。

  by ddrer-yossi | 2012-04-21 23:39 | 日常生活 | Comments(0)

SEM SKIN - DESIGN by SEM EXE