ToDo:
やっとこさテスト書きつつ進められる環境を整えた。 当たり前だけどテスト書くと格段にバグ取りやすくなった…もっと早くやるべきだったのだろうか。 まあこれで空いた時間にチマチマ進められるんじゃないかな
(01:36)
https://twitter.com/kadongo38/status/671007951612702720
を見て、前者は知らんが後者そうなのかと思った。当たり外れはともかく、とりあえず騒ぐ人が少しいるのは、全くいないより少しマシだと思ってるからかな。
でケンカしてたのはこれか。
言われてみれば見た記憶もあるけど、どっちかというと
の方が一枚上手感が
(20:27)
http://simanman.hatenablog.com/entry/2015/11/19/203517
via http://d.hatena.ne.jp/Ozy/20151123#p1
完敗だなー。でもこれはRubyゴルフ裏定石(命名適当)で縮む(132B)
n,h,w,*f=*$< puts eval"z=w=#{w} f=f.map{|l| l.gsub(/./){ (?*+$&+?.*z+=1)[(0..8).count{|e|(f*2)[~-z/w-e/3][(z-e%3)%w]<?.}-3] } };"*n.to_i
指摘されてる通り、 @rotary-o さんのやつの方を使うと(131B)
n,h,w,*s=*$< s*='' $>.<<eval"i=w=#{w} s.gsub!(/./){ (?*+$&+?.*i+=1)[(0..8).count{|j|(s*2)[(i-j%3)%w-(~-i/w-j/3)*~w]<?.}-3] };"*n.to_i
こういう技知ってても10B近くの大差つけられて負けるわけで、やっぱゴルフはアルゴリズムなんですよね…
(01:16)
https://github.com/google/kati/issues/38
homebrew パッケージが HEAD を参照してるのは気持ち悪いから、リリースタグ打ってくれない?て話。言ってることわかる。
でも kati て Android 以外の何かに役に立つとは思えなくて、 Android は既に kati リポジトリをトラックしてるんでユーザがインストールする必要ないんだよな。
というわけで homebrew から消してよ、て言うと破壊的な変更はしないポリシーがあるとのこと。言ってることわかる。
今タグ打ってやるのは簡単だけど、その後誰も使わないもののためにタグをメンテする意思などゼロだろうし、万が一誰から homebrew でインストールすると、単にすげー古いバージョンを使わされることになる。つーわけで HEAD 使っといて…ということにした。
元々パッケージを突っ込んだ人が実際には使ってないのはほぼ間違いないと思ってて、 github/google だし誰かの役に立つだろー的に適当に入れたんでないかなと思う。それ自体は良いことかと言われると疑問もあるけど、まぁ悪いことでもないように思う。
なんか特に悪いことをしてない悪気のない人達によって、使い道の無いものをメンテする必要ができたり、僕の方でもそれの対処を考えたり、無駄な時間使う必要ができて…みたいなせつない話
ああというか homebrew パッケージについてドキュメントに書く、って PR 送ってきたのもこの人か。
https://github.com/google/kati/pull/12
この時に homebrew から消して欲しい、てお願いするのが良かったのかな
(01:11)
https://twitter.com/shinh/status/663715003690692608
とか
https://twitter.com/shinh/status/663723143849054208
の話をしてて、詳細な解説があると教えてもらった
http://8-p.info/perl-interpolation/
(12:25)
Ruby ででかいデータ流し込んででかい結果を喰うのは相変わらず open3 が正解なのかな。
require 'open3' out = Open3.capture3('cat', :stdin_data=>'x' * 999999) p out[0].size
spawn がよろしくやってくれるという話があった気がするけどあまりそういうものでもない気がした。
実装読め系
Python だとインタラクティブなケース、つまり stdin に print でががっと流し込んで(この間に OS の pipe のサイズはあふれる)、でもブロックせずに結果を少し読んで、そんでまた流して…みたいなことができた気がしたけど、どうも気のせいぽいな。
スクリプト言語側で仮想的に pipe が無限サイズあるみたいな感じにすることはできると思うんだけど、まあ既にいろいろありそうだな
(20:25)
twitter の丸コピ宣伝しておきます
https://twitter.com/shinh/status/664096903877951488
意図としては当日まで本番環境で挑戦できないらしいけど、特に今回みたいに4問もあると、ゴルフて期間ある程度ないと煮詰まらなくて面白くないよね…ということでミラーという感じです。問題がICPCぽすぎてゴルフとしてはどうかな感があるけど、実際どうなるかな。。
問題については、個人的にはOzyさんに問題作らせろそれで間違いはない感ある。どうしてもルールセット的にスクリプト言語強すぎ感あるけど、Cの最短も表彰できればな…みたいな話ではあるみたいです。
ゴルフ場でのテストケースについては僕に全責任があって、ある程度は頑張ったつもりだけどゴルフ場で通って本番TLE出たらすまぬ。。自慢じゃないけどゴルフ場に出題したことってほとんどないんですよね実は。言われて足した特殊問題以外はたぶん2,3問しか出してない。
以下 twitter に書いてない感じのこと
ゴルフなー。最近全くと言っていいほどやってないので、今回前もって問題解いてみたけど、正直さっぱりいけてない。まず自分の能力がいけてない。まあ書いた通り問題も ICPC チックすぎてゴルフ的な面白みがあまり無いかなー感は解いてみてあった。一応言い訳しておくと一応意見はした。
がまあ僕最近ゴルフしてなくて時間も十分に取れてないので、自分が思いつかないだけでかっこいい解き方あるかもしれないんだよな。
テストケースも特に D はほとんどランダム生成しかできてなくてあやしいので、これ足せばもっときつくなる的なのあれば足します。実際既に1件バグ指摘もらって直した
個人的にはせっかくゴルフのなんかやるなら、ちょっとやってみるかと参加した人に、ゴルフの面白さとかキツさが軽く伝わる感じだと嬉しくて、 Ruby Kaigi のやつとかはまあまあうまくいったと思ってるんだけど (特にこの簡単問題 http://golf.shinh.org/p.rb?putter+golf+for+Ruby+kaigi とその次の問題)、今回は正直どうなるのかなー感。
とりあえず A はやるだけ問題で、 C も値域すごい狭いからチャレンジしやすいはず… B は僕が問題わかってない感あって、 D はテストケースあやしいしゴルフとしてどうなのかはわからないけど、問題自体は良いものな気がする。
(00:47)
個々のモジュールのやつは全部 Android.mk という一つのノードにまとめてもこの程度ややこしい。成果物とかじゃなくて、 Makefile だけで
http://shinh.skr.jp/tmp/android_mk.svg
関係ないけど Ruby の全成果物の依存グラフとか作ってみる
http://shinh.skr.jp/tmp/ruby.svg
あー ninja から作ると #include の依存関係が出ないな
(20:03)
いつも原文の場所わからんくなるのでメモ
汝に最も近い義務を果たせ、汝の義務と思うものを果たせ、しかるときに汝に一層重大である義務が明白となるであろう
Do the duty which lies nearest to you, the second duty will then become clearer.
(20:25)
前 | 2025年 7月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。