Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/07/06 (木)

なでしこ3

| 23:58 | なでしこ3 - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - なでしこ3 - 雪乃☆雫のなでしこ日和 なでしこ3 - 雪乃☆雫のなでしこ日和 のブックマークコメント

 なでしこ3の0.1.0をリリースとゆうことで、まにゅあるもせっせと更新されてる風味だったのでちょっと学んでみようと思ったのです。

 前のしりとりくらいなら、簡単に移植できそうに思ったけど、甘かったorz

 なにしろ、参考に出来る物も少ないから、自分が違ってるのか、3の仕様なのか、まだベータ版ゆえの不備なのかすらわかんないコト多数;;;

 なんとしてもうまくいかず、取りあえずこんな感じ。

 しりとりのルールについて考える前の、とりあえず最後の一文字と先頭の一文字でつないでいくだけのしりとりです。

 は「なでしこ3」なので、万一奇特にもお試ししてみようとゆう方は、ここから。

https://nadesi.com/doc3/index.php?%E3%81%AA%E3%81%A7%E3%81%97%E3%81%933%E7%B0%A1%E6%98%93%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF

#なでしこ3でしりとり
#-----------------------------------------------------------
ルール=「【ルール説明】
・最後に『ん』のつく単語を入力したら負け!
・濁音半濁音はのまま(りんご→ごりら)
・小さな文字は大きな文字で入力してね(紅茶=こうちや)
・長音は読みの通りの母音で入力してね(チーター=ちいたあ)」
ルールと言う。
ルールと表示。

開始語=「なでしこ」
先頭語=。
末尾語=開始語の1だけ文字左部分。

開始語でシリトリする。

●シリトリ(Sで)
  先頭語はSの1だけ文字左部分。
  もし、先頭語=末尾語でなければ、
    「負け!」と言う終わる。
  ここまで。
  末尾語はSの1だけ文字右部分。
  もし、末尾語=「ん」ならば、
    「負け!」と言う終わる。
  ここまで。
  ダイアログIME=「IMEオン」
  「『{S}』{改行}{改行}全角ひらがなで続く単語を入力してね。」と尋ねる。
  もしそれでなければ、
    それでシリトリする。
  違えば、
    「負け!」と言う終わる。
  ここまで。
ここまで。
#-----------------------------------------------------------

 まず変わったのは、もしや繰り返しや関数の終わりに「ここまで」が必要になったことで、めんどくさいけど、色々のことを考えるとこれはこのほうがイイですよね。

 何しろ、なでしこはインデント一つ狂っただけでも事件が起きるのに、掲示板なんかじゃ当然のよーにタブや半角スペースが消えたり、全角スペースに置き換わったりされてしまうから厄介が起きまくりだけど、ブロックを明示できれば、の心配がないもねー。

 あと、配列も変わってるので、よく確認しないと。

 でもまあ、こはまず問題ないとして・・・


 「終わる」で、エラー表示になるって、一体なんで~?

 まあ、終わるからいいけど;


 カッコ閉じ」「波カッコ閉じ」が、「undefined」となってしまう。  ←0.1.6で対応されました!(10/7追記)

#-----------------------------------------------------------
「{カッコ}なでしこ3{カッコ閉じ}」と表示。
「{波カッコ}なでしこ3{波カッコ閉じ}」と表示。
#-----------------------------------------------------------

 「カッコ」「波カッコ」はこれでいけるのだから、従来どうりの記述でいいハズだと思うんだけど・・・よくわからん~。

 てゆうか、undefinedってなんすか・・・「定義されていない」・・・・・・むむむ~?

 定数として定義されてないって意味なんでしょうか(?_?)

 二重カギ括弧がふつーに使えるようになっていたから、取りあえずそれにしといたけどねーw(いいのか?!)


 して「反復」の時には、「回数」のカウンター機能が働かなくなったんですかね?

 またまた「undefined」が発生~。

 ところが、「」の時には従来どおりっぽい。

#---------------------------
Aは[1,2,3]
Aを反復
  回数言う
  対象表示
ここまで
#---------------------------
3
  回数言う
  「ワン」と表示ここまで
#---------------------------

 まあ、自分でカウンターせばいいだけなんだけど・・・

 ・・・ここで結構はまったんだよ(>_<)


 して、何よりの最大のナゾは・・・

 直前で、「開始語から先頭語取得」している「末尾語」が、「シリトリ」関数の中で参照できないこと。

 これは、いまだにナゾが解明してません(ToT)

#なでしこ3でしりとり2
#-----------------------------------------------------------
除去音=「ー-~・‥….。,、?!」。
変換音=「がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょゎっをゐゑ」
変換後=「かきくけこさしすせたちつてとはひふへほはひふへほあいうえおやゆよわつおいえ」
#-----------------------------------------------------------
●先頭語取得(Sから)
  先頭語はSの1だけ文字左部分の変換音変換。
ここまで

●末尾語取得(Sから)
  S=Sから除去音除去。
  末尾語はSの1だけ文字右部分の変換音変換。
ここまで
#-----------------------------------------------------------
●除去音除去(Sから)
  除去音を文字列分解反復
    S=Sの対象置換。
  ここまで
  Sで戻るここまで

●変換音変換(Sの)
  回数=0
  変換文字=変換後を文字列分解。
  変換音を文字列分解反復
    もし、S=対象ならば、S=変換文字@回数
    回数回数+1
  ここまで
  Sで戻るここまで
#-----------------------------------------------------------

#-----テスト------------------------------------------------
ルール=「【ルール説明】
・小さい文字(拗促音)は大きくするよ(カボチャ→やさい)
・濁音半濁音は清音と同様に繋げられるよ(りんご→こまつな)
・長音は無視できるよ(チーター→たぬき)」
ルールと言う。
ルールと表示。

開始語=「なでしこ」
先頭語=。
末尾語=開始語から先頭語取得。

開始語でシリトリする。

●シリトリ(Sで)
  先頭語はSから先頭語取得。
  もし、先頭語=末尾語でなければ、
    「負け!」と言う終わる。
  ここまで。
  末尾語はSから末尾語取得。
  もし、末尾語=「ん」ならば、
    「負け!」と言う終わる。
  ここまで。
  ダイアログIME=「IMEオン」
  「『{S}』{改行}{改行}全角ひらがなで続く単語を入力してね。」と尋ねる。
  もしそれでなければ、
    それでシリトリする。
  違えば、
    「負け!」と言う終わる。
  ここまで。
ここまで
#-----------------------------------------------------------

 シリトリ関数内では末尾語が「undefined」になってしまっているため、実行するといきなり「負け!」と言われてしまいます(´д`;

 シリトリ関数自体は、冒頭のものとほとんど変わってないですよ?

 「先頭語取得」関数の方が良くないのかと思いきや、先頭語取得せず、最初のと同様に「末尾語=開始語の1だけ文字左部分」としてもダメ、さらには、末尾語=「な」などとしてもやっぱりダメなんですからね。

 むむむむむ~(@_@)

ゲスト



トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20170706