新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Rubyで遊んでました。Quick_Sort

2017-09-29 23:21:48 | パソコン

再帰的にするようです。詳しくは分かりませんが、大体の事であれば何とか、言えるかもしれません。

真ん中名の要素からキーを作ります。キーがその真ん中より大きいか小さいかで、二つのグループに

分けます。

その各グループで同じく繰り返します。その辺が再帰的になってるんですが、もっとデータ量を増やして

デバックで追ってみることも必要でしょうかね。

でもこれだけのソートではいくら高速と言っても、面白くないですね。Rubyの場合だったら一行で書ける

でしょうからね。実際はレコードになっていて、そのキーでソートしたらば、であればいくらかはソートの結果

が有効でしょう。

 

試しにやって見ました。一行でsortは終わります。"(-""-)"


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。hashキーがダブった場合。

2017-09-28 16:08:10 | パソコン

 

 

hashのキーが同じものが出た場合、本来格納すべき場所から空きがあるとこまで、順にみていきます。空きがある

ところへ保存します。別の方法では、リスト構造で保存する方法もあるようですが、Rubyのそれは全く意味不明。

C言語のポインタ関係が出てくると、全く分かりません。

なのでhashも終わりにします。"(-""-)"


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。sort

2017-09-28 15:42:09 | パソコン

一見だとddとdは違うものと思いたくなるんですが、これだと同じものですね。dとddは同じところを

指してるという説明になるんでしょうか?

 

元のデータを取っておくには、ddをdからの複写で取っておくしかないですかね。これだと別々に指してる

ことですか?

 

ba_sortで帰る時にオブジェクトを指さない、returnでも良いんでしょうが、指さないとiの値ですか?

それになるので、methodから抜けるときは、明示した方が良いように思います。この辺は便利なこと

不便なとこですかね。

sortならコメントの通りでできるので、methodは要らないでしょうね。しかもforは片隅に追いやられ

そうです。gotoが無いのも少しだけ違和感あるんですが。"(-""-)"


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。Structとhash

2017-09-27 06:39:38 | パソコン

aryはStructだからと言う事は無いようです。配列は配列なんですかね。そこへ入れるものが、Structの

インスタンスだった、と言う事なんでしょうかね。「C言語による実用アルゴリズム入門」から例題を参考にして

Rubyで置き換えてます。

C言語などではStructの配列を確保してからの作業になるようですが、若干雰囲気が違うようです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。hashに付いて。

2017-09-26 15:43:52 | パソコン

「C言語による実用アルゴリズム入門」林晴比古著から、hashを少しだけやりたいです。どこまで出来るか

分かりませんが。「Rubyプログラミング入門」ではhashも説明があるんですが、キーがダブった時の説明が

無いので、またやって見てもいないのでどうなるんか分かりません。

「C言語による実用アルゴリズム入門」では最初からダブった場合の説明があります。結構面倒なので

Rubyで出来るか分かりませんが。

取り敢えず、一番簡単な、説明の取っ掛かりは出来ました。

追記

 例えば、住所録みたいなもので名前からhashを作った場合は、絶対にキーがダブらない保証は無いでしょう。

そんな時はどうするんだと、思ってました。しかし、「C言語による実用アルゴリズム入門」でも、その説明ではなく

hashの出力がダブった場合の説明のようです。なので、名前からhashを作ったとして、名前はダブってはいけない

し、「Rubyプログラミング入門」でも説明がないのは、そのためでしょうか?

 Rubyのhashはキーがどうのこうのと言う事は、システムが解決してるんでしょう。多分ですが。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。バイト単位の枚挙:each_byte

2017-09-26 08:38:18 | パソコン

これは納得。

 

P88の後半からP89の前半。動きません。"(-""-)"


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。行単位の枚挙:each

2017-09-26 08:24:10 | パソコン

上の図の中ほどはエラーで駄目でした。to_aは今は無いようなので、無理かも。aryにsplitした

ものが入るんですが、\nが付かないので、あとからつける形で例題の結果は出来ました。

「Rubyプログラミング入門」のサンプルは時々動かないものがあるのですが、原因はハッキリしません。

ubuntuなら動くこともあるし、今回はP88からP89にかけての行単位の枚挙:eachは全て動きません

でした。

 

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。`END_OF_CMD`

2017-09-25 17:02:13 | パソコン

「Rubyプログラミング入門」P87には引用終了識別文字列をバッククォーテーションで囲めば、各行をコマンドとして

実行と在るんですが?

原因はどうやら、p << 'END_OF_CMD`となっていて、最初のバッククォーテーションの前にスペースを一個

入れていたのが原因のようです。

今回からはUbuntuの実行画面はスクリーンショットで保存。その後USBへコピーします。それをGalleria2へ

持って行ってそこから、アップロードは出来ました。やはり画面は鮮明です。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。ヒアドキュメント。

2017-09-25 16:28:30 | パソコン

「引用終了識別文字列」(上の二つの場合は、"This is"とThis_isと言う事でしょう。)で始まり、次行から次々と

拾って、一行が引用終了識別文字列に正確に一致する手前までの行を値にする。"This is"とThis_isの違いは

スペースが在るか無いかで違うんでしょう。処理は全く同じです。

最後のfooは少し複雑です。よく分かりません。p barは本の内容と違います。「Rubyプログラミング入門」P88

ではp bar #=>"D\n"と在るんですが?

=beginから=endはエラーになるのでコメントにしました。ubuntuなら動くんでしょうかね。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。コマンド出力。

2017-09-25 09:47:53 | パソコン

やってることは簡単ですが、WindowsのRubyでは動きませんでした。Ubuntuでやったら動きました。こう言うことも

あるんですね。

d.rbの内容はp `date`という一行だけです。

あと一行追加しました。p %x!ls -la!意味はよく分かりませんが、Windowsのdirのようなものでしょう。

多分オプションが付いてるようなので、アルファベット順に揃てるのかもしれません。しかしこれでは見づらい。

できれば、一行で一つのレコードだと良いのですがね。動くことの確認ですので、良いですかね。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。文字列リテラルと各種出力。

2017-09-25 08:40:50 | パソコン

文字列リテラルの確保方法と各種出力と題を付けましたが、整理ができてません。細かいところが分かりません。

気づいたところを箇条書きすると

  1. pとputsは出力の最後は改行が入る。
  2. printとprintfは最後に改行が入るか入らないかは、文字列による。
  3. シングルクォーテーションで囲まれた場合は、¥nはそのままで改行の意味を持たない

細かい制御が必要ならば、やはりprintfですかね。難しく考えると、整理できなくなるので、まずはこれ位で。

あとは必要であれば、調べる。で行きますか?


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。===とは何ぞや。

2017-09-24 15:35:52 | パソコン

基本的には == メソッド

オブジェクトIDを比較したい時は equal? メソッド

所属性を確認したい時は === メソッド

eql? メソッド は見なかったことにする。

結論を言えば上のようになると言う事です。===は所属性を比較すると言事のようです。

上のスクリプトには===が入ってないように思えますが、実際にはそれを行ってると言う事です。なので

所属性が分かる。取り敢えず、スクリプトのオブジェクトを作って、判断させてみました。breakは要らない

様ですね。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。素数の計算。エラトステネスの篩。

2017-09-23 21:12:26 | パソコン

初め、配列の要素をその都度delete_atで削除したら、どうも旨くループしてくれませんでした。削除は纏めてする

方法に変更。内容を0にして置く。最後にまとめて削除したら旨くいきました。

次の要素を調べる方法もいい方法があるようです。例えば2の倍数を調べるときは、最初が0のindexとすると

次の要素はindex+2で良いわけですからね。index+1は調べなくて良いです。数が大きくなると飛ばす数も

増えるので速くなるんでしょう。

上を少しだけ直して、下になりました。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。eの計算その7。BigDecimalを使いました。

2017-09-23 18:19:33 | パソコン

前に「C言語による実用アルゴリズム入門」からshort intの配列を使って、高精度の数値計算をやって見てました。

勿論それはそれで良いんでしょうが、Rubyのマニュアルにπの計算が載ってました。それによれば、BigDecimalを

使って、小数点以下を計算してました。

何とかできないものか、四苦八苦してみました。上の図の後半部分の数行で何とかなりましたよ。特別なテクニックも

要りませんでした。驚きです。( ;∀;)

仕上げはループ回数です。やみくもにループしないで、収束したら終わるですね。10の-1001乗で1000桁まで

誤差が出ないようです。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Rubyで遊んでました。ローカル変数のスコープ。

2017-09-23 12:13:07 | パソコン

for文でのローカル変数iはforから抜けてからても、有効です。puts iで9がプリントされます。これは例外と言う事です。

一方のeachではxはブロックから抜けると無効です。print xはコンパイルエラーになります。

下の方のdef ANDはスクリプトではこう書けるという例のようです。AND(true){Treu}でtrueが返りますが、どちらかが

falseならfalseですので、ANDと言う事だと思います。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする