<   2013年 01月 ( 32 )   > この月の画像一覧

 

beatmania専コンのメンテ。

5鍵がよく切れるということで、メンテしていたが、直らないので
ティッシュ箱を切り取り直して全て付け直す。
三段重ねでもトリルの反応がおかしいので、四段重ねにしたところ
納得行く感じになった。

f0019846_2334312.jpg


f0019846_233566.jpg


そして夜はゲーセンへ。
☆10フルコン2曲目(かな。
f0019846_2344012.jpg


ここで衝撃の事実が確定するわけで・・・。
この通いつめている地元ゲーセンの音ゲーメンテをされている方が
辞めていくところを見ました。

音ゲーのメンテは、ゲーセンの店員の音ゲースキルに依存します。
同様に、保守運用も知識のない人がやると大変なことになります。
つまり音ゲーを扱ってるゲーセンは、音ゲーの腕前を見て採用を考えるのも良いのではないかと。
メンテの良いゲーセンに腕前が高い店員がいます。

経験上、メンテの悪いゲーセンには一度行ったきり行く気がなくなるので、
プレイヤーが減る→インカムが落ちるので、メンテは大変重要です。
コミュニケーションノートなどで客の苦情からわかることもあるけど、
最適な調整に関しては経験者でないとわからない部分が多々あるわけです。

さあて・・・このゲーセンも・・・。

混んできたのでDivaへ。ぽっぴっぽーをさりげなく2回めのパーフェクト。

f0019846_30977.jpg

  by ddrer-yossi | 2013-01-31 23:31 | Beatmania | Comments(0)

Facebook Hacker Cup予選通過!

昼ごろに結果が出てました。
A,Bを通して通過です。C頑張ったんだけどなー。

A問題

文字列が与えられていて、出現頻度順に得点を下げていく。
合計点を計算せよという問題。a-zのアルファベットの出現頻度をカウントして、
多い順にソートして、*26から*1までやっていくだけ。


import java.util.*;
import java.io.*;
import java.math.BigDecimal;

public class Test {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("./iothings/beautiful_strings.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));
int n = input.nextInt();
input.nextLine();
for(int i = 0 ; i < n ; i++){
String s = input.nextLine();
pw.println("Case #"+(i+1)+": "+num(s));
}
input.close();
pw.flush();
pw.close();
}

public static int num(String s){
ArrayList list = new ArrayList();
ArrayList counter = new ArrayList();
for(int i = 0 ; i < s.length(); i++){
char c = s.charAt(i);
if(65 <= c && c <= 90){
if(list.contains((char)(c+32))){
counter.set(list.indexOf((char)(c+32)),counter.get(list.indexOf((char)(c+32)))+1);
}else{
list.add((char)(c+32));
counter.add(1);
}
}else if(97 <= c && c <= 122){
if(list.contains(c)){
//System.out.println(c+","+list.size()+","+counter.size()+","+list.indexOf(c));
counter.set(list.indexOf(c),counter.get(list.indexOf(c))+1);
}else{
list.add(c);
counter.add(1);
}
}
}
int[] listnum = new int[counter.size()];
for(int i = 0 ; i < listnum.length ; i++){
listnum[i] = counter.get(i);
}
Arrays.sort(listnum);
int index = 0;
int listindex = listnum.length-1;
int sum = 0;
while(listindex >= 0 && index <= 26){
sum += listnum[listindex]*(26-index);
index++;
listindex--;
}
return sum;
}

}


B問題は、:)と:(、もしくは()で閉じられている文面はok。
それ以外のカッコが入った文面はダメというのを判定する問題。
つまり:)()はokですが、:))(などはダメということです。
色々変数書いて判定してました。


import java.util.*;
import java.io.*;
import java.math.BigDecimal;

public class Balance {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("./iothings/balanced_smileys.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));
int n = input.nextInt();
input.nextLine();
for(int i = 0 ; i < n ; i++){
String s = input.nextLine();
pw.println("Case #"+(i+1)+": "+num(s));
}
input.close();
pw.flush();
pw.close();
}

public static String num(String s){
int sf = 0;
int ff = 0;
int op = 0;
int cp = 0;
boolean sfflag = false;
for(int i = 0 ; i < s.length() ; i++){
if(s.charAt(i) == ':'){
sfflag = true;
}else if(s.charAt(i) == '('){
op++;
if(sfflag)ff++;
sfflag = false;
}else if(s.charAt(i) == ')'){
cp++;
if(sfflag)sf++;
sfflag = false;
if(op == 0){
if(sf == 0){
return "NO";
}else{
sf--;
cp--;
}
}else{
if(ff == op){
ff--;
op--;
cp--;
}else{
op--;
cp--;
}
}
}else{
sfflag = false;
}
}

if(op == cp){
return "YES";
}else{
if(op > cp){
if(ff >= op-cp){
return "YES";
}
return "NO";
}else if(op < cp){
if(sf >= cp-op){
return "YES";
}
return "NO";
}
}
return "NO";
}

}


Cは通っていないですが一応頑張ったので・・・。
おそらくオーバーフローかな・・・という。

ある計算式で数列が与えられていて、
後々の数列は全部今までにない数字を書いていくという具合。
これには規則性が必ず現れるので、一周期だけ計算して、
後は余りなどからどの値になるか判別する。

ソートすると時間がかかるので、ソートせずに挿入削除を自前実装。
これにより時間に間に合わせたはずだが、通りませんでした。


import java.util.*;
import java.io.*;
import java.math.BigDecimal;

public class FindTheMinV2 {

public static void main(String args[]) throws Exception{
Scanner input = new Scanner(new FileReader("./iothings/find_the_min.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("./iothings/output.txt"));
int x = input.nextInt();
input.nextLine();
for(int i = 0 ; i < x ; i++){
int n = input.nextInt();
int k = input.nextInt();
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int r = input.nextInt();
pw.println("Case #"+(i+1)+": "+num(n,k,a,b,c,r));
}
input.close();
pw.flush();
pw.close();
}

public static int num(int n,int k,int a,int b,int c,int r){
int m[] = new int[k];
m[0] = a;
//System.out.println(999900000 % 100002);
for(int i = 1 ; i < k ; i++){
m[i] = (int)(((long)b*(long)m[i-1]+(long)c) % (long)r);
}
int[] abc = new int[k];
for(int j = 0 ; j < k ; j++){
abc[j] = m[j];
}
Arrays.sort(abc);

//long st = System.currentTimeMillis();
for(int i = k ; i < 2*k ; i++){
//System.out.println(i);

int ms = m[0];

/*��`�T��
int index = 0;
while(true){
boolean flag = false;
for(int j = 0 ; j < m.length ; j++){
if(m[j] == index){
flag = true;
break;
}
}
if(!flag){
for(int l = 0 ; l < k-1 ; l++){
m[l] = m[l+1];
}
m[k-1] = index;
break;
}
index++;
}
*/

boolean selected = false;
for(int j = 0 ; j < k-1 ; j++){
if(abc[0] != 0){
for(int l = 0 ; l < k-1 ; l++){
m[l] = m[l+1];
}
m[k-1] = 0;
selected = true;
break;
}
if(abc[j+1]-abc[j] <= 1){
continue;
}else{
for(int l = 0 ; l < k-1 ; l++){
m[l] = m[l+1];
}
m[k-1] = abc[j]+1;
selected = true;
break;
}
}
if(!selected){
for(int l = 0 ; l < k-1 ; l++){
m[l] = m[l+1];
}
m[k-1] = abc[k-1]+1;
}
for(int u = 0 ; u < abc.length ; u++){
if(abc[u] == ms){
for(int v = u ; v < abc.length-1 ; v++){
abc[v] = abc[v+1];
}
break;
}
}
boolean flag = false;
for(int u = 0 ; u < abc.length ; u++){
if(abc[u] > m[k-1]){
for(int v = abc.length-1 ; v > u ; v--){
abc[v] = abc[v-1];
}
abc[u] = m[k-1];
flag = true;
break;
}
}
if(!flag){
abc[abc.length-1] = m[k-1];
}
}

//long et = System.currentTimeMillis();
//System.out.println(st-et);

//�v�f�lj����
int[] newm = new int[k+1];
for(int i = 0 ; i < k ; i++){
newm[i] = m[i];
}
boolean selected = false;
for(int j = 0 ; j < k-1 ; j++){
if(newm[0] != 0){
newm[k] = 0;
selected = true;
break;
}
if(newm[j+1]-newm[j] <= 1){
continue;
}else{
newm[k] = newm[j]+1;
selected = true;
break;
}
}
if(!selected){
newm[k] = newm[k-1]+1;
}

//return m[k-1];
if((n-k) / k == 0){
return newm[(n-k-1)];
}else{
//System.out.println("aaa"+","+(newm.length+1)+","+(n-k));
return newm[(n-k-1) % (newm.length)];
}
}

}


その後は某所の説明会に参加し、後に1クレだけTODをやる。

f0019846_311554.jpg


Titansクリア。

f0019846_3114490.jpg


Venus Fountainにカードかざしたら3台中2台がフィーバーしちゃったやつ。
まあやりませんでしたが。

f0019846_3122577.jpg


混んでいたので帰宅。
ちなみにFacebook Hacker Cupの正答率はこのような感じ。

1問目 9865/10697
2問目 2860/7096
3問目1929/2555
R1進出10169人

2問目正解したのは嬉しいかも。3問目は逆になんでやらかしたんだろうという・・・。

  by ddrer-yossi | 2013-01-30 23:02 | 日常生活 | Comments(0)

食事会とかゲーセンとか、TopCoder SRM568

今日は10時過ぎに起床して遅い朝食。
お昼は待ち合わせていた方とランチへ。

f0019846_3195054.jpg


あれやこれやとお話した後、解散して渋谷ゲーセンめぐりへ。

ビーマニ置いてるところが少ししかないのであっという間でした。
タイトーのメンテが正直かなりひどい。3台あるだけに惜しいなー。
でも喫煙所が近くにあるのでダメですね。

マシというならば渋谷会館でしょうか。アドアーズの一台も許容範囲ではありますが、
真後ろが喫煙スペース。

ということで渋谷会館で取ったRistacciaのノマゲを。
f0019846_3214948.jpg


夜はTopCoder SRM568。

easy。問題文を理解するのに時間がかかった。
10倍したところまでのグループがいくつできるかという問題。
5から511であれば
5-50
51-510
511の3つとなる。


public class TheSimilarNumbers {

public int find(int lower, int upper) {
int count = 0;
int stnum = lower;
while(stnum <= upper){
stnum*=10;
count++;
stnum++;
}
return count;
}

}


medは、軸を決めて全探索するのが賢いやり方でした。
途中までそう考えていたのに、なぜ変な考え方に走ってしまったのか。
ということで解けず。
Rating 1164->1101

  by ddrer-yossi | 2013-01-29 23:17 | TopCoder | Comments(0)

知り合いと飲みに行く + Codeforces Round #164

今日は朝は数学ガールを読む。フィボナッチ数列の一般項が出ていてびっくり。
お昼は某所へ。あんまり聞くこともなかったなーという印象。

夜は待ち合わせていた友人とゲーセンへ。
ひと通りの音ゲーをやったような。ミュージックガンガン含む。

f0019846_12345888.jpg


f0019846_1235818.jpg


f0019846_12352675.jpg


f0019846_12355864.jpg


f0019846_12361085.jpg


f0019846_12361774.jpg


f0019846_12362627.jpg


f0019846_12363473.jpg


f0019846_12364364.jpg


f0019846_12365224.jpg


f0019846_1237057.jpg


f0019846_12371324.jpg


f0019846_12372265.jpg


二時間程度駄弁りつつ帰宅。
地元ゲーセンはアレだったので直帰しました。
帰宅後はcodeforcesに備える。

A問題。
HomeとAwayのカラーがチームごとに与えられていて、
総当りするときにホーム側がアウェイ側の色にしなきゃいけない回数を求める。
総当り(O(n^2))して、数字が一致するところをカウントすればok。
自分のチーム同士の比較はやらない。


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main2 {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] h = new int[n];
int[] a = new int[n];
for(int i = 0 ; i < n ; i++){
h[i] = input.nextInt();
a[i] = input.nextInt();
}
System.out.println(kaburi(n,h,a));

}

public static int kaburi(int n,int[] h,int[] a){
int sum = 0;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < n ; j++){
if(i != j){
if(h[i] == a[j]){
sum++;
}
}
}
}
return sum;
}


}


B問題は、ボタンが複数あって、間違った場合、やり直しになる。
操作プレイヤーはあってる順番は覚えていく。
最悪の場合何回押す必要があるか。

実際に例示をやって、後はパターン化する方式で。


import java.util.Scanner;

public class Main2 {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
if(n == 1){
System.out.println("1");
}else if(n == 2){
System.out.println("3");
}else if(n == 3){
System.out.println("7");
}else{
int sum = 7;
int offset = 4;
for(int i = 4 ; i <= n ; i++){
offset += i-1;
sum += offset;
}
System.out.println(sum);
}
}
}


C問題は、縦軸横軸で同じ点が出ないように点を好きな様に決めるという問題。
つまり、縦軸横軸で短い方+1の点ができる。


import java.util.Scanner;

public class Main2 {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int m = input.nextInt();
if(n >= m){
System.out.println(m+1);
for(int i = 0 ; i <= m ; i++){
System.out.println(i+" "+(m-i));
}
}else{
System.out.println(n+1);
for(int i = 0 ; i <= n ; i++){
System.out.println(i+" "+(n-i));
}
}
}
}


D問題は最難関。読む気も起こらず。

E問題は、好きな曲と嫌いな曲があって、曲ごとに好きになる確率が書いてある。
嫌いな曲にあたると、好きな曲リストをひと通り聴いてから新しい曲を聴くという。
この時、期待値を最高にする並び順にして、期待値を出力せよという問題。

  by ddrer-yossi | 2013-01-28 23:32 | codeforces | Comments(0)

ドラマニ廃人?

今日はゲーセンでドラマニ中心にプレー。
love war(3.10)で落ちるなど・・・。

この日の最高難易度は隅田川夏恋歌(4.50)と思ったけど
4.60クリアしてました。全力少年(4.20)落ちるんですけどね。

f0019846_12543353.jpg

偶然マッチングな例。

太鼓とかもやりました。難易度8クリアしたものの、難しいの難易度なのでなんとも。
太鼓は鬼の難易度表示と難しいの難易度表示はまったくの別物だと考えていい。
難しいのノリで鬼の同難易度とかに挑むと死にます。

  by ddrer-yossi | 2013-01-27 23:52 | 日常生活 | Comments(0)

Facebook Hacker Cup 2013 予選開始

朝9時から始まりました。
が、寝坊して取り掛かったのは11時。
昼飯をはさみつつA,Bは1時間半程度。
が、Cがなかなかオーダを落とせない。
これじゃあ実行時間6分のうちに終わらんということで、策を練ること5時間。
ようやく提出に至った。

夜はミルクティ粉末とジャックダニエルを買いにスーパーへ。
ついでにゲーセンへ。

SABER WINGが埋まった!
f0019846_132683.jpg


恋する宇宙戦争がノマゲ76%。惜しい><
f0019846_133516.jpg


なんだかんだ悪くない一日でした。

  by ddrer-yossi | 2013-01-26 23:59 | 日常生活 | Comments(0)

DJ TROOPERSを中心に埋め

今日はGOLDとDJ TROOPERSの☆11を中心に。

GOLDは☆11がSense 2007以外埋まる。
☆10最難関とも言われるゲロンとかも埋まった。
f0019846_1381273.jpg


TROOPERSは☆10未クリアのAround the Galaxyとトリフェニをやった。
Around the Galaxyは未だに埋まらず。ノマゲはラストが・・・。

f0019846_1385061.jpg


f0019846_139462.jpg


f0019846_1392475.jpg


☆11上位系が結構埋まったし満足かなーという。

  by ddrer-yossi | 2013-01-25 23:06 | Beatmania | Comments(0)

世界で闘うプログラミング力を鍛える150問の続読

世界で闘うプログラミング力を鍛える150問の続きを読む。
バケツソートはArrays.sortより速いという話とか、
クイックソートとマージソートの復習とか。

以前ピタゴラスイッチでしめじソートとじゃがいもソートをやっていたので、
あれを思い出しつつ。
頭の体操の段階まで読み進めました。
問題を解くほうに重点が置かれていると思われますが、取り敢えずセクション一読を目標に。

夜はGOLD九段粘る。
smile100%突入ですら、VANESSAラストで殺されるのでどうしようも。
f0019846_1339387.jpg


f0019846_13394812.jpg

  by ddrer-yossi | 2013-01-24 23:23 | Beatmania | Comments(0)

採点のため某所へ

今日は某所に赴きました。
そこで、数学ガール5冊をまとめ買い。

その後は2時間ほど採点を担当する。ひどいのはやはり終わってる。
流石にありえないということで、3人ほど再提出にする。

某人の説明を聞いて、終了後はご飯へ。
f0019846_13424197.jpg


f0019846_13424838.jpg


f0019846_13425786.jpg


f0019846_13432138.jpg


f0019846_13432872.jpg


f0019846_13433637.jpg


ごちそうさまでした!

夜はボードゲームを2回ほど。1回は勝利、2回目は敗北というより一人勝ちが出る。
その後は何故か麻雀。頃合い計って帰れるかなーと思いきや、まさかの北入。
2位着地で、終わってみれば4時間の攻防でした。長すぎる。

ということで始発までその場にいた連中とだべりつつ、
酒買いにいったところで休みつつ、始発で帰る。

  by ddrer-yossi | 2013-01-23 23:38 | 日常生活 | Comments(0)

神保町二郎へ。秋葉原ゲーセン巡り。Codeforces Round #163

今日は長丁場、朝から夕方にかけての説明会。
その時に知り合った方と一緒に二郎へ。

f0019846_14595663.jpg


通常の全マシでこれです。
年1ぐらいの頻度なのですが、歳を取るにつれて、食べられなくなってきていることが
実感できます。今まではスープまで飲めたのですが、今回はスープはギブアップ。

解散後は秋葉原まで出歩いてゲーセンへ。
gigadelicを家庭用でクリアしたので、ゲーセン粘着するも、実らず。
諦めて他の曲をやる。

532nmでノマゲ。
f0019846_1512575.jpg


ひと通り巡ったところで、地元に戻り、maimaiをプレー。

f0019846_1522122.jpg


f0019846_1523399.jpg


帰宅後はcodeforcesへ。

A問題は、隣の石が違う色になるように石をいくつ取り除く必要があるか。
同じになっているところを随時取り除いていくだけ。

import java.util.LinkedList;
import java.util.Scanner;

public class Main2 {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
String r = input.next();
System.out.println(stone(n,r));

}

public static int stone(int n,String s){
int count = 0;
char stone = s.charAt(0);
for(int i = 1 ; i < n ; i++){
if(stone == s.charAt(i)){
count++;
}else{
stone = s.charAt(i);
}
}
return count;
}
}


B問題は、GirlとBoyがいて、Boyはshyなので、後ろにいるGirlを前に出そうとする。
これを規定ターンやった時の並び順を出力するという問題。
ターン数がせいぜい50なので、実際にシミュレートするだけ。
文字列操作に便利なStringBuilderを使った。


import java.util.LinkedList;
import java.util.Scanner;

public class Main2 {

public static void main(String args[]){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int t = input.nextInt();
String r = input.next();
System.out.println(stone(n,t,r));

}

public static String stone(int n,int t,String s){
StringBuilder sb = new StringBuilder(s);
for(int i = 0 ; i < t ; i++){
for(int j = 0 ; j < sb.length()-1 ; j++){
if(sb.charAt(j) == 'B' && sb.charAt(j+1) == 'G'){
sb.setCharAt(j,'G');
sb.setCharAt(j+1, 'B');
j++;
}
}
}
return sb.toString();
}
}


C問題は、0か1を行列の要素として含む行列の1を、
左下(対角線含まない)にすべて集めるための方法を出力する問題。
難しめ。できず。

  by ddrer-yossi | 2013-01-22 23:59 | codeforces | Comments(0)

SEM SKIN - DESIGN by SEM EXE