Problem 0750
- a(X):XrX
b(X,Y,Z):Zb(sX,Y-1,sra(XlX))Z
a(a(a(a(b(l,5,)s))l))
よくわからなかったです -- Ktya
- こう考えろとか助言もらえると嬉しいです。
35B
f(X):rd(XrrX)ls
g(X,Y):f(X)g(sX,Y-1)f(X)
d(X):XX
d(d(d(d(sg(,4)r))l)) -- SA9I
- 〜想定解〜
g(G):GrG
f(F):g(F)sg(F)
x:f(f(f()))
g(g(g(g(slxxxls))l))
縮んでも全くおかしくないです。
ちょっと長めでbyte数分かれそうな問題を・・・という魂胆の問題でした。 -- snuke
- 最初に作ったきり更新できなかった31Bコード:
w(X):XXXXr
a(X,Y,T):Ya(sX,lw(XllX)s,T-1)Y
w(w(sa(,,5)r))
材料を作ってそれを増やすだけの単純なコードです. -- mas
- a(X,Z,Y):Za(sXs,srXXl,Y-1)Z
b(X):XXXX
b(b(a(rr,,5)sr)l)
そんなパスありですかー -- zephoria
- 他に考えたこと:
w(X):XrXlslXrX
と定義して,「sw(w(s))s」とすると,短いバイト数で良さげな材料を作れるのですが,コンテスト時間内には上手く短縮に結び付けられませんでした. -- mas
- f(X,Y):q(srXXl,f(sXs,Y-1))
q(X,Y):XYX
q(q(q(q(f(rr,4)sr,),)r,),)
分かれるものですね. -- shinike
- > SA9Iさん
経路選択は標準的だと思います.
実はそのコードは,1テクニックで3B縮みます:
g(X,P,Y):Pg(sX,rd(XrrX)ls,Y-1)P
d(X):XX
d(d(d(d(sg(,,5)r))l))
f(X)と置いたものを,他変数を使って文字で置いていることを除いてほぼ同様です.この「他変数を使い文字で置く」方法は(再帰でも)重要なので覚えておくといいです.(続く) -- mas
- > SA9Iさん
数値引数が4から5に代わっている理由とかも理解しておくといいかも.他変数で文字で置くと,出来あがるタイミングが1ずれるんですよね.
なお,こうやって書き変えた32Bコードは僕が下に投稿した31Bコードとほぼ同様です.2倍関数の代わりに4倍関数を使い(この書き換えではバイト数不変),4倍関数に方向転換を織り交ぜて短縮しています. -- mas
- e(A):AA
f(A):e(e(e(e(se(AslAl)e(e(ss))l))l))f(srslA)
f()
コンテスト中の30B解です。eを4回繰り返しにすれば29Bになります。 -- nadsuki
- !この経路選択は面白いですね
なるほど・・・ -- snuke