johmonjin のすべての投稿

Rustによる新しい取り組み

はじめに

新しい挑戦です。久方ぶりにプログラミングの本を紐解いています。プログラミング言語の代表格としてC, python, Rubyなどを挙げることができます。業務としてJava, C, JavaScriptなどを扱ってきましたが一線を退いてから本格的に触れたのは今回が初めてです。

Rustの概要

今、かじり始めた言語は「Rust(ラスト)」であり、Tim McNamara著『詳解Rustプログラミング』を読み始めたに過ぎません。

プログラミング言語も進化するものであり1000種にも及ぶ言語が生まれたとされています。

上記の解説書によればRustの3大特色は
①性能
②並行性
③メモリ効率
を謳っており中でも並行性に重きをおいています。

Rustの特徴

Rustはシステムプログラミングの分野に色分けされており、最初に学ぶプログラミング言語としてはハードルが高いと思われます。Cとくらべると曖昧性がなくなり文法チェックが厳しくなっています。

この言語を学ぶきっかけは、Bluetooth Low Energyソフトウェア開発キットで開発されたアプリをスマホ&パソコン上で走らせるためです。

BLEはわきに置いておいて、当該解説書が推す開発環境を整え用意されたプログラミングコードをダウンロードして実践的に取り込んでいます。

上の図は https://products,sint.co.jp を引用

著者のTim McNamara氏 が用意したプログラミングコードは、学習のため故意にコンパイルエラーが起きるように仕立てられ修正を加えながら完成版を作っていきます。

コンパイラが出力するエラー表示はエラー発生場所と原因を表示します。解説書とコンソール表示されたエラーコードを参照してエラーを除去することができます。

今後の取り組み

Rustはこれまで扱ってきた言語にはない機能が織り込まれており一朝一夕に理解することはできません。徐行運転で進めて参ります。理解できたと思われる内容を少しずつ投稿していきます。

今から間に合う自由研究

自由研究のいろいろ

クーラーにかかる電気料金を節約して屋内にいながら熱中症で命をなくす痛ましいニュースを目にします。高齢者にも電化製品の一時間当たりの消費電力が適切に知らされていれば異なる結果になっていたかもしれません。

そんなものはすでに発表されているのでいまさら意味がないでしょうと言わずに発表してください。

そのほかにも役立つ自由研究はたくさんあります。一例を以下に挙げます。暑さにめげず頑張って欲しいです。

各種電化製品の一時間当たりの消費電力
テレビ、ラジオ、電灯、蛍光灯、冷蔵庫、トースター、クーラーなどの電力消費の節約とそれから生じる損失などを考える資料になるでしょう。

新聞や雑誌で使われる書体について
資料から世の中に存在するたくさんの書体を挙げて用途と紐づけると内容が充実します。

  フォント2例
電子機器で使われる書体を実際に表現

HTMLプログラミングできる範囲で十分ですが、代表的書体である明朝体とゴシック体の下記に挙げたサンプルから拡張できます。少なくも5~6例は欲しいところです。

明朝体とゴシック体を表示するHTMLコード

<html>								<!-- 書体のいろいろ, HG明朝E, HGゴシックM… -->
<head>
<meta charset="utf-8">
<style>
.style {float: left;}				/* floatの効果はstyle全体に及ぶ */
</style>
</head>
<span style="font-size:64px; font-family:HG明朝E;">あ</span>
<span style="font-size:64px; font-family:HGゴシックM;">い</span>
</html>


有名な数学の定理を挙げる
ピタゴラスの定理、フェルマーの定理などにおいて、発見されたときの逸話や証明できた人への賞金などのエピソードを一言寄せると評価者に喜ばれるでしょう。

  円周、2つの円周の差の求め方
円周率の歴史
紀元前2000年頃には22/7=3.142857など精密な近似値が使われていました。

ずっと時代が進んで手計算で求めた途中に誤りが発見されたことなどを添えると円周率の歴史に厚みが増すでしょう。

見た目と実際の違いを解明する
東京山の手線の線路の幅を1mとしたときの内周と外周の差、学校のグランド400mとそれよりも1m大きくした周りの差を調べます。

   地球を歩く
地球の地表の1m上を歩いて1周できると仮定し元の地球との差を考えることも同じです。

数式を基に解き明かすと実態とは思った以上に差がなく半径の値に無関係で2つの半径の差に依存し差が1mであれば6.28mであることが判ります。

bingo13

歯車13個からなるビンゴゲーム

2行目に7が1~3個、333, 666, 888, 999などが出ればファンファーレが鳴り響く。

スパーキング ビンゴゲーム
0 1 2 3 4 5 6 7 8 ©2023 TacM, Ver0.10

 

人手不足に協力

適切な運送方法

運送業務に携わる運転者の労力不足が取りざたされています。複数回配達を避けたり、配達総量を減らすことが叫ばれています。

複数回配達をなくす方法は無人のサテライトのような場所に仮置きする方法があり、受取人が通知された暗証番号を入力して受け取っていたのを目撃したことがあります。

写真やDVDを宅配で送るのは今どき、贅沢な送り方と言えます。結婚式の記念動画をDVD単品で送るのはもう止めて欲しいです。なぜなら動画を再生するDVDレコーダーやDVDドライブ付きパソコンを持っている人は多くいません。

今は個人や会員だけの動画をユーチューブなどにアップロードして限定公開できる時代になりました。この方式ならば送料は通信費だけであり、通信費は従量制でなく定額だから宅配便と比べ格段に安い費用で済みます。

また、ユーチューブなどにアップロードした動画はパソコン、タブレット、スマホなどのデバイスを限定せず閲覧の容易さが特長です。

時間と経費の節約、あて名書きの手間などの煩わしさからの開放に加えて、国民全体の配達総量を減らすことができます。付きあいの広い方が多人数に送付するときは絶大な効果を生むことでしょう。

便利さと危険は隣り合わせ

リスク回避

名だたる組織であるドコモ、au、ソフトバンクの3大キャリアでさえも時々、事故が起きます。事故が起きて非公開の写真が公開されたら問題です。

期間をあらかじめ決めておき、限定公開で会員に見てもらったら必要な方にはダウンロードすることをお薦めして、公開基準を非公開に変更したり限定公開を中止すべく削除すると安心です。

sparking BINGO

横長ボタンを押してストップ&スタート🎯️
2行目に7,70,77,700,707,770が出ると当たり、777☞大盤振る舞い
紙吹雪乱舞、特賞・1等賞・2等賞ごとにファンファーレ鳴り響く

スパーキング ビンゴゲーム
012345678©2023 TacM, Ver0.01

ネット後進国からの脱出

踏ん切りが大切

このたび、長年の懸案であったブログをSSL化する難題を実現させてホッとしています。情報を暗号化せずに平易な通信を非SSL通信、暗号化して盗聴などの心配を払拭した通信をSSL通信と呼びます。

前者のサイトアドレスがhttp://から始まるのに対して後者はhttps://から始まるアドレスであり、通信を担当するブラウザは数年前から、非SSLに対して『このサイトは保護されていません』というメッセージが出力されるようになっています。

今までこのサイトは怪しいですと言われているようで穏やかではありませんでした。

非SSL通信は違法ではありませんが自転車運転に例えれば、ブレーキの甘い運転と言えます。買い物などに自転車を使う分には問題ありませんが急な飛び出しなどにはブレーキが甘いと危険が伴います。

SSLに移行するには経費はそう掛かりませんが過去との継続性でなかなか踏み切れません。

今までだましだまし非SSLでやってきた輩(やから)からとやかく言われたくないという声が聞こえてきますが踏ん切りがつかないと実現できません。

最悪、ブログが閉鎖に追い込まれることになりかねません。清水の舞台から飛び降りる思いで決行したところ「かすり傷」程度の被害で済みました。

踏み切る前に主だった県のホームページを調査したところ、ほとんどの県でSSL化に変更済みでしたがある県では未だに非SSLでした。

予算は十分にあるでしょうから迅速な対応が求められます。

ナンバープレイスへの挑戦

ナンバープレイス自動解法ソフトの開発

このところ、脳の活性化のためナンバープレイスを追いかけていました。消しゴムと鉛筆によりナンプレを解いていましたが、途中からAIに解かせてみようと考えhtml, Css, JavaScriptによる『AIナンプレ自動解法プログラミング』に挑戦しました。

ナンバープレイスを解く鍵は9個からなるグループに与えられた数字をとらえて他のグループとの関連から必然性を見つけてひとつひとつ、空白マスを埋める方法がオーソドックスです。

以下のサンプルは41個の与えられた数字にナンプレのルールを適用して残りの40マスを埋める課題です。左上のスピーカーボタンをクリックすると回答の先頭部分が表示されます。この所作は言わずと知れた『音声が出るサイトにおいて初回は閲覧者が決める』という前提があり、自動開始を認めていないからです。

 

本格的な記事は『AIでナンプレを解く』です。

先人がナンプレを解くコツをまとめた定石がネットや書籍に掲載されています。コンピュータを用いてナンプレを解くソフトウェアはアプリケーションとして数多く出回っていますが、解く過程について解説している情報はまだ整っていません。当記事がフロントランナーとして役立てば幸いです。

候補として挙げられた数字を一つずつ削除する定石には親しみやすい名称がついていて、隠れ二国同盟、ポインティングペア、三国同盟などが有名です。三国同盟については 『ナンプレ三国同盟実装する』において詳しく触れています。

残した課題

前回、発表した記事はまだまだ発展途上であり不十分な点が多々あります。一番おおきな課題は「極めて難解な問題は解けない」です。これは永遠の課題であり引き継いだ新進気鋭の若者が成すことですので気にしていません。それも含めて残された課題を整理してみます。

①難解な問題は解けない
②画面は600ピクセルより大きなモニタを想定
③解法の集計は大雑把でマス目に確定数字を埋め込むときのみ、カウントしている
④右の進行状況表示欄に解析中の重要情報をもっときめ細かに表示する

HTMLへの思い入れ

かつて、開発環境を整えるだけでも月に何百万円ものリース料を払って開発しなければならない時代がありました。

時代が進んで個人レベルでも様々なシステム開発ができるようになりました。あとは意欲一つの時代が訪れました。

HTMLは世界中の技術者が公開に向けて努力されました。何の代償もなく使わせていただくのはありがたいです。

他人、他組織、他国が開発したシステムを後追いするだけでなく、ユニークな企画のもと独特な商品開発につながることを祈っています。

AIでナンプレを解く

AIでナンプレ難問を解く

この記事にはナンバープレイス(数独)をHTMLによってプログラミングされたソフトウェアによって解く過程について記述されています。

©2023 TacM, Ver0.02
 

ナンバープレイスとは

ナンバープレイスはさる会社の登録商標として数独とも呼ばれ、1~9の数字を縦横ブロックの9マスに1個ずつ使いそれぞれ9組27グループ全81マスをすべて埋めつくす数学的なパズルです。

何故取り上げるの

我が国は今、著しい成長を遂げつつある発展途上国から追いまくられ先進国から転落の一歩前にあるなどと言われています。あらゆる国が等しく発展して平和な暮らしが訪れることは良いことです。

我が国が発展する以前のように他国の優れた面を模倣して急成長し周りから睥睨されるとつらい面も生じます。

紙と鉛筆、消しゴムを使ってナンバープレイスを解くことに飽きがきた新進気鋭の皆様には、AIにナンバープレイスの難問を解かせる課題に颯爽と取り組んでみませんか。

IT分野におけるプラットフォームでは、日本は黎明期には先進的な役割を果たしたにもかかわらず、近年は全体的に活性化しているとは言い難く閉塞感がただよっています。

このような試みがIT関連業界の底上げに貢献しプログラミング的思考を育んで経済に刺激を与える糸口になれば幸いです。古来から積み上げた知識を再結集し明治維新や太平洋戦後に見せた気概を取り戻して活力ある処世がよみがえることを願っています。

想定する読者と前提条件

本稿を読んで少し難しめのナンプレ課題に挑戦するにはスマホやパソコンの基本的な操作ができてHTML及びJavaScriptの基礎程度の知識が必要ですが、このままでもAIでナンプレ課題を解くことは小さくまとまっています。当ブログは斬新さに興味を示す新しがり屋もの好きであれば誰でも始められます。

将来、ブログを運営したりプログラミングを体得したい方を大歓迎します。まずはナンプレの平易な課題を解かせてHTMLやプログラミングに親しんでください。

一般に、ブログやホームページはHTMLという言語により記述されています。

HTMLは初心者に入りやすい言語です。この言語はスマホやパソコンで図や音声・動画を表現することに加えて、複雑な課題を解析すべくプログラミングすることに向いています。

HTMLを始めるには段落(paragraph)を意味するpという要素ただ一つを理解すれば始められます。

表現するにはスマホ、タブレット、パソコンのどれかがあれば十分です。必要なツールは中心となるブラウザが購入時にすでに備わっています。誰でも何時からでも始めることができます。

ナンプレ解析のための用語

この稿で用いた用語について説明します。ナンプレは9×9=81マス目を横方向の並びを、縦方向の並びを、3行3列のボックスをブロックあるいはBoxと呼ぶことにします。それらは行・列・ブロック番号1~9で表現します。マス目単独には1~81の番号が割り振られています。

しかし、プログラミングの処理上、内部的には0~8、0~80の値にて制御されます。数学的には0を起点にするのが常道です。9で除した商、9で除した後の余りを算出するとき、起点を0にする利点は計り知れないものがあります。この表現法に基づいた図を以下に載せます。

HTMLのCSSでは要素をID名にて管理することが多く、マス目にはアルファベットから始める規則に則りtd00~td88のID名を指定しています。tdは0~8数字の組み合わせです。

AIにナンプレを解かせるには

ナンバープレイス(以下はナンプレ)を解くには既知として与えられた数字をヒントとして最大限に利用し、必然性を引き出します。それらを囲碁に因んで定石と呼ぶことにします。

最もありふれた定石は「1グループ9マスのうち、8マスが埋まっていれば残された数字が入る」です。

定石は複雑なものから単純なものまで数十個存在します。それらは学問的、趣味的に大学や研究機関で世界中においてかなり深く研究が進んでいます。

論文が公開されているので図書館、ネットで読むことが可能です。ナンバープレイスを省略してナンプレと呼ぶに及ばずと考えている研究者はそちらが適切な選択になります。

ここでは定石を理解してアルゴリズムとして具現化しコンピュータ言語を用いてプログラムを記述して課題を解くことを目的にしています。

当ブログでは主なる10個の解法を具現化しました。新聞や週刊誌に掲載されているナンプレ課題はおおむね正答を得ることができますが、はなから難問とうたっている課題は解けません。

解けない課題は誤答になることはなく潔く「未実装のため解くことはできませんでした」というメッセージが出力されます。

9マスからなるグループが重層的に絡む定石は組み込まれていません。難問でも解けるように改訂する方法は追って記述されます。

実装済み解法

現在、当ブログにおいて実装され、主要ブラウザで動作が確認された解法は以下の10種です。

新しい解法の実装法

『ナンプレ課題を解く』のような処理の規模が定まらず後から処理コードを追加する編成においては、制御テーブルを定義し制御関数にリンクできる仕組みにすればシステムの改変に柔軟に対応することができます。

制御テーブルの一例を次に挙げます。処理の制御に用いるMETHODテーブルの第一要素は関数名、次は呼称名、最後は繰り返し回数を定義しています。また、動的に制御リンクテーブルから制御関数を呼び出すには window[METHOD[0][0]](); のようなコードを用います。

以下のテーブルは10個の関数を順に呼び出す例ですが、11番目に新しい関数を組み込むには、XyWingの後に新しい関数を追加定義します。11番目の関数を呼び出すにはwindow[METHOD[10][0]]();のように指定します。

🔶関数制御テーブル

const METHOD = [
 ["Singles",         "シングル",             81], /* 0 */
 ["HiddenSingles",   "隠れたシングル",       27], /* 1 */
 ["NakedPairs",      "二国同盟",             27], /* 2 */
 ["HiddenPairs",     "隠れ二国同盟       ",  27], /* 3 */
 ["PointingPairs1",  "ポインティングペア1",  9],  /* 4 */
 ["PointingPairs2",  "ポインティングペア2",  9],  /* 5 */
 ["BoxLine",         "ボックスライン",       54], /* 6 */
 ["NakedTriple",     "三国同盟",             27], /* 7 */
 ["HiddenTriple",    "隠れ三国同盟",         27], /* 8 */
 ["XyWing",          "XYウィング",           84]  /* 9 */
];
  

息抜き・お茶の時間

🍵

寅さんがHTMLを用いてネット社会で表現したらこんなことになるのではないだろうか。

拝啓お袋様、ご無沙汰です。

コーヒーを飲む女性,author:メイメイ
天空の城《竹田城》
TakedaCastle

いつも、期日までには仕送りしていただき、感謝しています。

梅雨が始まったころ、英検2級に挑戦し始めました。週三日のペースで、外国人立ち寄り土産店でアルバイトをし、土曜日にはボランティアガイドに参加しています。8月中頃には実家に帰れそうです。詳しくはまた、お便りします。先日、友人と天空の城《竹田城》を訪ねた時の写真を同封します。

HTMLコード

<p>拝啓お袋様、ご無沙汰です。</p>
<div style=”width:636px; height:280px; background:ivory; border:0px dashed blue;”>
<div style=”float:left; width:310px; height:280px; text-align:center; border:1px solid pink;”>
<img src=”https://aidesign.lolipop.jp/wp-content/uploads/2023/05/coffeeBreakGirl.png” width=”204″ height=”256″>
<div>コーヒーを飲む女性,author:メイメイ</div>
</div>
<div style=”float:left; margin-left:2px; width:320px; height:280px; border:1px solid green;”>
<div style=”display:flex; justify-content:center; color:navy; font-size:24px; padding-top:10px;”>天空の城《竹田城》</div>
<img style=”padding-left:8px; padding-top:10px;” src=”https://aidesign.lolipop.jp/wp-content/uploads/2016/08/TakedaCastle.jpg” width=”300″ height=”200″ alt=”TakedaCastle”>
</div>
</div>
<div id=”bun1″ style=”clear:both; font-family: serif; font-size: 14pt; width: 633px; height: 200px; padding-top:5px; background: ghostwhite;”>
<p>いつも、期日までには仕送りしていただき、感謝しています。</p>
<p>梅雨が始まったころ、英検2級に挑戦し始めました。週三日のペースで、外国人立ち寄り土産店でアルバイトをし、土曜日にはボランティアガイドに参加しています。8月中頃には実家に帰れそうです。詳しくはまた、お便りします。先日、友人と天空の城《<span style=”color: tomato;”>竹田城</span>》を訪ねた時の写真を同封します。</p>
</div>

課題の作り方

独自の課題を作って自動解読AIに指定する方法を示します。

🔶作成課題を解くには81個の課題データを以下の書式でローカル媒体に作成しファイル名をたとえばexample-1.jsのように名づけます。

var exam=[
9,0,0,1,0,0,5,0,0,
0,1,0,0,2,0,0,6,0,
0,0,2,0,0,3,0,0,7,
2,0,0,3,0,0,4,0,0,
0,3,0,0,4,0,0,5,0,
0,0,4,0,0,5,0,0,6,
7,0,0,5,0,0,6,0,0,
0,8,0,0,6,0,0,7,0,
0,0,9,0,0,7,0,0,8
];
  
ファイル名:example-1.js

上記課題は変数を配列に定義するHTMLの文法に則っています。0はナンプレのルールに従って1~9に置き換わる課題値であり、1~9の値は既知として与えられた数字です。最後にセミコロン(;)を忘れずに!

ナンバープレイスの実演

右にある幸運のボタンをクリックしてナンバープレイスの難問に挑戦してください。まず、次項のナンプレ自動解法ソフトの使い方をお読みください。
ナンプレで脳活!


ナンバープレイスのプレイ終了後は終了ボタン(✖)をクリックして戻ってください。

ナンプレ自動解法ソフトの使い方

上の画像をクリックすると画面が大きくなります。

❶プレイメニュー(solve, navi, guide)

上図はナンプレ開始画面です。上部左に3つのメニューがあり、その右には課題概要が表示され中央の81マスには課題数字、候補数字、確定数字が表示されます。

右欄には解析進行中の重要情報や統計値が表示されます。これらの情報は解法をプログラミング化して信頼性を確かめることに役立ちます。進行状況表示欄が満杯になると自動スクロールされ、のちにスクロールバーの操作によりさかのぼって表示させることができます。

最初に使うメニューはguideです。使い方の概要を把握できます。naviにより開始時の候補が表示されます。solveをクリックすることによりナンプレ自動解法が実施され即刻、回答が内部に記憶されます。

確定数字の表示は正答に至る過程を目視可能にするため、遅延処理が施されブザー音とともに表示されます。

❷課題設定メニュー

ファイル選択ボタンをクリックして起動されたファイル選択ダイアログで指定された課題は、送信ボタンを押下することによって独自のナンプレプレイをすることができます。

上図を参照しながら①でファイル選択メニュー画面を起動し、②番目にファイルを選びファイル選択ボタンの右に指定したファイル名が表示されたら③番目に送信ボタンをクリックします。

送信の表示が薄くなり進行表示欄に課題ファイル名と開始ボタン入力待ちが表示されたら課題設定は完了です。

❸自動解法ソフトの特徴

 基礎を入手して
 ユニークな企て

 Break Through

特徴の文字は特長を使いたかったですが今回、発表の作品はそこまで優れたものとは言い難いです。

自動解法ソフトはひとつの試みから出発しています。中程度の難度までは正答を得ることができますが高度に難解な課題を解くことはできません。

読者の熱意により多くの解法を組み込めば本家を凌駕する優れモノに変身することでしょう。

簡略版でない正規版を入手され、発展途上作品に独自のアイデアを織り交ぜて画期的なオリジナル作品を世に出してプログラミングの普及に貢献されることを願っています。

HTMLプログラミングコードの公開と頒布、二次使用について

ナンプレ自動解法ソフトの動作はすべての環境で保証するものではありませんが著作権はブログ運営者にあります。ナンプレ自動解法ソフトは別ウィンドウで動作します。

公開された自動解法ソフトのコードは字下げ(インデント)などを省いた超スリムタイプです。改行コードやコメントは省略されており、メンテナンスや改変にはまったく適していません。

有料ですが正規の手続きを経て取得された利用者の二次使用は自由です。利用や参照の連絡は不要です。

本ブログは年金生活者により、運営継続されています。ブログのSSL化は資金不足のあおりを受け数年遅れて先月になりようやく実現することができました。

本作品を踏み台にしてもっともっと良いものを世に出してほしいと切に願っています。

また、正規版には筆算用の碁盤目やデバッグツール、重要定数算出関数、ハイポサイクロイド曲線などの装飾用関数が付きます。

体力的な限界を感じており新規開発は打ち止めです。正式版取得者にはメールやブログにより質問をお受けします。得た資金はSSLの強化やプログラミングの普及に使わせていただきます。

正規版ソースコードの一部(サンプル:コメント、インデント付き)

正規版収納一覧

正規版には次のファイルが収納されています。ナンプレ自動解法ソフトは画像や音響ファイルを参照しています。それらは筆者が管轄するサーバーを参照するコードになっていますが、サーバーが閉鎖になっても問題が起きないようにファイルは正規版収納ファイルに含まれています。

収納ファイル名                             copyright TacM, 2023-06
--------ファイル・フォルダ名---概要
│      Contents.TXT..........本ファイル
├─CODE......................プログラミングコード関連ファイル
│      iFrameGetExam.html
│      Naked.html
│      loading4.gif
│      numberPlace1.png
│      NG3.png
│      OK3.png
│      button57.mp3
├─EXAM......................動作確認用課題ファイル
│      boxLine-0.js
│      boxLine.js
│      cross-0.js
│      exam-0122.js
│      exam-020.js
│      exam-0205.js
│      exam-0402.js
│      exam-0511.js
│      exam-2201182.js
│      exam-3200402.js
│      exam-3goku.js
│      exam-A0520.js
│      exam-B0521.js
│      exam-B0528.js
│      exam-C0508.js
│      exam-choNanmon.js
│      exam-nanmon-1.js
│      exam-nanmon-2.js
│      exam-nanmon.js
│      exam-nanmon200.js
│      exam-nanmon343747.js
│      exam-nanmon3824.js
│      exam-none.js
│      exam-R68-B26.js
│      exam-reidai002.js
│      exam-reidai003.js
│      exam-sample.js
│      example-1.js
│      hiddenPairs1.js
│      hiddenPairs2.js
│      hiddenPairs69OK.js
│      hiddenTriples608.js
│      hiddenTriples609.js
│      kakuredomei3.js
│      multipleAnswer.js
│      mysteriousLayout-1.js
│      mysteriousLayout-13.js
│      mysteriousLayout-14.js
│      mysteriousLayout-2.js
│      mysteriousLayout-3.js
│      mysteriousLayout-4.js
│      mysteriousLayout-5.js
│      mysteriousLayout.js
│      NO-601009.js
│      pointingPairs1.js
│      pointingPairs2.js
│      SUDOKU-0519.js
│      SUDOKU10-521.js
│      SUDOKU2022-1224.js
│      trickyQuestions.js
│      XY-WING-0.js
│      XY-WING-1.js
│      XY-WING-100.js
│      XY-WING-2.js
│      XY-WING-3.js
│      XY-WING.js
└─INFO......................プログラミング支援情報
        470A.png
        470B.png
        combination.png
        logoMark-2023.html
        rowColumnBlock4.png
   

 在宅ワークで財を成し
  無人島を買って
 在宅長者をめざそう
当ブログが厳選・作成した
日本30観光案内・英語版

正規版プログラミングコード入手法

正規版はHTMLプログラムコード、画像ファイル等約70個からなるファイル群です。正規版を入手するにはブログのコメント欄をご利用ください。

料金は500円(消費税込み)です。コメント欄への書き込みで正規版入手希望と明記してください。折り返しのメールにて支払方法をお知らせします。

📧

送金確認後、メールアドレス先にZipファイルにてご送付いたします。コメント欄における入手のやり取り・メールアドレスなどを含む個人情報は公開されることはなくブログ運営指針により保護されます。

この項は2023-07-18に修正しました。直接、口座番号やメールでのやり取りは中止です。Noteによる有料記事の扱いが適切ではと知人から指摘を受けました。時間がかかりますがNoteでの情報発信にご期待ください。

プログラミングへの想い

info of lang
HTMLの3要素

プログラミングについて、中でもプログラミング言語はCOBOL, FOTRAN, Basic, Cなど数多くの体験をしましたがここはそれを語る場ではありません。今回、記述言語として採用したHTMLに限定します。

HTMLは開発環境を整えるのが極めて容易であり少ない時間や経費で実現できました。初心者にはうってつけのプログラミング言語です。

加えて高度なシステムを構築するにはブラウザのデバッグ機能を利用して難解な問題を解決することができます。

HTMLはブログやホームページの作成のほか、日々の日常生活を記録するにも気楽に応用できます。画像や音響ファイルと文面を協同したり別アドレスにジャンプすることを得意にしています。

また、HTMLはパソコン、タブレット、スマホなどのデバイスに依存せず、開発したAI自動解法ソフトウェアは機種の違いを乗り越え広範囲での動作が見込まれます。

ナンプレ難問をAIで解くには文字列を検索する処理が多くなります。以下の表にまとめた文字列を操作する関数が言語処理系に組み込まれており、開発者の負担を軽減してくれます。

  1. 文字列操作関数
  2. 概要
  1. ①charAt
  2. 文字列の指定された位置にある文字を返す
  1. ②charCodeAt
  2. 文字列の指定された位置にある文字のUnicode値を返す
  1. ③concat
  2. 文字列を連結する
  1. ④includes
  2. 文字列が指定された部分文字列を含むかどうかを示すブール値を返す
  1. ⑤indexOf
  2. 文字列内で最初に指定された値を検索し、その位置を返す
  1. ⑥lastIndexOf
  2. 文字列内で最後に指定された値を検索し、その位置を返す
  1. ⑦localeCompare
  2. 指定された文字列と比較、文字列がソートされる順序にあるかどうか示す整数を返す
  1. ⑧match
  2. 正規表現によるパターンマッチングにより、一致する部分文字列を含む配列を返す
  1. ⑨replace
  2. 正規表現、文字列、または関数による置換により、新しい文字列を返す
  1. ⑩search
  2. 正規表現によるパターンマッチングにより、一致する部分文字列の最初の位置を返す
  1. ⑪slice
  2. 文字列の一部分を抽出して新しい文字列を返す
  1. ⑫split
  2. 指定された区切り文字列に基づいて、文字列を分割して配列にする
  1. ⑬substr
  2. 文字列の指定された位置から指定された長さまでの部分文字列を返す
  1. ⑭substring
  2. 文字列の指定された位置から別の指定された位置までの部分文字列を返す
  1. ⑮toLocaleLowerCase
  2. 文字列をロケールに基づいて小文字に変換する
  1. ⑯toLocaleUpperCase
  2. 文字列をロケールに基づいて大文字に変換する
  1. ⑰toLowerCase
  2. 文字列を小文字に変換する
  1. ⑱toUpperCase
  2. 文字列を大文字に変換する
  1. ⑲trim
  2. 文字列の両端から空白を削除する

HTMLを駆使してAIに難解な課題を解かせてプログラミングに興味を持ってもらえたら嬉しい限りです。

開発雑感

kinenhin

開発には1.5年かかりました。開発機はWindows11パソコンを用い、ブラウザは主にGoogle Chrome バージョン114.0.5735.90(64ビット)を利用しました。

その他のブラウザ Edge, Opera, FireFoxでもおおむね動作します。

スマホでの動作も特に動作の異常は見つかっていません。多くの機種の確認はこれからです。

意欲のある方は正規版を入手されてレスポンス対応版への改訂を推奨します。

プロトタイプシステムを土台にすれば、新しい解法を組み込む作業は割とたやすいことでしょう。プログラミング愛好者への参考になればこの上ない喜びです。

余談

遊び心のひとつですが、「日本30観光案内・英語版」のリンク先を正規版収納一覧の余白部に貼り付けておきました。この記事には様々なテクニックが埋め込まれています。左端の日本地図に表示中の観光地を●印で明示した手法が気に入っています。

電子機器今昔

お局様(おつぼねさま)

お局様の話はうざったい!耳を貸す気にはなりにくいが通例です。歴史に学ぶつもりで古い話を聞いてください。今般、古いWindows10パソコンを一掃してWindows11パソコンを導入しました。

朝、シャットダウン状態から立ち上げるのに20分ほどかかりました。限界を超えてる中古(ちゅうこ)品というより中古(ちゅうぶる)をだましだまし使ってきました。

いつ壊れるかと気をもみながら使うのは心臓に悪いと考え一念発起して切り替えました。

白黒テレビを見始めたころ古くなると電源を入れてから見れるようになるまで20分ほどかかるので、お気に入りの番組を見るのに早めに電源を入れていたことを思い出しました。

当初、バイクや四輪車にはセルモーターがついてなくキックしてエンジンをかけたものです。チョークをふかすという用語を知っている人はもう皆無に近いでしょう。

トラックやバスにはクランクというかぎ型の道具を非常用に携行してエンジン不調に対応しました。

古い知識は役立たないか

世の中は猛スピードで進展し古い知識が役立つことは少なくなりました。ChatGPTなるものが出現しなおのこと、古い知識には関心が薄くなったようです。

コロナが突然現れたように考えがちですが人間の歴史が始まったころにすでに存在したでしょうから、ChatGPTの雰囲気はこれまでもあったはずです。

なにも一朝一夕に世の中が変わるものではないでしょう。落ち着いて付き合っていけばいいのではないでしょうか。

今どきの動画や写真送信法

時代に合った手法

諸事において周りが変化したならそれなりに対応せざるを得ません。一昔前のファッションが気に入っているとしても流行遅れとみなされます。市場に出回っていなければ身に着けることはままなりません。電子機器の進歩は日進月歩でありぼやぼやしていると取り残されます。

大型連休では多くの動画や写真を収録したことでしょう。時代に即した動画・写真送信方法を体現してください。

情報伝達の変遷

動画や写真を他人に送るとき、紙に印刷したりテープ、フロッピーディスク、CD-ROMに複製して送っていました。近年になってインターネットが普及するとpngやmp3, mp4の電子媒体を作って関係者に送るようになりました。以下にその手法を挙げます。

①紙やテープなどを郵便で送る
②電子媒体(CD-ROM, DVD)を宅配などを使って送付する
③インターネットを使って電子媒体のイメージを送信する
④電子媒体のアップロード先アドレスをメールやLINEで送る

集合体を作る

①や②による伝達法は時間と経費がかかりますが、現在は③や④の方法を用いてネット社会になじんでいます。写真は1枚で終わることは稀で集合体にすると扱い易くなります。また、次の写真に移るときの切り替え効果を付けると退屈せず中身が引き立ちます。それらを作るツールとしてスライドショーやmovieMakerがあります。まず簡単にまとめる方法から述べていきます。

🔶ZIPに圧縮し一つにする

写真をひとつのフォルダにまとめ、フォルダ全体を圧縮してZIPにします。このZIPを送信先に送り、受信者が解凍(展開)して写真に復元します。

🔶複数の写真からスライドショーを作る

写真を動画風にするには、例えばmovieMakerのようなスライドショー作成アプリを用います。以前はWindowsに付属していましたが最近のOSには付いていません。教材などを大量に扱う学校の教師や塾講師の職業においては購入されてはいかがでしょう。字幕(キャプション)やメッセージを付けたりBGMを流すこともできます。

電子媒体をアップロードするには

写真や動画をYoutubeなどの公開サーバー上にアップロードすると写真・動画本体を相手に送ることなく見てもらうことができます。閲覧条件を設定することにより、家族、会員などに制限することも可能です。公開条件に制限を設定しないとブラウザの検索にヒットすれば誰にでも閲覧されてしまいます。

せっかく、閲覧条件を設定したのにロード先のURLアドレスを誤って公開に及んだら何にもなりません。このような場合はYoutubeから動画を削除すれば大丈夫です。

過去の作品例

以下の作品は動画風写真に手づくりしたものです。▶再生ボタンをクリックしてお楽しみください。

まとめ

動画や写真をそのまま、関係者に送ろうとしたときアップロードする方法を考えてください。ZIPにしてメールに添付したり、DVDを宅配で送るのはもはや時代遅れです。公開サーバー上にアップして限りある通信資源を有効に使いましょう。

送り側はアップするときに公開条件に配慮し、受け取り側は情報がサーバーにいつまで保存されているかに気を配る必要があります。後日、再び見たいと思ったらダウンロードして自分の領域に確保することを忘れてはなりません。