濁音と半濁音
港
続けての質問お許しください。 過去ログの2002年2月11日(月)10:45投稿分で、濁音・清音についての書き込みがあります。 もし「かば」→「バイク」or「はなび」のように濁音でも清音でもどちらでも良い設定はあるのでしょうか?
2004年7月23日(金)11:02
みさお
既出単語無効化って、既出単語を答えたとき減点しないってことですか? それとも既出単語をチェックしないってことでしょうか?既出単語を答えても減点しない方法 → http://www.nmt.ne.jp/~misao/cgi/shiritori/faq.html#2 既出単語をチェックしない方法 → shiritori.cgiの473行目を削除or行頭に#をつけてコメントアウトする。 濁音・清音についてですが、設定では無理なので、スクリプト自体を少々変更する必要があります。 shiritori.cgiの447〜449行目を次の4行と入れ替えてください。 my %dakuon = ('が'=>'か','ぎ'=>'き','ぐ'=>'く','げ'=>'け','ご'=>'こ'); if ($lastwordletter){ &error(0,"「$lastwordletter」"から始めてください。) unless ($lastwordletter eq $firstletter || $dakuon{"$lastwordletter"} eq $firstletter); } これで「か」行については、濁音で終わったときは、始まりの音が清音でも濁音でもOKになります。 と言いつつ、テストしてないんですけどね。うまくいってもいかなくても、結果を報告してくれると嬉しいです。 それから、か行以外についても同様に%dakuonの中に入れてやってくれればOKです。 行数間違いやタイプミスに注意してください。
2004年7月23日(金)23:14
既出単語無効化と濁音
港
みさお様 お忙しい中、お答え頂きましてありがとうございます! >既出単語無効化 説明が不足していました。申し訳ございません。 例えば、「トマト」という言葉を得点単語2点と設定したとして… Aさん、Bさん、Cさんがトマト→トマト→トマトと答えても、3人に2点を与える設定にしたいのです。 普通のしりとりではあり得ないルールなのですが… このような事は無理でしょうか?>濁音・清音の件 shiritori.cgiの447〜449行目部分 if ($lastwordletter){ &error(0,"「$lastwordletter」から始めてください!") unless ($firstletter eq $lastwordletter); } を入れ替えてみましたが、動いてくれませんでした。(サーバーエラーが出ました) 入れ替えに失敗しているのかなと思い、二回ほど繰り返しましたが結果は同じでした。 本当に、変な質問ばかりして申し訳ございません…
2004年7月24日(土)06:59
みさお
既出単語無効化について 先に書いたように、shiritori.cgiの473行目を削除すれば、既出単語のチェックをしないので、回答は得点になります。 得点単語は一度回答されると以後は得点単語ではなくなるので、そのチェックを外すためには、 shiritori.cgiの490行目を削除し、 shiritori.cgiの497行目を次と置き換えてください。 $dat[3]++;$dat[5]=$FORM{'name'}; これでいいはずです。 なお、既出単語の回答者欄には一番最後に答えた人の名前が入ります。濁音・清音について これは私のタイプミスでした。 shiritori.cgiの447〜449行目と置き換える4行は↓です。 my %dakuon = ('が'=>'か','ぎ'=>'き','ぐ'=>'く','げ'=>'け','ご'=>'こ'); if ($lastwordletter){ &error(0,"「$lastwordletter」から始めてください。") unless ($lastwordletter eq $firstletter || $dakuon{"$lastwordletter"} eq $firstletter); } わかりますでしょうか? &error(0,"・・・のところ、"の位置をまちがえていたのですよ。すみません。 これで試してみてください。
2004年7月24日(土)09:15
港
みさお様 早速の返信ありがとうございます。 >既出単語無効化 正常に稼動しました。>濁音・清音の件 最初書かれている、「が行→か行」がうまく稼動しましたので、 my %dakuon = ('が'=>'か',…,'ご'=>'こ','ざ'=>'さ',…'ぞ'=>'そ',…); といった感じに増やしていきました。 が行→か行、ざ行→さ行、だ行→た行、ば行→は行、ぱ行→は行 またその反対の「清音から濁音・半濁音」も可能にしようと か行→が行、さ行→ざ行、た行→だ行、は行→ば行、は行→ぱ行 も書いたため、574桁にもなってしまいました。 でも、正常に稼動しています。 今回は本当にありがとうございました。
2004年7月24日(土)23:09
もう見ていないかもしれないけど。
みさお
> >濁音・清音の件 > 最初書かれている、「が行→か行」がうまく稼動しましたので、 > my %dakuon = ('が'=>'か',…,'ご'=>'こ','ざ'=>'さ',…'ぞ'=>'そ',…); > といった感じに増やしていきました。 > が行→か行、ざ行→さ行、だ行→た行、ば行→は行、ぱ行→は行 > またその反対の「清音から濁音・半濁音」も可能にしようと > か行→が行、さ行→ざ行、た行→だ行、は行→ば行、は行→ぱ行 > も書いたため、574桁にもなってしまいました。清音から濁音・半濁音も可にしたいなら、か行→が行、・・・と記述しなくても、 が行→か行、・・・ だけでOKです。入れ替える4行を次の4行と取り替えてください。 my %dakuon = ('が'=>'か','ぎ'=>'き','ぐ'=>'く','げ'=>'け','ご'=>'こ'); if ($lastwordletter){ &error(0,"「$lastwordletter」から始めてください。") unless ($lastwordletter eq $firstletter || $dakuon{"$lastwordletter"} eq $firstletter || $dakuon{"$firstletter"} eq $lastwordletter); } これで大丈夫と思います。
2004年7月25日(日)21:17
港
みさお様 >濁音・清音の件 ありがとうございます。 my %dakuon に書いた清音から濁音・半濁音を削除し、下三行(if〜)を移植しました。 そのおかげで、299桁まで減りすっきりしました。質問攻めで恐縮なのですが… 「よみがな」に半角である「/(スラッシュ)」だけ使うことは出来ないでしょうか? 自分でも半角文字に対して警告を発する部分であろう434〜443行目あたりを触ってみましたが、エラーが出たり、CGIが動かなくなって無理でした。 このような設定にするには、大掛かりな工事が必要なんでしょうか。 ある特定のテーマのみの「しりとり」にしているので、ラ行やワ行が出てくると、同じものの繰り返しになってしまうので… (例えば…) 奈良(なら)→長野(ら/ながの) のように、最後の文字に続くものが少ない(ない)場合の逃げ道として使いたいのです。 毎度変な質問で申し訳ございません。
2004年7月26日(月)02:47
うーん・・・
みさお
> そのおかげで、299桁まで減りすっきりしました。299桁・・・論理改行じゃなく、物理改行でってことかな?あ、桁か・・・。 > 「よみがな」に半角である「/(スラッシュ)」だけ使うことは出来ないでしょうか? > 自分でも半角文字に対して警告を発する部分であろう434〜443行目あたりを触ってみましたが、エラーが出たり、CGIが動かなくなって無理でした。 エラーが出たり、CGIが動かなくなるのは、その触り方が間違ってるんでしょうけど、 半角を含む読みを許可するのは全体に無理がありますね。 文字のチェックや最初の文字のチェック等ができなくなりますから、/が許可できたとしても、漢字や記号を含む読みであってもチェックできなくなります。 > このような設定にするには、大掛かりな工事が必要なんでしょうか。 /だけを許可する設定ってのは難しいですね。大がかりにならないでしょうけど、私には方法が思いつかない。 ご自分でがんばってもらうしかないかな。 > ある特定のテーマのみの「しりとり」にしているので、ラ行やワ行が出てくると、同じものの繰り返しになってしまうので… > 奈良(なら)→長野(ら/ながの) > のように、最後の文字に続くものが少ない(ない)場合の逃げ道として使いたいのです。 意味がわからないな・・・。 ら/ながの という場合、"ら/な"の部分は回答者が勝手に書いていいんですか? それとも指定を出すの? もし、末尾が「ら」なら、「ら」または「な」のどちらかで始まる言葉で続ける、というのであれば、 先の濁音→清音の方法と同じで大丈夫ですよ。 %dakuonの部分を、 my %dakuon = ('ら'=>'な','り'=>'に','る'=>'ぬ'); などのようにしておけば、末尾が'ら'の場合、'な'から始めても、'ら'から始めてもokになります。 もし、どんな末尾であっても、回答者が/を入れれば、あとは適当な文字で始めていいのなら・・・それってしりとり?と思っちゃうんですけど・・・。運営者の自由ですけどね。
2004年7月26日(月)06:13
港
みさお様 こんにちは。 しりとりとしての根幹を揺るがす質問でしたね。申し訳ございません。 最後がラ行・ワ行の場合は、最後の文字ではなく、最後から2個目の文字からスタートしても良いというルールにしようと思ったわけでして…例えが悪かったですね。 「最後がラ行だったから修正して2個目の文字から始めました」の意味合いで、「/」が使えたらいいなと思ったわけです。 みさお様が仰るとおり「/を入れれば、あとは適当な文字で始めていい」状態になってしまいますが、そこは回答者側のモラルに任せようと思っていました。 今は絞っているテーマを拡大したりして、ラ行・ワ行が出てきた場合も続けていけるようにします。 色々と丁寧に教えていただきまして、ありがとうございました。
2004年7月26日(月)16:15
思いつき。
みさお
最後から2番目の文字からスタートでもよい、という意味でしたか。了解。 ら/ながの という書き方にこだわらないなら、方法はあると思いますよ。sub boobyletter{ my $word = @_; my $letter = substr($word,-4,2); my $ifi=0; $letter =~ tr/ぁぃぅぇぉ/あいうえお/; return $letter; } という7行をスクリプトの一番最後にでも挿入する。 それから、shiritori.cgiの448行目、 &error(0,"「$lastwordletter」から始めてください!") unless ($firstletter eq $lastwordletter); という1行を次のように変更する。 &error(0,"「$lastwordletter」または「$boobyletter」から始めてください!") unless ($firstletter eq $lastwordletter || $firstletter eq $boobyletter); で、shiritori.cgiの424行目の次に、次の1行を挿入する。
my $boobyletter = &boobyletter((split(/\t/,$datas[$#datas]))[2]); これで、最後から2番目の文字から始めても、最後の文字から始めてもOKになるはずです。 (行数は配布しているスクリプトを元に書いてます。濁音、清音許可の変更した後では行数は異なってるはずですので、気をつけてください。) テストしてない、思いつきですが。(変更は自分の責任でどうぞ。)
2004年7月28日(水)07:37
|