トップ «前の日記(2008-01-11) 最新 次の日記(2008-01-13)» 編集

Route 477



2008-01-12

[tetris] 〇手詰め

以下の状況で、あなたならどう置きますか?という問題。20G (SHIRASE後半)で。


HOLD   
       
 
          
          
          
          
       
    
   
   
   
    
  
  
  
  
 
 
 

詳細は、冒頭の記事を参照して欲しいのですが…

ちょっと感動してしまったので、下にも回答を貼っておきます:-)

評価基準は、

  • 操作の簡単さ(コンコン無し、2回の横タメなし、回転を少なく)
  • 残りの地形
  • HOLDは、使わなくて済むなら使わない方が良い(操作の簡略化、赤の温存)

です。

模範解答はこちら。


HOLD
  
 
          
          
          
          
       
    
   


  
  
  
  
  
 
 
 

その発想は無かった!

上手い人は、「赤のパタパタ」「青の飛ばし(陰謀)」のような1ブロックの操作だけじゃなくて、 こういう2ブロック以上の操作(「2手詰め」「3手詰め」)のようなパターンも頭に入ってるんだろうな、と思った記事でした。

[ruby] Rubyと高階関数

そうそう、そういうことが書きたかったのですよー。 ありがとうございます。

Rubyでも関数型言語のように高階関数(的なもの)は使えるんだけど、

  • 「関数を引数に取る関数」は通常、ブロックを使って実装される。(Rubyプログラマは多分、それが「高階関数」であるとはあまり意識してない)
  • 「関数を返り値として返す関数」はProcオブジェクトを使って実装できるが、あまりしない
    • 似たような関数を自動生成するときも、ブロックを使って定義することが多い

という違いがあって面白いなぁ、という。

やっぱり関数そのものがファーストクラスではないという点が影響してるんですかねぇ。 もしくは、これもまつもとさんの思想に誘導されているのか!?

#例えば、「関数が返り値として返す関数」をそのままメソッドにすることって「普通の」方法ではできませんよね。「ふつうの」Rubyプログラマならできると思いますが(笑)。

本日のツッコミ(全2件) [ツッコミを入れる]
yowa (2008-01-12 19:42)

元図と段差が一段違ってますよー。<br>(この図だと紫で2列消し→青を無回転でスライド入れが成立しそうな。)

yhara (2008-01-14 03:38)

直しました。ご指摘ありがとうございます。<br>(段差が4段だと赤を立てられるなぁと思って削ったんですが、たしかにその手順の方が楽になりますね_|‾|○)