雑記
_misakiの雑記
2024/7
2022/3,4
2022/2
2022/1
2021/12
- 点数計算が直ってる!quolcさんに大感謝.
- 単独best数集計更新されてる!pastaさんに大感謝.
- Problem 0222 27B→25B なるほど.前の経路は少し無駄があった.Bestの関数,言われないと見落としそう.
- Problem 0346 18B→17B 15B構文!オン会でみたときにProblem 1165と似ているしいけるのでは?と思ったのが当たっていた.
- 12B構文続編!!ここまでのHOJ講座で扱われていない内容がカバーされていて有難い.
- 狂12B構文のパスが綺麗.
- Problem 0942 25B→23B 逆に回ったら縮んだ.(追)22B!? 自分の書き方だとこれ以上は無理っぽいので方針が違いそう.
- Problem 1290 ←に載せたコードが(多重再帰は使わず)普通に26Bになります.
- Problem 1432 23B→20B まさかの認識で縮んだ.slsrパーツではありません.
- Problem 0942 23B→22B 23Bの一つが縮んだ.そっか1つずれてもいいのか…
- 多重再帰構文!! 最近頓に忙しくなってしまって永遠に書き終わらなさそうだったので,とりあえず書けた分を公開してしまいます.
- 今のところテキトーでわかりにくいので,時間のあるときに修正/加筆していきます…
- HOJ講座書くの難しい.先人達の偉大さを改めて実感.
- Ranking,今年中には抜かれそうな勢い…!
- Problem 0368 通してしまった.元の想定解に辿り着きたい.
- Problem 0344 18B 見せてもらったコードをほぼ覚えていた.大で小を挟んだもので小を挟む.わかってしまえばそこそこ解けそうな問題にも見えてくる不思議.渦っぽいのは見てとれるし.
- Ranking 早速抜かれてる! Ktyaさん強い…!
- ここ2ヶ月で200問以上更新/solveされていますね.余力がすごい…
- 自分はImagineCupの数人が解いている未solve問題が結構あるからそれに挑戦しないとな.
- Problem 0319 30B→29B 向きをFibonacciで調整する,というヒントで.なるほど,この発想は持っておくべきだった.
- Problem 1113 25B→24B 粘って更新!
- Problem 1113 24B→23B 別の方針であっさり再更新.いろいろな方針があって難しい.24Bは数値でした.23Bは渦渦.
- オン会の感想書こうと思って忘れていた.以下思い出し次第書き足していきます.
- 同じバイト数でも全然違う解だったりするのが面白い.
- Problem 0133 lsrsパーツ.wwvwwさんは棒を立てる方針だそうで,言われてみれば対称性の高いmapですね.
- Problem 0223 4倍系で直接.同じ25Bのwwvwwさんがまさかの数値関数で驚愕.正方形はZ字の9B再帰の要領でとっているとのこと.その発想はなかった…!
- Problem 0159 これが全く違う方針なのはLocalな考察で知ってた.自分は数値関数を使っています.
- Problem 0284 経路は普通になぞっています.aXbYcみたいな1倍1倍系を使っているのが差がついているポイントかも?
2021/11
- オン会楽しい.
- Problem 0219 46B→45B 最後左右に揺れるのじゃなく壁まで行ってからループ,という経路に直した.→43B 粘ってBest更新!! ちょっとテクニカルなことをした.
- Problem 0491 46B→45B 書き直してみると縮んだ.昔の解は無理やり初期位置の辻褄が合うような認識にしていたけど,今回は特殊な初項.
- Problem 0463 18B→17B 素直な経路に戻した.
- とあるテク関連をまとめておきたいのでHOJ講座書こうかな…とか思っています(需要あるの?とつっこんだら負け)
- Problem 1464 16Bですと…!
- Problem 1883 25B→24B 書いてみると割とすぐに24Bに.というか25Bがよくわからん.
- Problem 1884 26B→24B 同じ.26Bがよくわからん.
- Problem 0288 15B→14B 解いている方がいたので見直し.隙間が多いので数値構文solverにかけて発見.
- 2071のために作った,周期的な数値構文(12B構文の一般化)のsolverが初めて役に立った.
- 関数定義の中で2回再帰呼び出しする数値1変数関数を探索するsolverですが,後ろの部分が実行される乱歩的なコードと,後ろが実行されない止まらない周期的なコードとでsolverを分けています.
- 後者はstep数がかなり少なくて済むし,プログラムが再帰関数を使わずfor文で自然に書けるので,実行速度も速い気がする(再帰しまくると遅くなる?[要出典]).
- Problem 0219 54B→46B 下の取り方がようやく分かったけどBestに逃げられていた.
- Problem 0108 13B→12B 数値乱歩.探索漏れ.
- pastaさんの昔のブログを参考に色々ググって,指定した問題のmapを取得するプログラムを作った.
- Problem 1464 17B→16B solver.17Bは直接ととある再帰の2通り.
- Problem 1677 23B→22B とりあえず試しまくるっていうのはHOJの重要テク.
- Problem 2067 28B 新問!とりあえずよくわからないまま解いて28B.
- Problem 2068 19B 新問!とりあえずよくわからないまま書いて19B.隙間が怪しいけど…
- 13B!?
- Problem 2071 13B 新問!0091と関係があるらしいので数列solverを作った.2,5,4,5,,,を12B構文のクレイジーバージョンで作る.
- Problem 0091 24B→23B 数列solver.すごいNLEしそうな見た目.
- Problem 0121 13B→12B な,なるほど…solverの問題ではなかった.これも探索したと思ってたんだけどな…
- 14B以下制覇!って言おうとしたけど2068があった.
- Problem 1067 多重再帰でも11B.
- Problem 1457 19B 綺麗な経路を見つけた.かなり手間取ったけどBest化!
- Problem 2068 19B→13B やった! 2071の類題なんだろうなと思っていたけどsolverにはヒットせず.ちょっと違う形を思いついてsolverをいじって見つけた.
- Bytes数指定していたのが裏目に出てた
- こういう周期的なパターンになる数値コードは,(特に周期ごとの向きが差し引きr or lなら)綺麗な模様になるからいろいろ試して見てるだけでも楽しい.
- 2071はともかく,こっちは人力でもいけなくもなさそうな気がしなくもないかもしれない(コード中の数値リテラルが少ない分)
- (こういう系のコードで人間的な問題を以前1つ考えたけど,macだから出題できない…)
- Problem 0668 自分は3変数solverでした.
- Problem 0441 23B→22B 普通の見落とし.(追)規則認識はちょっと変えました.23BはMの認識.
- Problem 0431 26B→25B 数値を使ってみた.ちなみに26Bは2倍系の補助関数を使うやつと6倍系の補助関数を使うやつととあるテクを使うやつの3通り出していました.
- アルファベットシリーズ,割と好きなセットかも.Best更新できたのが結構あるし
- Problem 0248 40B→37B Best!何工夫か必要だった.if文は新しく作らなくてもいい
- 前は約数カウントをメインの関数でまとめてやろうとしていたけど,Ktyaさんが関数を分けているのを真似てみた.確かに数値引数が多いとまとめても得にならないんですね…
- 棒の行き帰りをllとlslで書き分ける,というヒントも試してみたけどこちらは生かせず
- Problem 0171 41B→38B こっちは2B届かず.masさんの書き振りをみると同じ方針っぽいけどなー
- Problem 0463 19B→18B 経路を見直したけど届かず.wwvwwさんの18Bの時の解と同じ気がする.
2021/9,10
- HOJ Supporter でブラウザでHOJできるようになってる!!!!
- 本当にありがとうございます!!!! pastaさんには足を向けて寝れません.
- Problem 1256 39B→25B 経路がわかるとあっさりBestに.
- Problem 2061 ssXXを使えばとりあえず18Bにできます.それを多重再帰で1B縮めるのが想定解.
- そういえばほぼROM専ですがTwitter垢作ってました@mayoirey.
- ループが
a:--
x:abax
x
という形のときに
x(X):aXbx(x())
x()
と多重再帰で書くのが有力な場合がある.
- 謎のDiff1Bシリーズ:Problem 1249,Problem 0461,Problem 0121,Problem 0804,Problem 1151,Problem 1463,Problem 1582,Problem 1805,Problem 1998,Problem 2002.
- 0121, solverの問題なのかな.
- Problem 0461 23B→22B あー確かに!!!!(追)実は簡単で,5倍関数からn倍関数に変えると一瞬で縮みます.
- Problem 0745 15B→14B 久々に見落とし発見.
- 計算が終わらないせいでBest更新した問題が黄緑色になるw
- Problem 1445 24B うまいことまとめてかけるような関数を作ると29Bになって,それが実は再帰に乗ってsolve.0461で得た知見を使った.
- Problem 1974 22B→20B なるほど〜.想定解とは違うBestになったけど面白い.
- Problem 0067 15B→14B 過去の提出コードを見ると,2016年にsolverを作った時に15B乱歩で解いて,2020年に直接書いて解いてるw.探索しなおしてみると23万steps以上の乱歩を発見.
- そういえば0977は1関数solverで解きました(唐突に思い出した).
- 昔1変数関数solverを作ろうとしたもののバグり倒してうまくいかず,唯一の戦果がこれ.
- Problem 1062 32B→31B もっと縮むとは思うけど…
- Problem 0840 25B→24B 25Bは普通のコードでした.24Bは多分コメントのmasさんの解と同じ気がする.縮める発想はあるけど計算が合わない…この発想がそもそも違うのかもしれないけど.(追)ダメそうな気がしてきた.ちなみに24Bはa(X,Y):Xa(sX,Y-1)llXllという関数の帰りの部分でごちゃごちゃやっています.
- Problem 0842 37B→36B 上の24Bの方針で書いてかろうじて1B縮んだw Best短すぎ.Ktyaさんの雑記のコードをヒントに考えてみる.
- Problem 0264 28B→27B 色々書き方がありそうな問題で2011年3月のBestが残っているのは怪しいという読みが当たった.
- Problem 1532 23B→22B そういえば2001はこの問題を意識していたような気もする.テクい縮み方で22B.
- Problem 1718 39B→38B 上の系.
- Problem 0421 25B→23B シンプル.
- 半角・全角スペースや平仮名や漢字も文字として扱われるようですね.
- 例えば
(半角スペース):s
(全角スペース):l
とおくと不可視の実行行で任意の経路が描けるw こういうネタプログラミング言語あった気がする
- Problem 0404 22B→21B あ!地味なテクだけどこれで単独になってるのが結構あるような
- オン会楽しい.
- Problem 2002 wwvwwさんのBestが天才だった.作問時は2001のおまけ的な問題のつもりだったのに,こうも仕様との戦いを強いられることになるとは…w
- Problem 1974 逆回りに書くと短いらしい.やば
- 1949やその類題での単独は「多重再帰×9B乱歩」というヒントをもらいました.
- Problem 1949 18B→17B ヒントももらったことだしあっさりBest化…と思いきやなかなか解けず苦戦.なんなら答え見せてもらったはずなのにすでに忘れている.結局ヒントの方針を多変数の多重再帰でBest化したのですが,Ktyaさんの解もこう(多変数)でしたっけ…?
- Problem 1428 20B→17B こっちはあっさり.
- Problem 1800 n項目のビットは,「nからn以下最大のFibonacci数を引く」という操作を繰り返したときに最後0になるか1になるかみたいな感じで判定していたと思います(あやふや).この方針だと素直に左折と両立できる.
- 1800のコードはHOJ上で実行した時とpastaさんのツールで実行した時にそれぞれ違うところでNLEで止まるのに提出フォームから投げると2時間くらいHOJが固まってから通る,という謎な挙動をしていた思い出.Best更新できそうだったのに仕様との戦いに敗れて68Bに.
- そういえば1782と1800のbit列を作る問題をTuringGameOnlineで出題したけどほぼ解かれないうちにTGOがプレイできなくなってしまった.TGOも復活してくれないかなー |ω・`)チラ
- pastaさんのツールだとアルファベット以外の文字も使えて,しかもbyte数に数えられないのが面白い(もちろんSystem testは通りませんが).たとえば
_:s_
_
みたいなコードがちゃんと動いて1byte扱いになる.
- 任意の問題が2byte以下で解ける…w
- Ktyaさんが
.(,):,l.(,s)
.()
みたいなきもいコードで渦を書いていて爆笑しました.
- 大文字と小文字の区別もされないようで,
A(a):alA(as)
A()
みたいな書き方もできるんですね.これもきもい
- (面白いのでできればこのままにしておいてほしい)
- Problem 0574 単独Bestはきっと四角乱歩絡みだろうと思いきや自分と同じく渦を作る方針らしい.
2021/2〜5
2021/1
- Problem 0224 28B→27B 数値をやめて小を大で挟むも1B届かず.数値絡みの変態解だと思い込んでいたけど、この方針でいいのか…?
- Problem 0740 27B→25B llを消すだけで通った.数値関数で十字を描く.
- 自分の35Bあたりの時の解を見るとXlXYXlXで直接書いてたりしておもしろい.
- ブラウザでAdobe Flash Playerが使えなくなってしまいましたね…
- HOJ mobileは使えるようなので、(Chromeで)HOJ mobileで解く→解答直接提出フォームから提出という流れが自分のデフォルトになりそう.
- 新規参入はもう厳しそうですね…
- あ、作問もできないのか!
- いやWindowsならHerbertEditorから新問提出できるのでしょうか?(よくわかっていない)
- TGOもプレイできなくなってる…><
- あれ、HOJ WikiのMenu Bar が消えてる…?
2020/8 〜11
- Problem 1795 26B→25B slsとsrsだけで書いた.点対称に見えて1箇所違うのは無視できる
- Problem 2063 8B 初期向きが違うと7B.
- 新問4問、解いてから 100時間経ったけどいまだに"Calculating..."のまま...
- 新問4問、解いてから1000時間経ったけどいまだに"Calculating..."のまま...
- Problem 0518 37B→36B 数値使わずだとこの辺が限界かな
- Problem 1027 42B→33B 考えていなかった形を思いついたけどBest届かず
- え、wwvwwさんはHOJ繋がらないんですか?
- 自分は問題なく繋がりますが、更新した問題の得点計算が永遠に終わりません…
- (ちなみにPCからで、どのブラウザでも繋がるようです)
- そういえば、Adobe Flash Playerが今年末にサポート終了したらHOJはプレイできなくなってしまうのでせうか…?(情弱なのでよく分かっていませんが)
- Problem 1567 42B→41B 数値補助関数に非数値変数を足して短縮.
- ちなみに、前からn本目と後ろからn本目の棒の長さの和が23になることを利用する方針でもBest近くになります.
- 小ネタ:0127、よく見ると13の十三の白石が抜けてる.
- Problem 0438 53B→46B 場合分け(IF文)を使ってみた.→数値補助関数と融合.
2020/6
- Problem 1099 17B→16B 初期向き合わせの無駄を解消.
- 単独集計ありがとうございます.結構増えてた…流石にもうこれ以上は無理.
- 思いつき次第コメントを書いていこうと思います.
- 難しくはないけど見落とされがちなテクで単独取ってるパターンが多そう.あと長文.
- 0138, 2054: コード中に11歩みたいな中途半端な長さが1回だけ出てくる場合、置換やn倍よりもx(X):sx(X-1)で書いた方が短い.2054はこの小ネタが想定解でした(とある別解がありましたが).
- 0419, 0459, 0828, 1052: 数値関数とn倍系の複合が強い.x(X,Y):Ysx(X-1,)Y とか x(X,Y):YYYYsx(X-1,?) とか x(X,Y):sx(X-1,)Yr みたいな(例はてきとうです).
- そういえば0303はmasさんのヒントをもとに頑張って変態互除法でBest化したけど、実はこれでも23Bになります.
- Problem 1271 28B→27B 縮みそうな気はしていたけど、なるほど…
- 0999, 1290:1/4周を描く関数で育たない再帰.
- 1314: とあるテクをいろいろ試していたときに見つけたコードで更新したのですが、実は普通の2変数13Bを無意味にとあるテクで書いていただけだったことに今気付きました.
- Problem 1305 16B→15B 1314のタイトル…ww
- 0017: 初項を小さくしたいので初期位置を移動します.
- Problem 1581 19B→18B 多重再帰.snukeさんの更新時期は多重再帰以前(?)なのでたぶん別解. ←はい、何のテクも使ってません。ヒント: f(X):?X?X?a(Xlsrs),f(?)
2020/5
- snukeさんの新しいパズルやってみたけど難しい.
- Problem 0917 30B→29B 一から書き直したら以前と同じ関数になった.向きで1B損してたらしい.
- 0414と2032は同じコードで解いたけど0414だけ単独…?
- なるほどそもそも2032の19Bが違ったのですね…!
- Bestが同じBytes数で並んでいても実は全然違う解というパターン,結構あるのかも.
- Problem 1391 31B→27B ヒントの「割と綺麗な経路」を見つけてもそれを「綺麗なコード」で書くのに結構手こずった.
- 1300番台緑一色!!!!
- Problem 2060 17B 昔作ったらしい問題をなんとなく出してみた.想定はあれを使った17Bですが,あまり考えていないので想定外の解もありそう.(追)16Bに縮められてる!!
- Problem 2060 17B→15B 直接書いて15Bになってしまった…w ちなみに元の想定17Bは多重再帰でした.この案はまた別の問題で使おう.
- Problem 1023 21B→20B Bestは方針が違いそう.
- Problem 0187 19B→18B 2020的に書けないかと思ったけど19Bにしかならず,直接書くと縮んだ.
- Problem 1357 22B→21B 結構考えてようやく1B短縮.むずい
2020/4
2020/2〜3
- Problem 2055 17B 経路のヒント→XXXr.
- Problem 2056 を投稿したのに想定解が通らなくて困惑.100万steps以下のはずなのに…
- 計算し直してみたら14京steps以上必要だった.がっでむ.
- 消しちゃったけど面白いから残しておけばよかったかも.
- Problem 2058 11B Targetの数を1/4に減らして再投稿.ssXss.2055の発想
- Problem 0013 21B→20B 21Bコードを弄って再帰に.
- これでProblem Set 0 シリーズは残すところ0011のみ.なんとか今年中には…
- Problem 0011 22B→20B できてしまった.wwvwwさんの「全然別の経路」というのをヒントに色々考えていたら良さげな経路を思いついて,21Bをしばらくいじると20Bに.
- この方針以前も考えたけどその時は壁でずれるのに対処できず挫折した思ひ出.
- これで0000~0099は残すところ0075と0091のみ.なんとか今年中には…
- Problem 1541 25B→24B Nine lemmaなるものを最近知ってなんとなく見返してたら縮みそうな気がしたので粘る.大きめの関数を作って,実行行をa(a())に.
2019/10〜12
2019/6〜9
自作問での単独Best/Solveが多くてアレなのでヒントを置いておきます.
- Problem 2031 謎問.a(X,Y):XXYXYYa(?,?) a(?,?)
- Problem 2033 2行で書くと [23B] a(X,Y,Z):a(sXs,XXrXX,Z-1)YYrYY a(r,,6) となって,あのテクが使えます.
- Problem 2048 0858ができればsolveは簡単( 右側の成長をさらに1段階遅らせるだけ).想定Bestは2001のあれを a(X):rrssrsrXrsslXlsrss という関数でやります.
- Problem 1981 [17B] a(X,Y):XXlYssssla(sY,X) a(,) を短縮.普通にやると16Bになるところなので,わざわざ17Bのコードを作って2B縮めるというのはやや盲点かも.
- Problem 2047 規則に従って a(X,Y):?a(YX,X) で書いた17Bが普通に短縮できます.
- Problem 2029 sssslssssrssllsslss.
16B以下非Best:
2019/1〜3
2018/12
- Problem 1733 42B→40B 多重再帰で少し縮む.1つのコードの中で相互再帰と多重再帰の両方を使うという,なかなか好きなコード.→39B 素直に(?)2行で書いて39Bに.
- Problem 1733 39B→38B 成長速度をどう調整するか.結局7変数にして,最近になってよく使う短縮のパターン(6回目)でBest化.
- Problem 1731 18B→16B 数値だろうと思っていろいろ試して発見.
- Problem 1718 48B→39B 「数値を1つにする」「互いに素」などをヒントに落ち着いて考えたらできた.なるほど〜〜〜〜 これ数値1つで書けるとは...!!
- Problem 0736 32B→31B r/lをいかに少なく書くか.ヒントの「逆走」の意味が解けてから分かった.
- 1600Bests!!!!
- Problem 0270 32B→29B カウントの仕方を変えると32B解の無駄が解決.→28B rsrrsrがいかにも冗長なので弄る.あと1B.縮むポイントっぽい箇所はあるけどうまくいかない.
- Problem 0270 28B→27B コードばかり見ていてなかなか気づかなかった.逆に回ればいいのか...
- Problem 1340 30B→29B masさんのコードにやや似てる.白文字でこっそりコメント足すの楽しい.
- Problem 1714 18B→17B solverでわけの分からない解がでてきた.18Bは人間解.
- Problem 2037 22B→19B 探せばあるものですね.基本パーツがT字でなくS字.小さなS字を描く8B再帰の要領で作ります.2029っぽい.
- Problem 0738 24B→23B 24Bは2通り(2変数と数値)考えてたけどどっちも違って,最近になってよく使う(7回目)再帰の書き方だった.
- Problem 0840 26B→25B 普通に25Bにはなった.Best短すぎー.
- Problem 2048 24B Older pyramid. 普通にやると25Bですが,2001の発想で24Bになります.
- Problem 1225 36B→35B 1倍系(aXaYbみたいな)だと36B止まりだった.関数を工夫してBest.
- Problem 0802 23B→22B そんなに難しくなさそうなのに苦戦.
2018/11
- Problem 1913 19B 壁を使う,というヒントで.確かに難しくはないけどなぜか全く思いつかなかった.1674みたいに多重再帰で19Bに.
- 新問!!!! とりあえず解いたけどあまりBestな自信がない.
- Problem 2044 14B ?tsebでれこくらそお
- Problem 2035 19B 直接.何かシンプルな解がありそう.→15B 某構文を試したら見つけた
- Problem 2040 13B 分からなかったので結局2変数solverに頼った.出てきた答えを見てもよく分からない... (追)と思いきや改めて見てみると人力でも解けそう.白マス以外は踏まず,1変数17B → 2変数13B.ちなみに1138とほぼ同じコードです.
- Problem 2031 16B 作ったもののあまりいい問題じゃなかったなぁと少し後悔.想定はXXYXYYみたいな関数です.
- Problem 2033 21B 0392の
パクリもといリミックス問題.0392の数値を使う方の23B解をいじります.3行だと多分Limitに収まらなさそう.1806,1988の発想.
- Problem 2042 24B→20B た,確かに...! →18B 方針は同じまま,行数を減らして変形してあれが使える形に.面白い問題.
- Problem 2046 19B→18B 変なことしてたけどとても素直な18Bがあった...
- Problem 2043 21B→20B 20Bは普通 →19B 類題なのではと踏んで2042のコードをいじっていると案の定似たコードで書けた.
- Problem 2047 16B Fibonacci word 直進ver.作ってから気づいたのですが直接書いてsolveも可能ですね.そして言われて気づいたのですが某構文でも可能ですね.規則を使った17Bを縮めて16B,が想定Bestです.
- Problem 2044 14B→13B .たっだB31てい書接直
- Problem 0414 20B→19B これも2032も最初20Bで書いていたけど全く違うコードだった(これが2変数で2032が1変数).
- Problem 0440 32B→28B 1段階目で右の棒,2段階目で下,3段階目で左をなぞる再帰.
- Problem 0430 20B→19B 多重再帰.いや数値なので理論?
- Problem 1548 25B→24B 壁を使った再帰.
- Problem 1579 21B→20B ようやくできた.なぜかだいぶ苦労した問題.
- Problem 0427 28B→27B 両方の変数の初項をllにする(+1B),それを特殊な初項で表す(-1B),多変数の多重再帰が使える(-1B),でマイナス1B.
- Problem 0416 26B→24B 26Bはなにやら壁を使ったよくわからない再帰で書いてたけど, 0418の方針(5倍系,最初に一辺10の正方形を書く)で直接書いたら更新! (追)と思ったら速攻抜かれた(22B!).短すぎ...
- Problem 0416 24B→22B うわーなるほど!関数をより変態的に変形すると向き合わせの不満が解消できて確かに縮む.凄すぎる.
- Problem 0551 23B→18B 方針は分かっていたのにだいぶ苦戦した.
- Problem 0500 20B→19B このパターンのBest化ここ最近で5つめ.
- Problem 0505 22B→21B ごちゃごちゃ変数変換しているうちによくわからないけどできてしまうパターン.
2018/10
2018/09
2018/08
- Problem 0422 29B→28B むずい.Bestがこの世のものとは思えぬ短さ.
- Problem 0720 39B→33B ついに美しい経路とパーツを見つけた.
- Problem 0947 25B→24B 見落とし発見.
- Problem 0017 26B→25B めちゃくちゃ時間かかったけどやっとBest化.単純ながら今まで考えてなかった経路.wwvwwさんのコメントを見るに違う解かも? →24B 近い方針で縮んだ.実行行であれする1変数再帰です.
- Problem 0825 30B→25B 見た目綺麗だけどコード的に綺麗じゃない経路を見つけてしばらく粘った.4変数関数とかで書いてたけど試行錯誤するうちに2変数で書けてBest.初期位置がめんどくさいかと思いきや壁で位置が合わせられた.
- Problem 1567 44B→42B 棒の長さの並び方のある規則に気づけば直接書いて44Bにはなります.ふとmasさんのヒントを見てあっさり実装できたはいいものの,Ktyaさんと同じくa=7で47Bになったり,a=3で半分しか埋まらないのを「命令としての働きのない変数を使う多重再帰」でどうにかして47BになったりしてBestに届かずしばし悩む.Bytes数から考えてできました.
- Problem 1494 18B ImagineCupっぽい問題だった.非対称っぽいところからたどる.
- Problem 0134 「ユークリッドの互除法」というヒントから0980みたいにして上の長さと下の長さを一つの数値で表す関数を作って書いているのですが届かない… 実は互除法の書き方が違うのかも
- そして何故かHOJに繋がらない…
- 復活.
- Problem 0492 25B→21B 成長部分を2変数関数を2重にして書く27Bを経て構造に気づいてBest化.なるほどこういうことか〜
- Problem 0303 互除法を使った,おそらくmasさんと同じ解でBest化してたけれど,よく見たら26Bが普通に縮んで23Bになった.え〜
- Problem 0285 48B→47B 逆に回ってみたら1Bだけ縮んだ.1532の非Best解の方針でBitをCountするとあっさり48B付近にはなったけど,これだとBestには届きそうにない.かと言って1532のBestみたいな書き方だと左折と両立できそうにない.むずい.
- Problem 0828 27B→25B 数値を使って3行で書いた27Bに,簡単だけどあまりみない小技が使えて更新.数値つよい.
- Problem 0401 23B→22B 変数変換.
- Problem 0293 61B→51B Ktyaさんのヒントを見て.こんな経路の方が10Bも短いとは.
- Problem 1393 22B→21B たしかに〜
2018/07
- Problem 1413 22B→19B 再帰の初期位置までの移動が多重再帰で綺麗に書けた.
- Problem 1459 20B 経路ゲー苦手.恐らくこの初期位置から90度回転した次の位置まで移動するから…と考えて,ある程度関数の形と経路が絞り込めた.
- Problem 0309 22B 最初の2回だけ向きが違う,という単純な規則に気づくのに3年弱を要した.
- Problem 1107 21B→20B 上下の同じ形を変数で置換してイテレーション毎に2回やるのではなく,成長速度を調整して2回にかけてやるほうが短くなりやすい.
- (追)ぴったりな言葉が見つからなくて苦し紛れにイテレーション毎などと書いたけど普通に「再帰のひと段階あたり」と書けばよかった…
- Problem 1306 19B 右回りだったり左回りだったりする.3方向ってどういうことやねんとだいぶ悩みました.
- Problem 0781 21B 解答者の少なさとtargetの配置に幻惑されてたけど落ち着いて空マスも全部通る方針を考えれば簡単.
- Problem 0573 25B→24B 25Bは2倍3倍.24Bは特殊な2倍関数.やはりこの関数は強かった.
- Problem 0275 28B→20B 数値関数つよい.
- Problem 0292 33B→32B 理詰めで到達できなくはなさそうな解ではあるけど自分はたまたま見つけました.
- Problem 1013 37B→35B→34B 最後の1Bは単純な見落としだけど言われなければ気づいていたかどうか.
- Problem 1892 20B→18B 20Bは12B構文.改めてちゃんと考えてみるとあっさりBestに.
- Problem 0586 29B→17B 12B構文つよい.人力で見つかりました.
- Problem 0610 30B フラクタル的な構造だった.
- Problem 1605 29B 長さが1,2,4,7,12.Best化に滅茶苦茶苦労した.
- Problem 0330 17B 長さが奇数と偶数.
- Problem 0534 18B 0533とはだいぶ違う方針で解けた.作意は判ったと思うのだけど1B届かない…
- Problem 0617 24B 四方の区切りかたを45°間違えてた.
- Problem 0956 26B 同じく.補助関数を使いました.
- Problem 0439 23B→22B 変態的な数値関数かと思ったら,非数値再帰で綺麗に書けた.
- Problem 0513 29B→26B 命令を含む多変数関数.なるほど〜
- Problem 0828 28B→27B 一見無駄そうな方針で意外にも縮んだ.でもBestには届かず.
- Problem 1634 28B→27B 以前と同じ関数で書き直しただけで縮んだ.謎.
- Problem 2030 13B ↓例えばこんなコード.
a(X):sXslXsllXa(sX) a()
↓こうやってあえて余計な変数を入れると
a(X,Y):sXslXYsllXYa(sX,) a(,)
↓とあるテクが使えて縮みます.
a(X,Y):sXa(lXY,a(sX,)) a(,)
命令としての働きのない変数を使うという盲点っぽいテク.2021,2030の想定解はこんな感じです.(真面目に考えるよりそれっぽい13Bを試す方がはやそう)
- 1464,1900あたりもこの手法.
- 多変数の多重再帰を一般的に(2019みたいなのは除く)説明してみるの巻.
a(X,Y):___a(?,?)
という形の2変数関数(___ではXがYよりも先に出てくるとする)について,
「___の1つ目のYより前の部分(上の例だとsXslX)のXに『なにか』を代入した形」が「1つ目のXより後の部分(上の例だとslXYsllXY)または実行行」に含まれるとき,その部分を”a(なにか,”で置き換えることができます.行末に”)”をつけます.
- 『なにか』は空文字列でもいいし,XやYを含んでいてもいなくても構いません.
- 上の例でいうと,「slXYsllXY」がsXslXのXに「lXY」を代入した形なので,そこを「a(lXY,」と置き換える要領です.
- 「1つ目のYより前の部分」を即席の補助関数として使っている,と捉えると解りやすいかも.
2018/06
2018/04
2018/03
2017/11
2017/10
- Problem 0466 36B→32B 1132みたいな短縮ができるように3倍系関数を弄った.
- Problem 2017 14B 問題タイトルのおかげで解けた.
- Problem 2018 16B むずい...
- Problem 2014,Problem 2017,Problem 2018 うわーこれは凄い! 多変数の多重再帰でこういう縮め方もできるとは! 完全に見落としていた...
- Problem 2018 14B 短縮する前のコードがそもそも難しい(自分は育て方を部位固定してsolverに任せた)ので,とあるテクを使った14Bコードを試しまくったほうが早そう.
- Problem 0112 20B→19B とあるテクが早速使えた. こういうのが縮むのはやばい.
- Problem 1373 14B→13B 普通の2変数.
- Problem 1314 14B→13B とあるテク.
- Problem 1025 30B→29B とあるテク.
- Problem 1157 14B→13B 普通の2変数乱歩.
- Problem 1305 16B ヒント問題のおかげで解けた.
- Problem 1114 22B→21B とあるテク.
- Problem 1464 18B→17B とあるテク.
- ↑↑とあるテクと云いつつ,1464以外はとあるテク関連の新問3問ほど変態的ではない短縮形です.
- a(X,Y):XXXYYYa(??) → a(X,Y):XXXa(Y,a(??)) みたいな感じ.
- Problem 1331 27B→26B 2変数.
- Problem 0655 17B→16B 多重再帰とかそっち方面の短縮ばかり考えていた.
- Problem 1907 26B→25B 見落とされがちな縮み方.
- Problem 0683 62B→45B 回収の順番を変えたらだいぶ縮んだ. あと4B.
- Problem 0564 19B→18B 試し忘れ.
- Problem 1278 30B 気合い.
- Problem 1823 19B 解いてから気付いたのですが,タイトルは前問の天丼(お笑い用語)という意味...!?
- Problem 1110 18B XXXXで固定してsolver. もっと粘れば自力で解けたかなぁ...
- Problem 1273 19B→16B 1変数solver. こっちは自力でできる気がしない.
- Problem 1448 31B→24B 某サイトから方針(ssrssl単位の乱歩)をパクった.
- Problem 1911 16B なるほど〜 難しくはないけど長いこと気づかなかった.
- Problem 1727 16B なるほど〜 これも盲点だった.
- Problem 0500 20B 解けたけど1B及ばず.
- Problem 0474 22B タイトルと「成長は2段階ではない」というヒントで解けた.
- Problem 0672 25B 解けたけど3B及ばず. → 22B 改めて書いてみたら普通にできた. 25Bは面倒なことをしていた.
- Problem 0692 13B 以前もsolverで探索したけどstep数が足りなかったらしい.
- Problem 0981 19B→18B 成長部分を一部固定して2変数solverで探索したらそこそこ難しい解が出てきた.
- Problem 0349 22B→21B Bestが遠い.
- Problem 1959 24B→23B なるほど〜. 2行目が0引数でも1引数でも23B.
- Problem 2019 12B 2変数. とあるテクと似ているといえば似ているかも. 関数定義ではなく実行行で多重再帰することでllsが短く書けます.
- Problem 0605 25B→16B mapのターゲットの数を減らしてsolver.
- Problem 1792 26B→25B 使いまわせるように関数を弄った.
- Problem 0458 17B やっと解けた. こういうの見つけるの苦手.
- Problem 1897 17B ↑が解けたらすぐ.
- Problem 0008 16B→14B なんと!!!! 自分の16B解からそのまま2B消すだけで通ってしまった.
- Problem 1414 21B→19B 経路は大体同じまま.
- Problem 1951 29B→27B lsrsパーツを使ってみたら縮んだ.
- Problem 1940 30B→28B 5,4,2,1 という長さを12B構文っぽい感じで. (追)直接書いても28Bになった.
- Problem 1936 31B→29B こっちは直接書いた. ↑もこれもパーツはsrsslsです.
- Problem 1889 31B→30B 向き合わせの無駄というか,2倍系関数の使い方の無駄というか...
- Problem 0212 12B→11B 一番短いのでも20万steps以上かかった.
- Problem 0320 24B→23B Bestが遠い.
- Problem 0223 26B→25B 26Bコードの内1つがうまいこと縮んだ.
- Problem 0197 27B→26B 行数を増やした.
- Problem 2002 17B→16B 17B解がもっとシンプルに書けた. 割と綺麗なコードだけど,15B解もwwvwwさん曰く「想定解!」だそうなので是非ともBest化したいところ. それにしてもこんなに手強い問題になるとは...
2017/09
- Problem 0287 13B 最近作った1関数solverで解けました. 4倍系です.
- Problem 0977 同じくsolver. 自力で解ける気がしない. XrXrXX.
- Problem 0231 48B→46B 気合い.
- Problem 0488 28B→26B 数値関数でいい感じに書けました.
- やったー新問!
- Problem 2006 23B 経路探す系の問題は苦手なのですが,単純な経路と聞いてしばらく粘っていたら解けました. なるほど〜.
- Problem 2004 14B 16Bにしかならず悩んでいたけどまさかの3変数solverで解決してしまった... 想定解がまだ分からず.
- Problem 2007 17B しばし迷走の後,至って普通な17Bに. と思いきやまだ縮むらしい.
- Problem 1016 15B いろいろ試していたらできた! 関数とループです. ちょっと意外な見落とし.
- Problem 2009,Problem 2010 同じ15Bになったけど違う方針. 面白い.
- Problem 2011 15B 1016と似ているので想定解とは違うかも?
- 束の間の1位!
- Summer2017Contestはあまり詰められず,未solveが4問も残ってしまいましたが,解けない問題もなりふり構わず部分点を拾いまくったのが奏功してか(少なくともLeaderboardを見る限りは)なんとか1位になれた模様.
- 1B,8B,9B,25B,18B,21B,6B,20B,15B,27B,22B,20B,23B,22B,34B,16B,26B,21B,30B,--,31B,--,23B,--,-- でした.
- Problem 1431 22B→19B 18がBestじゃなかったらしいと聞いて考えていたらできました.
- Problem 2012 15B 提案に乗って作ってみました. 金環日蝕.
- Problem 1924,Problem 1586,Problem 1589 こういうことだったのか!
- Problem 1970 17B→15B 1589の構文でBest化できました. 手で探すのは大変そうだったのでプログラムで.
- Problem 1955 16B→15B 同じく. 16Bも同じ構文だったけどsが1つ無駄だった.
- Problem 1914 80B→75B Bestが短すぎる...
- Problem 0184 38B→37B 38Bコードに縮む余地があった.
- Problem 1734 19B やっと解けた. 面白い.
- Problem 1553 25B→23B 特殊な初項で24Bになって,さらに実行行頭のlを消せて23Bになりました.
- 単独集計と問題ページ作成ありがとうございます!!
- Problem 0970 20B→18B ssrsslss単位の乱歩の20Bが特殊な初項で縮みました.
- Problem 1062 34B→32B 前は多変数関数でアクロバティックなことをしていましたが,それをやめて1倍系で.
- Problem 0824 27B→25B 補助関数であっさり.
- Problem 1899 26B→24B 棒の作り方のミス. コードの発想は合っていたのに,無駄に非数値変数を2つ使っていた.
- Problem 0725 36B→34B 置換を関数に変えました.
- Problem 1890 33B→19B 1899の類題だと意識して眺めてたらやっと経路が見えました. 位置合わせがうまい.
- Problem 0678 22B→21B 1899の棒の作り方で縮んだ.
- Problem 1825 11B→10B 多重再帰構文!
- Problem 0401 23B 解けたものの1B及ばず.
- Problem 1814 28B→26B 1815みたいな経路.
- Problem 2003 20B→19B 関数を変えた.
- Problem 1975 Ktyaさんが想定解とはちがう解だったそうで吃驚. 実行行頭にrがあるとのことだったのでまさかとは思っていたのですが... 新テク,とんと見当がつかぬ.
- Problem 2013 11B そういえばこんな問題なかったなあと思って作りました. 11Bより先はない...はず...多分...
- Problem 2002 solveされてる!!!! 問題を没にせずに済んでよかった. 自分も結構いろいろ試したのですがSystem Testを突破できる解がどうにも見つからず,半ば諦めていました. これから考えます.
- Problem 2002 17B 解けた!!!! 他のコードが通らなかった理由もこれだけ通った理由もよくわからない. あと2B.
- Problem 0680 46B→33B 漸く規則に気付いた. あと4B.
- Problem 2014 19B なるほど〜. 変数を増やすよりもあの手法のほうが短く書けた.
- Problem 1898 18B→16B なるほど〜. こういう問題好き.
- Problem 1934 30B→27B 気合い.
- Problem 2014 Bestが短すぎる...
- Problem 2015 27B とりあえず.
- Problem 2016 14B 14B?
- Problem 0163 26B→24B 規則認識が難しい.
- Problem 2015 27B→25B これも想定解がひくほど短かったりしそうで怖い.
過去に解いた問題
自分の単独Bestがかなり増えていて驚きました. なんとなく思いついたものにコメントしてみます. ヒントになっていたりなっていなかったりします.
- Problem 0018,Problem 1481,Problem 0432,Problem 1348: 1975の手法で縮みました. 0432はかなり無理矢理.
- Problem 0526,Problem 0569,Problem 0372,Problem 1382,Problem 1888 12B構文絡みで書くと数値変数が少なく済んでお得なパターン. 0091抜かれた...
- Problem 0057,Problem 0058 変数を増やしたり,数値関数を再利用したり.
- Problem 0138 pastaさんのヒントの通り11歩単位の乱歩を探索したら何故か単独に. 実質10B乱歩. 実行が矢鱈と長い.
- Problem 0184 直接書くと45B辺りにしかできなかったのですが,互除法を使って書けないものかと試行錯誤するうちにとんでもない変態解を生み出してしまった.
- Problem 0265 XsYsXで2行.
- Problem 0302 直接書けばいいことに長いこと気づかず解けなかった.
- Problem 0357 大で小を挟んで育てていったものを最大の時だけ実行する数値関数で.
- Problem 0368 Limitが鬼畜.
- Problem 0419,Problem 0459 数値関数の変数を増やしました. 0459が解けて長らく謎だった0201も解けました.
- Problem 0798 小さい正方形を書くのをやめて棒を立てることにしたら26Bになって,いちいち初期位置に戻るのをやめたら24Bになりました.
- Problem 0845 至って普通の置換とn倍だけ.
- Problem 0857 数値絡みの再帰です. 割と普通.
- Problem 0980 経路を見直した上で a(N):(N/15)歩+r+(N%15)歩+r みたいな(厳密には少し違う)関数を極力少ないByte数で定義してなぞりました.
- Problem 1108 ぐねぐねしてます.
- Problem 1183,Problem 1330 XXrXX型の再帰に特殊な初項.
- Problem 1204 r/lの数を1個減らせた.
- Problem 1307 rsとlsを数値で並べる.
- Problem 1682 XssXで2行.
- Problem 1569,Problem 1705 12B構文.
- Problem 1782: 0249の渦バージョン. Thue-Morse sequenceっぽい増やし方だと左折との両立が無理そうなので,Bitの偶奇で判定しました.
- Problem 0129,Problem 0924,Problem 1469,Problem 1488: 12B構文の周辺で紹介されている数値乱歩構文.
- この構文のsolverを作るのは比較的簡単だったので,2変数solverを作る以前にこっちの構文でBest化できた問題がわりとあります. 0028,1061etc.
- Problem 0026,Problem 0520,Problem 1719,Problem 1744 1変数solver.
- Problem 0148,Problem 1111,Problem 1138,Problem 1773 2変数solver.
- Problem 0140,Problem 1426 3変数solver.
2017/08
見よう見まねで書いてみます. おかしな点があったら教えてください><
- Problem 2002 2001の13Bコードの数値を変えただけだと通らない(HOJの仕様上,step数が1000000以下でも変数が長くなりすぎるとアウト?)ことは0545で実験済みだったのですが, 他の解も何故か通らなくて目を白黒させています. n時間動かしてクリア出来たと思ってもFailed System Testになる...
- というわけで2002はそのうち消すかもしれません...orz
- 917587stepsと結構長いことかかるので,似たような仕様上の制限に引っかかっているのかも.
- Problem 2001 2001と2002の想定Bestはともに12Bでした. 経路は直接書いた場合と同じで, 数値を使います.
他の自作問題について.
最近解いた問題.