Globalな考察
をテンプレートにして作成
[
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
メニュー
]
開始行:
[[HOJ講座]]
長文問題の考察
今回は長文(ここでは規則が定まっていない問題のことを簡略...
長文問題をしっかりと圧縮しているプレイヤーはここ最近まで...
殆ど全ての長文問題でその一人がbestを取り続けていたために...
自分自身その一人が圧倒的な技術を持っているがために頑張っ...
長文問題の解き方と言うのは完全に決まっている訳ではありま...
とは言ってもやはり問題によってアプローチは大きく異なって...
ですが,ここでは一般に有用な手法(というか書き方?)につ...
§0 経験則
いくつか長文を解いていて得た経験則
-a(X):pa(X-1)などの任意のnに対してpをn回やる と言う関数...
関数定義に6Bもかかる割にpを繰り返すしか出来ず,さらに分割...
一見小回りが利くように見えてa(X):pXqとの相性がかなり悪い...
-単純なn倍関数は使わない方が良い
同じパーツが明らかに多い場合を除き単純なn倍はa(X):pXqより...
一度a(...)でかこってしまうとたとえばb(X):pXqなどがどうし...
例として
p:aaa
q:bbb
ppppssrsppppssrsqqqsrqppq
(33B)
というコードがあるときは
p:aaa
q:bbb
c(X):XX
c(c(pp)ssrs)qqqsrqppq
(29B)
よりも
p:aaa
q(X):ppXbbb
q(q(ssrsq(q(ssrs)))sr)q()
(27B)
の方が短いです.ここまで露骨じゃなくても,パーツの個数が...
応用としてXXXpYqと言った類いの多変数+命令(ただし一つの変...
ちなみに上のコードはこんな感じにもなります
p:aaa
q(X):ppXbbb
d(X):q(q(sssrX))
d(d())sr)q()
(26B)
-置換した文字の使用回数が少ない場合は関数を考察しよう
例えば
a:10文字
ssrsrrsssaa...
のような状況の時は,二倍関数や,f(X):sXXとかf(X):ssXXとか...
-同じ文字を生成するようにしよう
a(X):ssssXsssといったような関数を使っていると使える事があ...
たとえば
a(X):ssssXsss
a(a(sa(rssr)a(sr)s)ra(ssr))
というコード,ぱっと見で諦める人もいるかもしれませんが2B...
a(X):ssssXsss
a(a(a(srssr)a(sr))sra(ssr))
これによってsrがたくさん出来たのでこれを置換します.
b:sr
a(X):ssssXsss
a(a(a(bsb)a(b))ba(sb))
こんな感じでしょうかね
-壁を使う(もしくは使える)箇所をメモしておく
自分がよくやるのはどれか一文字を空で定義しておいて(wallの...
p:srslsrslsrslsrsl
w:
ssssprpssswrrsspprpprpppsrsspwrrsspppssp
こんな感じ.wがマーカーみたいなイメージです.
例えばb(X):ssXpのような関数を定義すると前半で"左側にssが...
p;srslsrslsrslsrsl
w:
b(X):ssXp
b(b()r)sb(wrrb())rpprpppsrb()wrrb()ppb()
前半で"左側にssがないから使えない!!"みたいな状況になっ...
b(X):ssXsrslsrslsrslsrsl
w:
b(b()r)sb(b(b(b(b(b(wrrb())r))r)))srb(b(b()wrrb()))b()
最後にwを消すのを忘れずに.このコードだとこんな感じがひと...
a:srsl
b(X):ssXaaaa
b(b()r)sb(b(b(b(b(b(rrb())r))r)))srb(b(b()rrb()))b()
-違う方針に行く前に一度作った答えもちゃんと見直す
方針がどれくらい思いついているかにもよります.
終了行:
[[HOJ講座]]
長文問題の考察
今回は長文(ここでは規則が定まっていない問題のことを簡略...
長文問題をしっかりと圧縮しているプレイヤーはここ最近まで...
殆ど全ての長文問題でその一人がbestを取り続けていたために...
自分自身その一人が圧倒的な技術を持っているがために頑張っ...
長文問題の解き方と言うのは完全に決まっている訳ではありま...
とは言ってもやはり問題によってアプローチは大きく異なって...
ですが,ここでは一般に有用な手法(というか書き方?)につ...
§0 経験則
いくつか長文を解いていて得た経験則
-a(X):pa(X-1)などの任意のnに対してpをn回やる と言う関数...
関数定義に6Bもかかる割にpを繰り返すしか出来ず,さらに分割...
一見小回りが利くように見えてa(X):pXqとの相性がかなり悪い...
-単純なn倍関数は使わない方が良い
同じパーツが明らかに多い場合を除き単純なn倍はa(X):pXqより...
一度a(...)でかこってしまうとたとえばb(X):pXqなどがどうし...
例として
p:aaa
q:bbb
ppppssrsppppssrsqqqsrqppq
(33B)
というコードがあるときは
p:aaa
q:bbb
c(X):XX
c(c(pp)ssrs)qqqsrqppq
(29B)
よりも
p:aaa
q(X):ppXbbb
q(q(ssrsq(q(ssrs)))sr)q()
(27B)
の方が短いです.ここまで露骨じゃなくても,パーツの個数が...
応用としてXXXpYqと言った類いの多変数+命令(ただし一つの変...
ちなみに上のコードはこんな感じにもなります
p:aaa
q(X):ppXbbb
d(X):q(q(sssrX))
d(d())sr)q()
(26B)
-置換した文字の使用回数が少ない場合は関数を考察しよう
例えば
a:10文字
ssrsrrsssaa...
のような状況の時は,二倍関数や,f(X):sXXとかf(X):ssXXとか...
-同じ文字を生成するようにしよう
a(X):ssssXsssといったような関数を使っていると使える事があ...
たとえば
a(X):ssssXsss
a(a(sa(rssr)a(sr)s)ra(ssr))
というコード,ぱっと見で諦める人もいるかもしれませんが2B...
a(X):ssssXsss
a(a(a(srssr)a(sr))sra(ssr))
これによってsrがたくさん出来たのでこれを置換します.
b:sr
a(X):ssssXsss
a(a(a(bsb)a(b))ba(sb))
こんな感じでしょうかね
-壁を使う(もしくは使える)箇所をメモしておく
自分がよくやるのはどれか一文字を空で定義しておいて(wallの...
p:srslsrslsrslsrsl
w:
ssssprpssswrrsspprpprpppsrsspwrrsspppssp
こんな感じ.wがマーカーみたいなイメージです.
例えばb(X):ssXpのような関数を定義すると前半で"左側にssが...
p;srslsrslsrslsrsl
w:
b(X):ssXp
b(b()r)sb(wrrb())rpprpppsrb()wrrb()ppb()
前半で"左側にssがないから使えない!!"みたいな状況になっ...
b(X):ssXsrslsrslsrslsrsl
w:
b(b()r)sb(b(b(b(b(b(wrrb())r))r)))srb(b(b()wrrb()))b()
最後にwを消すのを忘れずに.このコードだとこんな感じがひと...
a:srsl
b(X):ssXaaaa
b(b()r)sb(b(b(b(b(b(rrb())r))r)))srb(b(b()rrb()))b()
-違う方針に行く前に一度作った答えもちゃんと見直す
方針がどれくらい思いついているかにもよります.
ページ名: