Perl Quiz / Puzzle part2

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
Perl のクイズ・パズル スレッド
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984944254

出題者へ
・学校の課題を書くのは禁止。
・できれば自分の答を用意すること。
・一段落したら出題者は必ずサマリー(まとめ)を書くこと。
2名無しさん@お腹いっぱい。:2001/05/02(水) 19:15 ID:???
Part2やるほど需要があったのか?

ま、それは兎も角どうせならPHPとかも可にして欲しかった。
31:2001/05/02(水) 19:20 ID:???
需要ないけどいいの。少人数でやってくから。
PHPの回答も大歓迎だよー。どんどん参加してくれー。
41=旧スレの37:2001/05/02(水) 19:30 ID:???
これまでの問題

1. タブ文字を展開して空白にする関数を作れ。タブ幅は8とする。
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984944254&st=3
(サマリーなし)

2. 有名な15パズルですね。これを最短で解く手順を出力してください。
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984944254&st=20
(サマリーなし)

3. 現在の年月日から数えて最も近い「13日の金曜日」を求めるスクリプトを書け。
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984944254&st=29
(サマリーなし)

4. キリ番撲滅カウンタを作れ
http://tako.2ch.net/test/read.cgi?bbs=perl&key=984944254&st=37
(サマリー作成中です)
5前スレ39:2001/05/03(木) 12:01 ID:JPrRLY3o
前スレ 48 でちょっと検証
or $count > 100 and index("0987654321", $count)>=0 #くだり賞
ではカウンタは普通先頭に0が来ないし 3210 などにも対応させるために
or $count > 100 and index("9876543210", $count)>=0 #くだり賞
にしたほうがいいかと思われ。

しかし index は普段使わなかっただけに
こういう便利な使い方があるんかと素直に感心した。
6前48:2001/05/03(木) 20:41 ID:.kTr8MpA
>>5
>or $count > 100 and index("9876543210", $count)>=0 #くだり賞
>にしたほうがいいかと思われ。
あ、そっか。
何も考えずにのぼり賞の逆にしただけだったからなぁ。

>こういう便利な使い方があるんかと素直に感心した。
これ思いついたので解答してみる気になったという...
実用スクリプトで役に立ちそうな場面はちょっと思いつかないけど。

つけたし:
前スレ48のぞろ目の正規表現、
or $count =~/^(\d+)\1+$/
に変更したら、「121212」とか「123123」とかも弾ける。
7むぎ茶      :2001/05/04(金) 06:26 ID:???


結論

カウンター外せ(n


┐(´ー`)┌


┏━━━━━━━━━┓
┃('Д')y ─┛~~ ┃
┃むぎ茶      ┃
[email protected]  ┃
┗━━━━━━━━━┛
むぎちゃんねる
http://aho0baka.virtualave.net/bbs/bbs.cgi
メイリングリスト
http://www.freeml.com/ml_info.php?ml=bitvalley
8ほえほえ ◆NRhOuzXM:2001/08/10(金) 07:38 ID:???
ほえほえ#password
99:01/09/02 19:21 ID:ixHN2n4k
久々に<お題>
1,2,3,4,5,6,7,8,9(数字の並びは固定)がある。
これらの数の間に+、−、何も入れないという演算子をいれて、計算
する。そして、計算結果が100になる組み合わせを、すべて表示する
プログラムを作成せよ。100になるのは、11通りのはず。

http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998808627
からのパクリだけど、Perlでやったらどうなる?
ちなみに俺の考えた解はこれ。
corn.2ch.net/test/read.cgi?bbs=php&key=988718702&st=35&to=35&nofirst=true
10名無しさん@お腹いっぱい。:01/09/03 11:59 ID:IRPrrZiA
面白そうだけど全然解法が思いつかん  (死
11_gunzip:01/09/04 05:46 ID:E8XEZJvU
碌でもないコードしか思いつかない...。
---------------------------
ハッシュ(の文字列表現)利用。
foreach my $i (grep{!($_ % 3)} 0..3**9){
  @h{1..9} = map{('','-','+')[($i /= 3) % 3]} 1..8;
  print %h,"\n" if eval join("",%h) == 100;
}
---------------------------
単純な再帰で虱潰し。
sub r{
  my($str, $num) = @_;
  for my $op ('', '-', '+'){
    my $exp = join($op, $str, $num);
    $num != 9 ? r($exp, $num + 1)
    : eval($exp) == 100 ? print "$exp\n" :next;
  }
}
r("1", 2);
12名無しさん@お腹いっぱい。:02/01/03 12:45 ID:1F/Y4C+i
あげてみようか、、
13nobodyさん:02/10/10 05:41 ID:???
ey7u4eyreyryryryyyy
14nobodyさん
っっっっっっっっっっp