Twitter

Accounts

巡拝

  • 2015/01 関東三十六不動尊結願
  • 2015/04 江戸三十三観音満願

資格等

  • 英検2級
  • 漢検2級
  • 文検4級
  • 普通自動車AT
  • Master of Integrated Biosciences
  • 日本バイオインフォマティクス学会認定バイオインフォマティクス技術者

  • 以下は受験料が無料だった時に適当に取ったので誇ることもない。

    • Yahooデジカメエキスパート1級
    • Yahooタイピングエキスパート6級
    • (日本将棋連盟)将棋1級

CodeIQ出題

CheckiO

競技プログラミング等

Judge Rate
TopCoder 1016 (緑のまま引退の危機)
Codeforces 1666 (青が1600-1899になったので引退しました)
HackerRank 2303
AtCoder 1800程度
yukicoder Lv 73
AOJ 658問
POJ 275問
CodeIQ バッジ数・スキルピース数トップ
paiza paizaマスター、言語マスター
CheckiO 全問解答
8946 残3問
(少なくとも表彰式が)オンサイトの大会 (成績)
RProcon 2013
CodeSCORE 2014 本選単独満点・優勝/50
Code Formula 2014 本選36位(銀賞)/100
CODE FESTIVAL 2014 112位/200、あさプロ Middle23位(銀賞)/100
Data League 2014 本選17位/18
Code Runner 2014 本選19位/100
CODE FESTIVAL 2015 116位/200、あさプロ Easy7位(入賞)/100 Middle77位/70+α
Data League 2015 12位/46
Code Runner 2015 本選33位/100
CODE FESTIVAL 2016 84位/220、Elimination Tournament Round3進出
BattleConferenceU30 2018 プログラミングバトル 本選5位/80

音楽ゲーム

ゲーム ID 成績
[TAITO]
グルーヴコースター AC:asn66m4n CS(Android):約2000位。(機種変更回数の上限を知り絶望)ほぼ引退。
AC:500位台。Perfect6、S++51
[SEGA]
maimai 9.25
chunithm 2037702683463 13.07
DIVA CWAAQK79AD
[BNEI]
太鼓の達人 532629126552 モモイロ初級(苦笑)
シンクロニカ 46fade365cce05f806f0445be25bfd761acb2400
[CAPCOM]
crossbeats 51486150 2018/2 RP1750達成
crossbeats REV. 76435928 Class III RP1473.03
[KONAMI]
jubeat saucer 57710108066051 3.50
jubeat prop 60930017972907 Step 15
jubeat qubell 60930007106643 Stage 5クリア
jubeat clan 60930002044801 7.15
Reflec Beat RB-6564-2108 VOLZZA CLASS 8
DDR 41242214 Enjoy LV 18
弐寺 3492-2945 (pendual) SP7級、step up ED1
pop'n 4392-2014-5346
BeatStream Beast Rank9
SDVX SV-2080-7171 HH 岳翔
museca Curator Rank12
DanceRush Impress常駐
GD 0009ee6234 iOSは1600取って放置、ACは引き継ぎだけした(スキルポイント引き継がれないの…?)
[他]
ちくたくコンチェルト 0364886461 exc125
はちはち (削除済)

作ったもの

URL
cTouch https://github.com/cielavenir/ctouch/
https://sourceforge.net/projects/ctouch/
picrawler https://github.com/cielavenir/picrawler/
R on iOS (記入時点でrwikiが落ちている…何たること…)
http://rwiki.sciviews.org/doku.php?id=getting-started:installation:iphone
R on Android http://rwiki.sciviews.org/doku.php?id=getting-started:installation:android
Google TwoFactor Authenticator on PSP http://qiita.com/cielavenir/items/a13215069306eeaa24bf
qinstall https://github.com/cielavenir/qinstall
Ruby multisax https://github.com/cielavenir/ruby-chan
https://github.com/cielavenir/mruby-chan
Ruby chan (bidirectional iterator) https://github.com/cielavenir/multisax
gyao_url_another.rb https://gist.github.com/cielavenir/a858255c4009ecbb9b67
install_npapi.sh/install_ppapi.sh (OSX Flash) https://github.com/cielavenir/flashupdate

発見したバグ

  • mdbtools
    • ODBCドライバにおいて、(MicrosoftAccessと違い)DBQ引数が取れない
    • ODBCドライバでマルチバイト文字列が扱えない
  • ExGame (モバゲーのFlashランタイム)
    • Android Chrome/iOS6で文字が表示できない
  • RVM
    • 古いMac(本来i386だがboot.efiハックでx86_64化が可能なモデル)をMountain Lionにアップデートした時に、カーネルがx86_64に切り替わるが、libyaml.dylibがi386のまま正しく読み込まれず、x86_64用にリビルドもされない
  • Google Chrome
    • filesystem APIのクオータ要求時に警告バーが出るが、この要求を機能拡張のポップアップ画面内で行うと警告バーが出る代わりに(親ごと)クラッシュする
  • 嫁コレ
    • APIトークンにIMEIをハッシュではなく暗号化したものを用いているため、嫁コレサーバー側で生IMEIを取り出すことができる。一部通信はHTTPで行われているため盗聴も可能である
    • 3.4.xで修正された
  • 東京100ガイド
    • WiMAX環境で使用できない
    • 修正済み

イラスト

  • deviantART (私のtwitterアイコン原画等。限定公開)

事情により必要になるかもなので貼り付けとく

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Processor    : ARMv7 Processor rev 1 (v7l)
processor : 0
BogoMIPS  : 38.40

processor : 1
BogoMIPS  : 38.40

processor : 2
BogoMIPS  : 38.40

processor : 3
BogoMIPS  : 38.40

Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer   : 0x51
CPU architecture: 7
CPU variant   : 0x2
CPU part  : 0x06f
CPU revision  : 1

Hardware  : Qualcomm MSM8974PRO-AB

SHV38もついでに

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
processor    : 0
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 1
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 2
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 3
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 4
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 5
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 6
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

processor : 7
model name    : ARMv7 Processor rev 4 (v7l)
BogoMIPS  : 38.40
Features  : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm 
CPU implementer   : 0x41
CPU architecture: 7
CPU variant   : 0x0
CPU part  : 0xd03
CPU revision  : 4

Hardware  : Qualcomm Technologies, Inc MSM8952

https://yukicoder.me/problems/no/721

解法

余談

余談2

テスター当時はRuby版しか答案作ってませんでしたが解説のためにC版を急遽作りました。。

参加記というより反省会(あとで突っ込まれないように。。)

  • ポケモンGo、フリーザーを25体撃破しLv37にした。あづい。

コンテスト

時間 言語 問題(A-H) コメント
0:01 Ruby A AC 時間がかかったのはペナルティに気をつけるためです。
0:03 Ruby B AC
0:18 Ruby D 愚直な循環検出を書いたが、実行間に合わず。
0:29 C++ D C++に移植したがTLE 焦る。
0:46 Ruby C 下と右のマス数を掛け算。TLE (解説の方針と同じなんです)
1:12 Ruby/C++ D 申し訳ありません。C++の実行結果をzlib圧縮して埋め込みました。AC
1:17 Crystal C TLE
1:35 C++ C AC ところでvector transposeをライブラリとして持っていたから助かりましたが、持っていなかったらどうなっていたんでしょう。ぞっとします。
1:59 Ruby E コストテーブルを作って最短路という方針は思いつきましたが間に合いませんでした。heapqは以前私がAOJにてheapq.pyを移植したのをコピペしました。
(あとで確認したらRubyでは間に合わない感じでしたのでどうせ無駄でしたね…)
2:00 264位でした。さすがに雑魚すぎました…

ライブ

拝見しました。山内さんちょくだいさんお疲れ様でした。

E問題その後

言語 コメント
Ruby 遷移式が少し間違っていて、1 2 2 LU SGが1ではなく3になっていたorz
まあサンプルはそこまで強くなくても文句言えないけど…
Ruby 同じ行にSとGがあるときGを検出できていなかったorz
Crystal TLE
Python TLE
C++ AC

なんでCrystalだといかんのだ。。

まとめ

  • 実装遅いのを()
  • Crystalを–releaseでコンパイルしてほしい

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1155

構文解析とは何だったのか(2回目)

解法

  • Ternaryクラスを用意してevalに投げ込みます。

解答例

感想

  • 知識の証明の時点ではPythonが公式に使えるようになっていたので、下手な構文解析を出すと言語機能で突破されかねませんよって話。この問題は当時Pythonが使えなかったから許されたんだと思う。

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2883

構文解析とは何だったのか。

解法

  • 例として[+c[+a[^bd]]]O[c][O[a][X[b][d]]]に変換します。
  • O、A、Xはそれぞれ2引数を取りor、and、xorするProcで、カリー化されています。
  • 変換された文字列は正しいプログラムなので、evalでバッチリです^^

Python

  • Pythonはfunctools.partialはありますが演算子の形でカリー化することができないので、自前で関数をネストしてカリー化を行います。
  • なおPythonはRubyのProcで必要な特別扱いが必要ないので、括弧は丸括弧を使います。
  • (ところで答案内のtranslateのインポート方法に癖がありますが、Py2/3対応にするにはやむを得ないものです。)

解答例

https://yukicoder.me/problems/no/698

解法

  • bitDPを使うのが一般的な解法ですが、計算量が増えるものの、next_partial_permutationを使うこともできます。
  • 標準関数ではありませんが、next_permutation(v.begin(), v.end())する直前にreverse(v.begin()+middle, v.end())するだけなので、(next_combinationと違って)インラインで組み込むのは簡単です。
  • v.begin()からv.begin()+middleまでを(middle P sizeの)部分順列として使います。
  • ただし、ループが回るたびに、v.begin()+middleからv.end()まではソートされていることが保証されています。この性質を利用することで、vからsize-middle個選んでから残りのmiddle個を総当たりしたのと同じことになるのです。
  • ループ回数は14P7 = 17297280回です。

解答例

チームを作ろう2

https://abc096.contest.atcoder.jp/tasks/abc096_d

出力

  • AGC001以降のAtCoderでは、区切りは空白区切り改行区切りのどちらでも構いません(trailing spaceも可)。
  • よってputs arr*' 'puts arr、ひいてはp *arrでokです。以下では後者を使います。

解法

  • 5で割ってあまりが1になる整数の集合から5個選んだ合計は5で割り切れます。
  • 素数を列挙していき、1の位が1であるものをN個拾えば良いです。
    • 実際には1の位は(統一していれば)1,3,7,9のいずれも大丈夫です。以下の答案では9を採用しています。
    • 64bytes
1
require'prime';p *Prime.each(1499).select{|e|e%5>3}[0,gets.to_i]
  • 1の位がX(奇数、以下の答案では3)である整数を全て列挙し、素数をN個拾うようにすると以下のようになります。
  • 62bytes
1
require'prime';p *3.step(1499,5).select(&:prime?)[0,gets.to_i]

フェルマーテスト

  • require'prime'をカットすることで字数の節約にはなりますが、Integer#prime?は使えなくなるので、別の素数判定が必要になります。そこで、フェルマーテストを用います。
  • [1]に載っている式、2**i%i==2を使います。なおこの素数判定の場合stepの初期値を1にすることはできなくなるので注意してください(3,7,9は可)。
  • 51bytes
1
p *3.step(1499,5).select{|i|2**i%i==2}[0,gets.to_i]

redo

  • [2]では、ループカウンタをインクリメントしないよう、条件を満たさない場合はredoを使っています。これはPerlだけでなくRubyでも有用なテクニックです。
  • https://abc096.contest.atcoder.jp/submissions/2470406 (最終答案)
  • 46bytes
1
i=3;gets.to_i.times{i+=5;2**i%i==2?(p i):redo}

discussion

  • フェルマーテストやredoの実践例を挙げることができました。どちらもゴルフには有用であると思われます。

reference

  1. cojnaさん https://abc096.contest.atcoder.jp/submissions/2465874
  2. %20さん https://abc096.contest.atcoder.jp/submissions/2467541

https://bcu30-2018.contest.atcoder.jp/tasks/bcu30_2018_a

概要

(現状問題公開されてないですからね…)

1個ずつ数字が書かれた球がA個ある。これを1個ずつ数字が書かれたB個の球にしたい。ただし変換は以下の2種類。

  • 数xと数yが書かれた2個の球を数x * yが書かれた1個の球にする
  • 数xが書かれた1個の球を、(x%y==0となるような適当なyを選んで)数yと数x / yが書かれた2個の球にする

この条件で最終状態を達成できるか?AおよびBは9以下、書かれている数はそれぞれ100以下。

解法

  • 探索…は必要ないです。乗算と余りのない除算のみで構成されるということは、素因数です。素因数の組が等しい…つまり、状態Aの数の積と状態Bの数の積が等しければYesです。
  • 多分、制約は、積がint64に収まるようにってことなんだと思う。

感想

  • 気づきづらい。
  • 本当は「積が等しいかどうか判定せよ」という問題だったけど、がち勢が多かったので難しくしたらしい。
  • おかげで体感300点ぐらいでした…つらいよぅorz