このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1355011916/198
#  phpですがwebじゃないので、こちらで質問させて下さい 
#  趣味でプログラムをはじめて半年程度です 
#   
#  競馬のデータ処理をやっています 
#  数字と記号の混ざった文字列の数字部分を置き換えたいのですが 
#  どうすればいいでしょうか? 
#   
#  具体的には、各馬の各コーナーの通過順位を以下のように馬番から着順に置き換えたいのです 
#  (2,*15,14,5)(9,12,16)(8,3,6)-(10,13)(11,4)(7,1) *各馬の各コーナー通過順位 馬番表示 ←コレを 
#  (10,*16,1,2)(8,4,6)(9,3,7)-(15,14)(11,13)(5,12) *各馬の各コーナー通過順位 着順表示 こうしたい 
#   
#   
#  現在データは、以下のようになっています 
#   
#  各馬の各コーナー通過順位 馬番表示は $corner *先週の朝日杯の3コーナー 
#   (2,*15,14,5)(9,12,16)(8,3,6)-(10,13)(11,4)(7,1) 
#   
#  馬番は $umban 
#  Array ( [0] => 14 [1] => 15 [2] => 2 [3] => 5 [4] => 9 [5] => 12 [6] => 16 [7] => 3 [8] => 8 [9] => 6 [10] => 10 [11] => 13 [12] => 4 [13] => 11 [14] => 7 [15] => 1 ) 
#   
#  着順は $tyaku 
#  Array ( [0] => 1 [1] => 16 [2] => 10 [3] => 2 [4] => 8 [5] => 4 [6] => 6 [7] => 3 [8] => 9 [9] => 7 [10] => 15 [11] => 14 [12] => 13 [13] => 11 [14] => 5 [15] => 12 ) 
#   
#  $umbanと$tyakuの相関性は、[0]は14番で1着、[1]は15番で16着、[2]は2番で10着、、etcとなっています 
#   
#  phpです、宜しくお願いします *分割で見にくくなってしまいすいません 
# 
#  
#  11R 第64回 朝日杯フューチュリティステークス(GI)成績
#  
#  サラ系2歳,1600m,芝・右 外
#  (国際)牡・牝(指定)オープン,馬齢
#  本,賞,金,:,7000,、,2800,、,1800,、,1100,、,700,万円
#  付加賞金,:,121.8,、,34.8,、,17.4,万円
#  発走 15:25
#  天候:晴   芝:良
# 

:- op(400,xfx,':').

コーナー通過時の先頭からの各馬の最終到達順位(_レース,_通過時文字列,_到達順位に置換した通過時文字列) :-
        sPLIT(_通過時文字列,['(','-','=','*',')'],L1),
        馬番を最終到達順位に変換(_レース,L1,L2),
        atomic_list_concat(L2,_到達順に置換した通過時順位).

馬番を最終到達順位に変換(_レース,[],[]).
馬番を最終到達順位に変換(_レース,[_馬番|R1],[_着順|R2]) :-
        integer(_馬番),
        レース成績(_レース,_着順,_馬番,_馬名,_性齢,_負担重量,_騎手,_タイム,_着差,_推定上り,_馬体重,_調教師,_単勝人気),
        馬番を最終到達順位に変換(_レース,R1,R2).
馬番を最終到達順位に変換(_レース,[A|R1],[A|R2]) :-
        \+(integer(A)),
        馬番を最終到達順位に変換(_レース,R1,R2).

レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',1,14, ロゴタイプ,牡2,55.0, M.デムーロ,1:33.4,'',36.1,482,-4, 田中剛,7).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',2,5, コディーノ,牡2,55.0, 横山典弘,1:33.4,クビ,36.0,476,+2, 藤沢和雄,1).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',3,3, ゴットフリート,牡2,55.0, C.スミヨン,1:33.8,2+1/2,36.0,470,+2, 斎藤誠,3).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',4,12, フラムドグロワール,牡2,55.0, C.ウィリアムズ,1:33.9,3/4,36.3,490, 0, 藤沢和雄,5).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',5,7, ティーハーフ,牡2,55.0, 武豊,1:33.9,クビ,35.5,436,-2, 西浦勝一,6).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',6,16, ノウレッジ,牡2,55.0, 蛯名正義,1:34.0,クビ,36.4,490,+2, 二ノ宮敬宇,10).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',7,6, ラブリーデイ,牡2,55.0, C.ルメール,1:34.0,クビ,36.2,472,-2, 池江泰寿,4).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',8,9,エーシントップ,牡2,55.0, 浜中俊,1:34.1,クビ,36.6,532,-2, 西園正都,2).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',9,8, クラウンレガーロ,牡2,55.0, 幸英明,1:34.1,ハナ,36.3,456,+12, 日吉正和,8).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',10, 2, ネオウィズダム,牡2,55.0, 柴田善臣,1:34.2,1/2,36.8,484,+2, 矢作芳人,12).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',11, 11, アットウィル,牡2,55.0, 岩田康誠,1:34.2,クビ,36.0,482,-2, 領家政蔵,13).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',12, 1, ザラストロ,牡2,55.0, 松岡正海,1:34.3,クビ,35.8,492,+4, 武藤善則,11).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',13, 4, テイエムイナズマ,牡2,55.0, 池添謙一,1:34.5,1+1/2,36.3,510,+10, 福島信晴,9).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',14, 13, ディアセルヴィス,牡2,55.0, 勝浦正樹,1:34.6,3/4,36.5,454,+4, 高橋裕,16).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',15, 10, ワキノブレイブ,牡2,55.0, 福永祐一,1:34.7,クビ,36.6,468,+6, 清水久詞,15).
レース成績('11R 第64回 朝日杯フューチュリティステークス(GI)',16, 15,マイネルエテルネル,牡2,55.0, 柴田大知,1:34.9,1+1/4,37.6,470,-2, 西園正都,14).



%%%%% 実行例 %%%%

?- コーナー通過時の先頭からの各馬の最終到達順位('11R 第64回 朝日杯フューチュリティステークス(GI)','(2,*15,14,5)(9,12,16)(8,3,6)-(10,13)(11,4)(7,1)',_到達順位に置換した通過時文字列).

_到達順位に置換した通過時文字列 = '(10,*16,1,2)(8,4,6)(9,3,7)-(15,14)(11,13)(5,12)'