s.visited
という行を s2.visited
に書き換えて8行か9行下に持って行くと、30秒もかからずに終了しましたよ(そして9305手の履歴を表示した)。そもそも Ruby 2.7 では元のままでも5分かからずに(書いてある通りに) SystemStackError が出たのであるが。■■■@2023-10-02 バグみっけ。箱入り娘.rb の 30 行目。Array#uniq にブロックを渡して処理を行っているが、このブロックは uniq メソッドの一部として働くのであって、uniq した結果が渡されてくるわけではないんだよね。Array#split にブロックを渡す用法があるのを知って以来、隙あらば each を省こうと狙っているのだけど、Array#zip と Array#product は良くても uniq メソッドは間違い。処理が重複して無駄になっていた。最終更新: 2021-03-02T17:55+0900
最終更新: 2021-01-16T18:37+0900
Coprime はまた解けなかった。WA ではなくなったけど TLE が解消しない。
最終更新: 2021-05-04T21:04+0900
AtCoder Problems がお勧めする Moderate な問題(緑difficulty)を上から順に解いた。半年前に解けなかった問題も1年前に解けなかった問題も解けた。だから0完だったこの前の ARC 111 は忘れよう。
過去問はテストケースが利用できる。DropBox からダウンロードするとコンテストの各問題ごとに in フォルダと out フォルダが解凍される。
ARC111_A フォルダの中がこうなっているとする。
そこで次のように実行する。(ARC111_A>
はプロンプト)
ARC111_A> attc my_answer.rb
attc.bat の中身がこう。
@echo off for %%F in ("in\*") do ( call :run "%~1" "%%~F" ) exit /b 0 :run echo %~1 ^< in\%~nx2 call ruby27 "%~1" < "in\%~nx2" > "out\%~n1.out.txt" fc /A "out\%~n1.out.txt" "out\%~nx2" del "out\%~n1.out.txt" echo. exit /b 0
カレントディレクトリの in フォルダの中身を入力として引数のスクリプトを ruby27 コマンドで実行する。出力を out フォルダの同名のファイルと fc コマンドで比較する。
call ruby27
という風に call が付いてるのは ruby27 が exe の名前ではなくて、C:\Program Files\Ruby27\bin に PATH を通してから ruby.exe を呼び出すバッチファイルの名前だという固有の事情から。
別に call でなくて当たり障りのないコマンドならたぶん何でもいいんだけど、call|ruby27
という風にパイプを通すと新しいコマンドインタープリタが起動するので、呼び出したバッチが setlocal してなかったとしても現在の環境(PATH 変数とかカレントディレクトリとか)が汚染されなくなるというハックがある。cmd /C "ruby27 ..."
と同じことなんだろうけど、そっちは引数が引数になって二重の引用符が面倒の種だよね。
tc は Test Case の略だけど、 AtCoder の略が at か ac かで定まらないから、attc と actc の両方の名前でバッチを用意してる。ハードリンクにしたら中身の同期に手間もかからないし。
アナクロだけどそれなりに便利。
ご飯を作ってあげたときに「美味しいよ」とか「ありがとう」の前に「鶏肉をもも肉からむね肉にしたんだね、さっぱりとした味になっているね」とか言われたらそりゃモヤモヤするよ」 相手に感謝を伝える、それは喜ばせようという働きかけであり、愛情があればその意思を持つのが当たり前である、ということを学習すればいいように思う。意図をもって働きかける意思が持てればいいと思う(操作か支配かと忌避感があるけどね)。変化を恐れず、相互作用を起こし、相手の反応を楽しむべく努力しよう。相手の喜びこそ自分の喜びとしよう。■私はそれができない。■「
ふたりで、ひとつに、なれちゃうことを、きもちいいとおもううちに、すこしの、ずれも、ゆるせない、せこいにんげんになってたよ」 善し悪しだけど良さをまだ知らぬ。
最終更新: 2021-01-03T19:49+0900
PAST 第4回の M 問題 筆塗りを思い出したよね>20201111p01.01。
制約が 10^5 の組み合わせだというところが同じ。だから何について繰り返すかというところが核心。繰り返しの繰り返しは許されない。N-1 本の辺を順序よく1往復か2往復すれば答えが出そうな気がするんだけど、全然ループの軸が見えなかった。まだ見えていない。テキトーにキューに突っ込んで処理できる順に処理しても間に合うかと考えてみたけど、メモするデータが定まらなくて完成しない。こういうところだよ。こういうところが緑色で燻っている理由だよ。
最終更新: 2020-12-26T00:15+0900
6年目に入った WR250R。ヘルメットホルダーがカチッと閉じなくなってただのフックと同じになった。
世の中には鍵付きのメットホルダーすら信用しない人がいるらしいが、自分はそこまでではない。だけど本屋なんかに行ったときにヘルメットを無造作にミラーに引っ掛けて、ということもできないので、その他の機会と合わせて月に数回から10回くらいの頻度で使用していると思う。酷使しているつもりはないが壊れた。壊れたメットホルダーを検索すると割と上位にこういうものが見つかった>「WR-Rのヘルメットホルダーが壊れた・・・ – Levico's BLOG」 お仲間。
メインキーと共用だというところに価値の半分があるので、新品交換で価値が半減しないかが心配。
T30 のトルクス1本で車体から外れる。バックプレートはプラスネジ2本。2本は同じだと思ったが組み直すときに一方が途中までしか入らなかったので入れ替えてみたらすんなり締まった。罠なのか?
バックプレートを外した状態。フックがあるのと反対側、車体側から見ている。表から見た形はこれとほぼ同じ>「【楽天市場】【在庫あり】DAYTONA デイトナ ヘルメットホルダー CT125:ウェビック 楽天市場店」
鍵をひねった状態。中央の銀色のパーツが逆時計回りに30度くらい回転した。色の関係で見にくいが回転軸に巻き付いて伸びた茶色の板バネがケースの上面をこすりながら力を蓄えている。
板バネにこすられて傷ついたケース上面。バネが傷に引っ掛かって位置が固定されるために蓄えた力が解放されない。結果としてフックを差し込んでもラッチが掛からない。残念なことに鍵をひねって強制的に閉じることはできない。スロットルワイヤーが開く・閉じるの2本1組であることの大事さがわかりますね。
最終更新: 2020-12-23T00:48+0900
まだ AC をもらっていないし、それどころかひとつの提出もできていないけど、外堀が埋まってきた気がするので経過を書く。
gets puts$<.map{|ln| n,s,k = ln.split.map(&:to_i) ss = {0=>m=0} until ss[s] ss[s] = s m -= (s-n)/k s += (s-n)/k*-k s %= n end next s == 0 ? m : -1 }
これはサンプルの4つのケースのうち、3番目を除いて正しい答えを出す。3番目の 998244353 897581057 595591169
にもたぶん正しい答えを返すだろうけど、答えがおよそ 250 メガなので数分単位の時間がかかるはず。
N と S と K の3つの数字があるけど、N と K が近接していてしかもべらぼうに値が大きい。ループ1回のイテレーションで全周 N のうち1点だけをテストするのでは最悪 N 回繰り返す。N の上限は1ギガだ。
1回のイテレーションで S-1 の地点に移動する。S 回のイテレーションで玉座に移動することが即座に理解できるが、スクリプトにそれは反映されていない。
K が2より大きければ(N との関係にもよるが)すべての偶数地点を網羅できるとは限らないが、K が最小の偶数2であっても、スタート地点 S から奇数席離れた玉座に移動できないことはすぐにわかる。これもスクリプトに反映されていない。
N と K と S の関係をどういう式で表すのかなあ。LCM だか GCD だかのキーワードは目に入ってるんだけど。
K = N%K という風に再帰的に K を更新していくと最後は 0 に落ち着く。K が 0 になるまでに S をどうにかしたものが K で割り切れれば答えは N/K の倍数±α になりそうなんだけど、S をどうするのか、N-S をどうにかするのか、よくわからない。