goo blog サービス終了のお知らせ 

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

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

「Bulls and Cows」VBで書いてみました。Secretは4桁の乱数ですが…。

2023-05-28 20:22:35 | C#、VBなど

random4degitは、4桁の乱数ですが、同じ数値を使わない。1123とかは出ないようにしてます。dflagがtrueの間は、乱数を作り続けます。


ジャンケンをVBで書いてみました。殆どScalaと同じですが…。

2023-05-27 21:03:41 | C#、VBなど

 41行目から46行目、注意でした。数字から文字に変えると、サインの分かスペース1個入ります。また、Scalaだとメソッドのリターンの時、thisを書かないとUnitになるくらいが違いですかね?VBだと、クラスの定義にクラスパラメータを取れない。Scalaの場合だと、基本コンストラクタを構成する。てっかメンバー変数になる。のかなあ?

コンピュータの手は乱数を使ってません。Scalaだとprintf使えて、C言語の記憶が使えますが、VBでは使えないでしょう。面倒です。


再び、フィボナッチ数列。実行が停止したように見える原因は、スタックが関係していると思います。

2023-05-12 21:53:07 | C#、VBなど

 fib、fib2、fib3とありますが、データの型をDecimalに変更。フィボナッチ数列の128番目までは、大丈夫です。Bigintegerなる型もあるようですが、使い方が分かりません。どうやらfib2、fib3は末尾再帰で、スタックを消費しないようです。コップ本P169に、末尾再帰では、呼び出しのたびに新しいスタックフレームを作ったりしない、とあります。fib(50)でもエラーは起きませんが、実行が中断した感じになります。fib(128)でも同様です。実行が中断した感じに見えるのは、スタックのトラブルが起きているのかもしれません。


フィボナッチ数列、雑感。cametanさんのブログを参考にしてます。

2023-05-12 08:56:05 | C#、VBなど

Pythonのコードはそのまま、cametanさんのブログからです。

fib(128)を行うと、ものすごく大きな数値になりますが、pythonは何もなかったかのように出力します。

参考したコードをVBで置き換えてみました。

 fibは、一番単純なものですが、三項演算子を使ってみました。fib2、fib3はcametanさんのブログからです。VBだとLongとかIntegerの範囲を超えられません。Big Numberとかもあった気はしますが…。全てがそうですが、探せばやる方法はあっても、指定しないと出来ない。そんな感じのことが多い気がします。fib(128)を実行するとエラーは出ませんでしたが、分析とか解析みたいなことが始まりました。オーバーフローしてると思います。静的型付け(Scala,VBなど、多分)、の限界なんですかね?Scalaでもfib(128)はマイナス表示でした。

 Visual Studioはpythonも使えますので、例をそのまま貼り付けました。


cametanさんのブログにあった1から99までの英語表記をVBでやってみました。

2023-05-07 10:12:43 | C#、VBなど

cametanさんのブログにあった問題です。Pythonの回答はありました。

20を超えると、最初にOne_Nineteenを呼んで、次にTwenty_Ninetyが呼ばれ、再度One_Nineteenが呼ばれるようです。


cametanさんのブログにあったジャンケンをVBでやってみました。その4。

2023-05-06 19:47:13 | C#、VBなど

 Select Caseのオンパレードみたいになりましたので、配列で出来そうなとこは直しました。SuuryoCheckのIfは三項演算子が使えないか、やってみましたが、条件の部分は、良いとして、yesとnoの場合のとこには、演算は書けないようです。例えば、If(<条件>, katisu +=1, katisu = 1)のように。参考にしたサイトでは、dim a = If(…)となってましたので、代入文以外なら良いのかもしれません。

乱数を使っていると言っても、数の出方は同じ傾向のようです。gは勝ちが多いし、çは負けが多いし、pが一番勝ちと負の数が比較的同じのようです。


cametanさんのブログにあったジャンケンをVBでやってみました。その3。

2023-05-05 21:06:08 | C#、VBなど

 

 自分の手を、g、c、pで入力すると、コンピュータの手は乱数なので、どこかで合わせる手続きが必要になるのが、良くないとと言えば、良くないのかもしれません。cametanさんコードから離れてしまったかもしれません。


cametan_42さんの問題でもう少しやってみようか?

2023-03-19 09:09:46 | C#、VBなど

自分は出来てから、分けるのが好きなので、FunctionとSubで分けてみます。

 VBの場合、ByValとかByRefとか関数の引数に付きますが、少しあやふやですが、単一の変数以外であれば、例えば配列などの場合は、参照渡しになるようだ、と思ってます。この辺も解釈がいろいろあって、自分の考えもはっきりしませんが、アドレスのコピーが渡されると解釈する方も居るようです。なので値渡し以外無い、とか。

 一応動いたので、良いとは思いますが。(笑)

 入力データのチェックは、単に入力されたものが、allcardになければエラーで、再入力する、だけで良いように思います。


cametan_42さんの問題、今度は良いかも?

2023-03-17 22:09:06 | C#、VBなど

トランプの数を簡単のために、1から5にします。

 エラーチェックを入れると結構複雑になるようなので、取り敢えずは省略。一度入力したらそれを以降無効にするのが、面倒そう。でもないか?文字列にない時はエラーでいけますね。出力が思った以上面倒になったのは、発想が悪いせいかも。


cametan_42さんの宿題で、自分の回答に間違いがありました。

2023-03-17 09:31:52 | C#、VBなど

 52行目から54行目です。今はトランプの各柄(スペードなど)があれば良いのですが、手持ちのカードの枚数が多くて、トランプの文字列データが消されるものが多くて、例えばスペードのカードが全部、手持ちだった場合を考えてませんね。やっぱり、なにかある(笑)

 


cametan_42さんからの宿題?其の2。

2023-03-15 09:15:48 | C#、VBなど

 前回は、出力まで行ってなかったので、追加しました。エラーチェックはしてません。

VBを使うとLoopしてしまいます。言語によってスタイルが決まる?

だいたい課題のとおりだと思いますが、改良するところはあるんでしょうね。(笑)

少し悩んだのがsubstringの使い方、パラメータが2個あると1個目は文字列の位置ですが、2個目は位置ではなく、個数です。