他カテゴリ

超越コボラーの逆襲

sphiarno-88's icon'
  • sphiarno-88
  • 2022/01/21 12:49

前回は、COBOLでコラッツ予想をやってみました。しかし、その成果たるや非常に残念なものになりました💧

 

上を見上げて駄目なら、下も見る。ということで、COBOLに負けそうな言語を探してみました。コボラーの逆襲です。「なでしこ」という日本語で入力できる言語を発見しました🌰

 

これは、これは…どうも見た感じ、学習用の「トイ言語」感たっぷり。この言語は、事務女子がターゲットなのか、事務女子をターゲットにした「オタク男子」がターゲットなのか、そのあたりはよくわかりませんが、これならCOBOLでやっつけれそうです💪

 

🌸なでしこさん登場🌸

公正性を保つために、標準のアルゴリズムで書いてみます。事務女子だからって、ハンデもあげないし遠慮はしないぞ、うへへへ…😎

そして、これが「なでしこさん」のコードだ。(実装は、実は3種類ありますが、大人の事情でまだ秘密です)萌え萌え~😍

●(Nで)コラッツ関数とは
  距離は、0。
  !(N=1)の間、繰り返す
    #Nを表示。
    距離は、距離+1。
    もし、(N%2)が0ならば
      Nは、N÷2
    違えば
      Nは、N×3+1
    ここまで。
  ここまで。
  距離を戻す。
ここまで。

●コラッツプログラム実行とは
  条件数は、1。
  (条件数=1)の間、繰り返す
    「いくつのコラッツ関数?(0:まとめて)」と尋ねて、指定数へ代入。
    もし、指定数=0ならば
      「それじゃあいくつまでのコラッツ関数?」と尋ねて、マックスへ代入。
    違えば
      時間ミリ秒取得して開始時刻に代入。
      結果は、コラッツ関数(指定数)。
      時間ミリ秒取得して終了時刻に代入。
      計算時間は、整数変換((終了時刻-開始時刻)×1000)。
      「{指定数}の距離は{結果}です(かかった時間:{計算時間}マイクロ秒)」と言う。
      条件数は、0。
    ここまで。

  もし、条件数=0ならば
    「もう一度やる?(0:NO、1:YES)」と尋ねて、条件数へ代入。
  違えば
    合計は、0。
    時間ミリ秒取得して開始時刻に代入。
    Xを1からマックスまで繰り返す
      結果は、コラッツ関数(X)。
      #「{X}の距離は{結果}です」と言う。
      合計は、(合計+結果)%1000000007。
    ここまで。
    時間ミリ秒取得して終了時刻に代入。
    計算時間は、整数変換(終了時刻-開始時刻)。
    「{マックス}までの総距離の暗号は{合計}です。(かかった時間:{計算時間}ミリ秒)」と言う。
    条件数は、0。
    ここまで。
  ここまで。
  「お疲れ様でした🌸」と言う。
ここまで。

コラッツボタン=「コラッツ開始」のボタン作成。
コラッツボタンをクリックした時には
  コラッツプログラム実行。
ここまで。

 

な~にが「お疲れ様でした🌸」か。お前は、今からケチョンケチョンになるんだ。うひゃひゃひゃひゃ。ということで、実行してみちゃうぞぉ~。「コラッツ開始」をポチッとな❗

Content image

 

え~いっ!!むちゃくちゃな数字を突っ込んでやるぅ~❗

 

Content image

 

むっ!…むむむっ!!マイクロ秒単位とは何事か!

ま、まあ数字はひとつだし、なかなかやるようだが、たいしたことはないだろう…今度こそ終わりだ。無理かもしれないが、十万まで全部をつっこんでやるぞうぅ!!ひゃっ、ひゃっ、ひゃ!え~い!!

 

Content image
答え合わせの値(暗号)は一致してますので、ちゃんと計算しています。

 

な、なんだとぉ~~!!これは、COBOLよりも速いが、よく見るとPython3(1120ms)よりも速いではないか。ど、どういうことだ。俺は…俺は、こんな事務女子に負けてしまったのかあぁ……😵

 

……ということで、超越コボラーは「なでしこさん」をケチョンケチョンにするどころか、逆にクールにケチョンケチョンにされてしまうのでした👩

それでは、大人の事情…種明かしをお話すると、これは実質のジャバスクリプトで、ノードJS上で実行したものです。実装が3つというのは(なでしこ1も含めるともう1つありますが)、ノードJS版と、あとの残りはウェブブラウザー版と、PHP版があります。そりゃ、速いや🚄

ノードJS版は、エレクトロンがうんにゃらかんにゃらというやつです。いわゆるWebアプリケーションを、デスクトップでマルチプラットフォームに扱うためのものです。マックが、ウインドウズが、リナックスが、という闘争は今後も続きそうですが、Webアプリケーションからは平等のようです🌞

こちらが、ウェブブラウザ版の実行状況です。

Content image

 

そして、こっちがPHP版の実行状況です。

Content image

 

Content image

 

簡易ブラウザー版なので、こちらから確かめることができます。ウェブプログラミングで重要な、変数の型チェックはしてないので、数値以外は入力しないでね。ブラウザがフリーズします(後でエラー表示されます)❌

 

😂仕方ないので…😿

仕方がないので、SCRATCHをコテンパンにして、なんとかCOBOLに活路を見いだしてみたいと思います。SCRATCHって、なんなんでしょう?JSぽいですがRubyとかなのかな??似たものにスモウルビィというものがあります。Rubyに変換されているものを見れるので、学習用としてはこちらの方がよいかもしれません(なでしこさんは動作環境がいくつもあるので、導入までが意外に面倒です…)😰

 

 

 

Smalrubyは、何でも小学生向けの環境で文科省公認っぽいですが、それにしても今時の小学生はすごすぎます…

SCRATCHの場合、0については、0なのか、「0」なのか、NaNなのか、なんなのか(なんだそりゃあ)、よくわからないという微妙なはまりポイントがあったので、そこだけ等号(:=0)にせず不等号にすることで解消しました。画面からは見えませんが、「=か?==か?===か?」みたいなのが影響しているのでしょうね❓

Content image
ベンチマークしないときは、ネコ?を走らせてました。

 

Content image
それほど遅くない

なんとか、COBOLの面目を保つことはできました。が、ビジュアル的に走らせながら計算させるのは楽しいですね。最近のコンパイラーやパッケージマネージャーなどの実行時間がかかるものは、プログレスバーもそうですが、コマンドラインに対していろいろなビジュアル表現があるので、こういうのは大事かもです🏃

なお、いつもはUbuntuからの記事が多いのですが、今回はWindowsです。Windows11では、PowerShellにかわりTerminalがデフォルトのコマンドライン環境(というよりはそれらをまとめた画面)になるようですが、ビジュアル面にもいろいろこだわっているようです👢

この記事のトップ画像がそれになるのですが、コマンドラインの背景に画像を設定、フォントをPlemolJPのNerdFontモデルに、飾りはOhMyPosh(何じゃそりゃですが、OhMyZshの変形らしいです)で、レトロスタイルを加えネオンちっくにしてみました✨

 

 

「まあ、こういうのは大事ですが、使い手がね…」なんて、言わないでね🎂

 

☕~ おしまい ~☕

Supporter profile icon
Article tip 1人がサポートしています
獲得ALIS: Article like 189.21 ALIS Article tip 7.10 ALIS
sphiarno-88's icon'
  • sphiarno-88
  • @sphiarno-88
くるくる回る人

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
ビジネス

海外企業と契約するフリーランス広報になった経緯をセルフインタビューで明かす!

Like token Tip token
16.10 ALIS
Eye catch
クリプト

ブロックチェーンの51%攻撃ってなに

Like token Tip token
0.00 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
ビジネス

ブックオフで買ってきてアマゾンで売る仕事の1ヶ月の売り上げ公開

Like token Tip token
182.41 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
他カテゴリ

SASUKEオーディションに出た時の話

Like token Tip token
35.87 ALIS
Eye catch
他カテゴリ

京都のきーひん、神戸のこーへん

Like token Tip token
12.10 ALIS
Eye catch
トラベル

無料案内所という職業

Like token Tip token
84.20 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS