No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1203 | 1204 | 1205 |...| 1348 | 1349 | 1350 || Next»

あなごる "Bracket Matching"

最近のあなごるの問題は埋め込みで解く問題が多いように感じたので(連続したので)簡単かつ埋め込みで解こうとは思わない問題を出してみた.問題は Bracket Matching で,括弧の対応が取れているかを答える問題.埋め込み防止のため,マッチしていない場合にはマッチできない括弧以降を出力するようした(yes/no だけではビットにエンコードされるので…).また,入出力のサイズを大きくしてさらに埋め込みをやりたくなくなるようにした.

んで,毎度のごとく sed でちゃらっと組んで投げてみたら見事に timeout くらった.入力がでかすぎで処理に時間かかりすぎとのこと.この埋め込み防止策で自分の首を絞めるとはあほすぎる.

そうじする

掃除機の音がうるさいなぁと思いつつだいぶ掃除してみる.埃まみれになった結果,結構片付いた気がする.でも,散乱してた本を片付けたら本棚に空きがなくなった.あー,本棚がほしい

judge Janken @sed 44Bへの道

なんとなく収束してそうだしネタばれ的に書いてみる.この問題の鍵は勝敗判定部分を如何に簡単にするかだと思って組み始めた.とくに,じゃんけんはグー・チョキ・パーを巡回させても勝敗が変わらないので,適当な正規化をしてやるというのが短いコードへの近道かなぁと.

ということで,最初に考えたのが次の 73B のプログラム.

s/P\w*/5/g
s/[SC]\w*/2/g
s/[GR]\w*/0/g
:
y/025/250/
/^0/!b
/2/c>
/5/c<
c=

こいつは,まず各種グー・チョキ・パーを 0・2・5 に変換し,次に一人目の手がグーであるように両者の手を回転させ,最後に二人目の手を見て勝敗を判定する.判定は,一人目がグーであるので,二人目がチョキなら '>',パーなら '<',残りは '=' となる.

基本アルゴリズムはこのままで,以降最初と二番目のステップが縮まっていく.

一段階縮まったプログラムは次の 64B のプログラム.

s/P/5/g
s/[SC]/2/g
s/[GR]/0/g
:
y/025/250/
/^0/!b
/2/c>
/5/c<
c=

最初の一文字だけ見ればいいので無駄な置換をしないことにした.これで最初のステップの部分がだいぶ小さくなった.

が,一文字しか置換しないなら・・・ y コマンドでいいじゃん,と.この書き換えを始めて次の 49B を得た.

y/PSCGR/52200/
:
y/025/250/
/^0/!b
/2/c>
/5/c<
c=

で,yが二つに分かれてるのは無駄だなぁということで,先頭の y をひとつにくっつけてしまって最終的に次の 44B になった.

:
y/PSCGR025/05522250/
/^0/!b
/2/c>
/5/c<
c=

すっきり爽快無駄のないコード.Perl の現時点のコードより短い.やっぱり sed はいいなぁ.

magic_quotes_gpc のせいではまる…

phpプログラムに dat=<?xml version="1.0" encoding="UTF-8"?> というクエリを URLエンコードして POST で送ったら,あるサーバでは echo $_REQUESTdat; の結果が <?xml version="1.0" encoding="UTF-8"?> になり,別のサーバは <?xml version=\"1.0\" encoding=\"UTF-8\"?> のようにクオーテーションがエスケープされてしまった.んで,原因がまったくわからず自分のプログラムがおかしいと思って無駄な時間を費やし…

結論としては magic_quotes_gpc などというものが勝手にエスケープしてくれていると.てきとうに調べると次のようなコードが見つかったので使ってみた.get_magic_quotes_gpc() というのがフラグになってるのねと.

<?php
 function gpc_stripslashes($st) {
 if (get_magic_quotes_gpc()==1) {  
  return stripslashes($st);  
 } else {  
  return $st;  
 }  
} 

参考:

http://www.spencernetwork.com/Forums/bin/YaBB.cgi?board=cgi;action=display;num=1122598707

Suica で地下鉄

ようやく Suica で地下鉄乗れるようになったそうなので早速使ってみたり.パスネットを取り出すのに比べてだいぶ楽だ… あとは Suica が全国で使えるようになってくれれば文句なし.ついでに,ETCみたいに通り抜けるだけになってくれるとありがたいなぁ.

そういや Same Origin Policy とかってあったけなぁ

結局 javascript 単体で他のホストの Web Servide を REST アクセスで利用するのも無理と.ブラウザ側の設定かえてすべてアクセス許可とかやればいいけどそんな作業をやらせたくない.しゃーないからメインのページを php で書いて通信をリダイレクトさせるか… だいぶ面倒になってきた.

«Prev || 1 | 2 | 3 |...| 1203 | 1204 | 1205 |...| 1348 | 1349 | 1350 || Next»
Search
Feeds

Page Top