めざましテレビ

昨日の早耳ムスメは JESSICA ちゃん,お題は「早耳ムスメのハマリもの! ジェシカ ver.」.
おっとぉ,この企画ボツになってなかったのか.
っていうか,JESSICA ちゃんは JESSICA ちゃんなのかジェシカちゃんなのかどっちなんだ!?
っていうか,月刊的には道端ジェシカちゃんですかそうですか.


ともあれ (JW),さすが JESSICA ちゃん,選ぶ服がどれも彼女らしいというか他のコには難しそうな感じ.
なんとか料理のお店では豪快な肉料理を食べていましたが,「1 週間分の肉料理を楽しむ」みたいに言っていたところからすると,肉料理を食べるのは 週一回だけ?
さすが,あのスタイルを維持しているだけのことはありますね.

Prolog 写経記 その 33 substitute_n/4

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

今日は substitute_n/4 を写経します.

解説

substitute_n(N, Y, List1, List2)List1N 番目の要素を Y に換えた新しいリストを List2 として返す.

ふむ.Java でいうと List#set(int, Object) みたいな.

モード

substitute_n(?, ?, +, ?).

ふむ.変更前のリストだけは具体化して与えないといけないよ,と.

定義

では,こいつの定義を写経しませう.

substitute_n(N, Y, List1, List2) :-
	conc(L1, [_ | L2], List1),
	length(L1, M),
	N is M + 1,
	conc(L1, [Y | L2], List2).

やはり conc/3 のお世話に.
っていうか,なんか見たことあるなーって思ったら,delete_n/3 と限りなくそっくりじゃないですか.

delete_n(N, List1, List2) :-
	conc(L1, [_|L2], List1),
	length(L1, M),
	N is M + 1,
	conc(L1, L2, List2),
	!.

最後の conc/3 を呼び出す際に第 2 引数で Y を付け加えていることが違うくらい.
N 番目の要素を削除してその位置に Y を追加していると考えればそりゃそうだ.


もう一つ大きな違いは最後のカットの有無なんですが,そもそも delete_n/3 になぜカットが付いているのかよくわからなかったりします.
そんなわけで (どんなわけで?),delete_n/3 の時にカットを外してみたわけですが,動きは変わらなかったわけで.
なので,substitute_n/4 にカットを付けても構わないような?

では使用例を写経しませう.

2 ?- substitute_n(4, 9, [9, 9, 9, 8], L).

L = [9, 9, 9, 9] 

Yes
3 ?- substitute_n(3, X, [ann, liz, sue], [ann, liz, kate]).

X = kate 

Yes
4 ?- substitute_n(P, dave, [mike, paul, john], [dave, paul, john]).

P = 1 

Yes

ふむ.


では,最後にカットを付けてやってみますか.

6 ?- substitute_n(4, 9, [9, 9, 9, 8], L).

L = [9, 9, 9, 9] 

Yes
7 ?- substitute_n(3, X, [ann, liz, sue], [ann, liz, kate]).

X = kate 

Yes
8 ?- substitute_n(P, dave, [mike, paul, john], [dave, paul, john]).

P = 1 

Yes

ふむ.同じ結果.
カットがあってもなくても一緒じゃないかなぁ.
...
と思ったところで気づいちゃいました.カットの有無で動きが変わるケースがありますね.
まずはカットなし.

10 ?- substitute_n(N, 1, [1, 1, 1], [1, 1, 1]).

N = 1 ;

N = 2 ;

N = 3 ;

No

そしてカットあり.

12 ?- substitute_n(N, 1, [1, 1, 1], [1, 1, 1]).

N = 1 ;

No

こういう使い方に意味があるかどうか分かりませんが,N が一つとは限らない場合に違いが出ますね.
うーん,ということは,delete_n/3 だってカットない方がいいんじゃないの?

13 ?- delete_n(N, [a, b, b, c], [a, b, c]).

N = 2 ;

No

N は 2 だけじゃなくて 3 でも構わないはずでは?
カットが付いているからその解を見つけられないよ?
うーみゅ...


週刊ビッグコミックスピリッツ

そういえば麗菜ちゃんが巻頭のグラビアに出てましたね.買わなかったけど.
なんか,CanCam麗菜ちゃんとは随分違った雰囲気.大人っぽいというか女っぽいというか.
でもでも,やっぱりモデルにグラビアはアウェイだなと思った今日この頃です.
グラビア好きでモデルに興味ない人はどんな印象を持ったんだろう?


CanCam 10 月号 エビちゃんベストセレクション 25

CanCam2005年10月号の蛯原友里ちゃん

CanCam から,お気に入りの蛯原友里ちゃんを紹介しようというこのコーナー.
今日はスマッキーグラムとのタイアップ「秋の狙い目 BIKER CHICK & SEXY ARMY」から 346 の友里ちゃん.
ちょっと髪がバサバサした感じですが,実は着てる服がタンクトップだったりして結構スポーティなのです.
なので,服とは合ってる感じ.なんだけど,ファーは微妙かも (苦笑).
そんなわけで (どんなわけで?),やっぱり CanCam 買うしか!!