#  このディレクトリの索引
#  出典 :: スレ立てるまでもない質問はここで135代目 #755
#  **--*
#  ***-*
#  *---*
#  **-**
#  **-**
#  
#  var a=[
#  "**--*",
#  "***-*",
#  "*---*",
#  "**-**",
#  "**-**",
#  ];
#  ハイフンの位置を取得して連想配列に入れる方法おしえてください
#  var ithi = [
#  [2,3],
#  [3],
#  [1,2,3],
#  [2],
#  [2],
#  ] 

ハイフンの位置を取得して連想配列に入れる方法おしえてください(_文字列,_行ならび,_ハイフンの位置ならび) :-
ハイフンの位置を取得して連想配列に入れる(_文字列,_行ならび,_ハイフンの位置ならび).

ハイフンの位置を取得して連想配列に入れる(_文字列,_行ならび,_ハイフンの位置ならび) :-
行ならびを得る(_文字列,_行ならび),
findall(_各行のハイフン位置ならび,(
member(_各行,_行ならび),
ハイフンの位置を取得して(_各行,_各行のハイフン位置ならび)),_ハイフンの位置ならび).

ハイフンの位置を取得して(_副文字列,_ハイフンの位置ならび) :-
findall(_位置0オリジン,(
sub_atom(_副文字列,_位置0オリジン,1,_,'-')),_ハイフンの位置ならび).


行ならびを得る(_文字列,L) :-
停止条件は文字列が空となるか改行を含まない場合(_文字列,L),!.
行ならびを得る(_文字列,[_改行までの文字列|R]) :-
改行までの文字列を切り取りながら行ならびを得る(_文字列,_改行までの文字列,R).

停止条件は文字列が空となるか改行を含まない場合('',[]) :- !.
停止条件は文字列が空となるか改行を含まない場合(_文字列,[_文字列]) :-
改行を含まない(_文字列).

改行を含まない(_文字列) :-
\+(sub_atom(_文字列,_,1,_,'\n')).

改行までの文字列を切り取りながら行ならびを得る(_文字列,_改行までの文字列,R) :-
改行までの文字列を得る(_文字列,_改行までの文字列,_後文字列),
行ならびを得る(_後文字列,R).

改行までの文字列を得る(_文字列,_改行までの文字列,_後文字列) :-
sub_atom(_文字列,S,1,R,'\n'),
sub_atom(_文字列,0,S,_,_改行までの文字列),
sub_atom(_文字列,_,R,0,_後文字列),!.