twitter.comキューブをある手順によって回した時、キューブの取りうるすべての状態を一度ずつ巡って元に戻るような手順は存在するのだろうか
— Pocke(ぽっけ) (@p_ck_) February 13, 2020
昨晩からこれが気になっている。 状態Sを状態Tに変化させるような手順fと、状態Sを状態Uに変化させるような手順gがある時に、状態Sに手順hを実行し続けて状態Sに戻るまでにTとUの両方を経由するような手順hがあることを示せば芋づる式に証明できそうな気がする。
群論の味わい -置換群で解き明かすルービックキューブと15パズル-
- 作者:David Joyner
- 出版社/メーカー: 共立出版
- 発売日: 2010/12/10
- メディア: 単行本
と言っていたら面白そうな本をruby-jpで教えてもらった。物理本しかないけど、ポチろうかなあ…
git diff
でpagerを表示したくないなと調べていたら、どうやらgit
コマンドに--no-pager
オプションを渡すと良いらしい。
git diff --help
しても出てこなかったのでググったら見つかった。なるほどなあ
rubocop-rake の v0.5.1 をリリースした。修正内容は↑のPRのbug fixのみ。
PRはだいぶ前に作ってたんだけど、1晩ぐらい放置して何も言われなかったらmergeしようと思っていて、mergeするのをすっかり忘れていた。
https://github.com/ruby/ruby/blob/2efb38e766b6fc304bb933d696c7500425d178a1/compile.c#L2832-L2861
Rubyのrangeの最適化を眺めていて、両端がIntegerじゃなくても、両端がStringであれば最適化されるのに気がついた。
ただ、どうやらwhen
節の条件文などに置いてある状況じゃないと最適化されないっぽい。なんでだろう?
# 最適化されない x = 'a'..'z' case x # 最適化される when 'a'..'z' end
あと、frozen string literalのときはputstring
がputobject
になると知った。
$ ruby --dump=insns -e '"a"' == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,3)> (catch: FALSE) 0000 putstring "a" ( 1)[Li] 0002 leave $ ruby --dump=insns --enable-frozen-string-literal -e '"a"' == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,3)> (catch: FALSE) 0000 putobject "a" ( 1)[Li] 0002 leave
そういえば放置していたのでコメントをした