Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2017/10/15 (日)

表右回転?

| 21:10 | 表右回転? - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - 表右回転? - 雪乃☆雫のなでしこ日和 表右回転? - 雪乃☆雫のなでしこ日和 のブックマークコメント

マイナビ連載13目「SNSで縦書きしたい - テキスト転ツールを作ろう」(http://news.mynavi.jp/series/nadeshiko/013/)は、とっても面白かったです☆

 こうゆうことをして遊ぶのは大好き♪

 コレは、学習内容としては要するに、二次元配列について学ぼうとゆうことですね。

 このブログを書き始めた頃には、配列いうものがあんまり分かっておらず、とくに二次元配列なんて、まったく理解してなかった;

 思えば、ズイブン賢くなったような・・・?(嘘;)


 それはさておき、なでしこ1となでしこ3では、配列の仕様がだいぶ変わりました。

 なでしこ1では、csv形式で一括指定することが出来て、感覚的にも分かりやすくて良かったんだけど・・・ジェイソンってなんすか?

 なんかもー、マスク被ってチェンソー振りしてる人しか思い浮かばないよ~;;;

 ・・・と思いつつ調べてみたら、なんとジェイソンさんはチェンソーでは一も人殺しをしていないとゆう、衝撃のトリビアを知ることができました(違;)


 っソレはともかく・・・;

 JSONは、なでしこ3のマニュアルの配列とオブジェクト(https://nadesi.com/doc3/index.php?%E9%85%8D%E5%88%97%E3%81%A8%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88)にも書いてあるとうり、配列とオブジェクトの二つの型があるようですが、何はともあれ配列です。

 マニュアルには、二次元配列のコトは書いてないんだよね。

 して、マイナビの記事のサンプルにもあるとうりに、いっこいっこ代入していくのは分かるんだけど、一括指定はどうするんだろうと思っていたのが、わかりました。

 なんか、タブン、こんな感じ。

テスト配列=[
["たろう",60,"taro"],
["じろう",80,"jiro"],
["さぶろう",50,"saburo"]
]

 いたってふつーでしたw 何も難しく考えることはなかったww

 やっつけでお試しした時にうまくいかなかったのは、単に文字列を""で括ってなかっただけでした;;;

 ただねぇ~、文字列を、全て""で括らなきゃないってのは、何気にめんどーですね。

 ワタシは、文字列の場合が多いので><

 なでしこ1にはあるCSV取得あるとイイですよね。エクセルとかで作ったデータを読ませれるし。

 CSV配列にするのは、改行で区切ってさらに各行を「,」で区切れば簡単にできそうだけど、それだけだとデータにカンマや改行が含まれていた場合にはダメだよね。

 たぶんだけど、正規表現かなんかを駆使して、""と、"で括られている中にある改行とカンマを探して、別の記号に置換してやってから区切って、また元に戻す的な・・・?

 まあ、ワタシなんかはそういうことはほとんど無いですけどね~w


 あとねー、区切りが改行じゃないので当然っちゃあ当然なんだけど、配列を「言う」とかで表示して見ようとしてみると、全部繋がって表示されてしまうんですよ~。

 行だの列だのが、途中ですぐにこんがらかって分かんなくなっちゃい、いちいち何でも言わせて確認しているワタシなんかにとっては困ったもんだとゆうところ。

 これも、表CSV変換あると、イイですよね~。

 とりあえずマイナビの記事と同じようにして、配列反復させてそれ改行をくっつけて変数代入してみます。

CSV化(Aを)
  結果とは変数。
  Aを反復
    結果=結果それ改行。
  ここまで。
  結果で戻るここまで。

テスト配列言う。
テスト配列CSV化して言う

 やっぱりこれも、これだけじゃCSVとしては改行やカンマなど""で括らなきゃないようなデータのある時にダメだよね。でも、ちょこっと言わせて配列の内容を確認する用としてはいい感じ♪


 こんな感じで(?)なでしこ1には、表(二次元配列)を扱う命令が各種色々取りろっていて、「表行列交換」とか「表右回転」とかゆう便利な命令もありました。

 表右回転があったら、それだけでテキストの転だって、もうほとんど出来たようなもんだったですよねぇ~w

 ですが、記事を読んで、どうやって表を転させるのかが分かりました。結構地道です。

 して、表行列交換が、表右回転の一歩手前だとゆうことも分かりました。

 でっ、ほとんど記事のコードの流用だけど、表右回転にしてみた。

表右回転(Aを|Aの)
  仮表=配列。
  列数とは変数=Aの配列要素数。
  行数とは変数=1。
  Cとは変数。行とは変数。列とは変数。
  Aを反復
   C=それ配列要素数。
   もし、C>行数ならば行数=C。
  ここまで。

  # 仮表を初期化
  行を0から(行数-1)まで繰り返す
   仮表[行]=配列。
   列を0から(列数-1)まで繰り返す
    仮表[行][列]=。
   ここまで。
  ここまで。

  # 仮表に行と列を取り替えてAのデータを配置
  行を0から(列数-1)まで繰り返す
   列を0から(行数-1)まで繰り返す
     仮表[列][行]=A[行][列]
   ここまで。
  ここまで。
  #ここまでで「表行列交換」

  # 転させる
  行を0から(行数-1)まで繰り返す
   仮表[行]を配列逆順。
  ここまで。

  仮表で戻るここまで。

#結果確認よう
●CSV化(Aを)
  結果とは変数。
  Aを反復
    結果=結果それ改行。
  ここまで。
  結果で戻るここまで。
#-----------------------------------------------------------------------
#以下はテスト
テスト配列=[
[1,"太郎","たろう",60,"taro"],
[2,"次郎","じろう",80,"jiro"],
[3,"三郎","さぶろう",50,"saburo"]
]

結果1はテスト配列表右回転
結果2は結果1の表右回転

テスト配列CSV化して表示。
結果1をCSV化して表示。
結果2をCSV化して表示

 どうかな? うまくいってると思うんだけど・・・

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