カテゴリー
プログラミング言語

EndBASIC – Rustで書かれたBASICインタプリタ+環境

フリオ・メリノさん(Julio Merino)によるBASIC処理系プロジェクト EndBASICは、新たに書き起こされたBASICインタプリタに、MS-DOS風のコマンドラインを組み合わせたBASIC言語の処理系です。

EndBASIC サイトトップ

BASIC としての文法や機能は、Amstrad CPC という1980年代の8bitパソコンで動いたLocomotive BASICや、マイクロソフトのQuickBASIC を意識したものとなっているそう。

Linux/MacOS/Windows のバイナリをダウンロードして手元で動かすこともできますが、ブラウザ上でも動く環境が公開されています。

Rust で書かれた処理系が WebAssembly で動いているということで、昔からあるBASIC 言語を最新の技術と組み合わせているんですね。QuickBASIC で書かれたプログラムを少し直してウェブで公開、なんてことにも使えるかもしれません。

環境にはCUIエディタも内蔵されており、編集したファイルは環境内に保存することもできます。フラットに保存しファイル名で区別。ディレクトリについては今後の実装を検討ということ。また「ドライブ」を複数作ることができるのでドライブでの整理もできそうです。

EndBASIC のサンプルコード

BASIC言語ではよくある行番号機能は、GO TO 命令と共に省かれています。そのうち実装するかもということですが、分岐とループ命令でおおかたは問題ないかと思います。

面白いのはクラウド対応機能で、ユーザー登録するとユーザー名以下に置いたファイルを他ユーザーと共有できるようになります。

Raspberry PI で動かした時はGPIOにアクセスできる命令が提供されていて、ボタンやLEDなどの入出力が使えるそう。これも教育用としてよさそう。

今はプログラミングに入門する時の言語も多数候補がありますが、昔は入門言語といえばBASICが主流ということもありました。プロジェクトでは、プログラムとプログラムを動かす環境が最小限でセットになっていることで、セットアップの苦労なしにプログラミングの学習ができるようにすることを目指しているそう。

via Hacker News

カテゴリー
バグ

And. を5回続けて書くと Google Docs が落ちるバグが見つかる

Google Docs の公式サポートフォーラムで、不思議で面白い(中の人にとってはたいへんかもしれません)バグが報告されています。

“And. “を5回続けて書くことで、Google Docs で編集中のページがクラッシュしてしまうというのです。

Google Docs サポートフォーラムより、再現されたエラーのスクリーンショット

Chrome, Firefox で再現したというコメントがあるので自分も試してみたのですが、どうしても再現しません。今朝4時頃(日本時間で)のレポートに対して6時頃には Google の人が確認し修正中だと回答しているので、もう直っているのか、何か条件が違うのか。Google アカウントの言語は英語にして試しているのですが。

より詳細な再現手順は、”And. And. And. And. And.”と書き、改行してからページのリロード、ということ。”and. ” と A を小文字にしてはダメで、ピリオドの後にはスペースを入れないといけないそう。

また、”But. “5回でも起こるそうですが、だからといって大文字で始まるどんな英単語でも起こるというわけではないということ。

Hacker Newsのコメントでは、Also, Therefore, And, Anyway, But, Who, Why, Besides, However などの英単語を使っても再現したそう。

特定の英単語でしか発生しないことから、英語に関する機能、つまりスペルチェッカ―が原因ではないか、という話が出てきています。実際、And. And. を打った時点でスペルチェックの青波線が出ていますね。メニューから Tools の Grammar suggestion をオフにするとクラッシュしなくなるという話も。(自分で再現できていないのでもどかしいです。)

via Hacker News

カテゴリー
技術

初回で当てる。Wordle必勝法? on Kaggle

英単語当てクイズゲーム Wordle のブームは、プログラマ中心に止むことなく、様々なバリエーションの Wordle クローンパロディ最善手を求める解析やソルバーなどが毎日のように発表されています。

今回出てきたのは「Wordle を初手で解く」方法

ゲームの性質上、とんでもない偶然でもなければ初手で解けるはずはありません。つまり何かしらズルをしているのです。

Wordle の棋譜(途中経過)は⬛🟨🟩のブロックを使って表され、解いた後にツイッターで自分の結果を共有することができます。というか、このSNSでの共有機能こそが Wordle の大ブームを起こしたわけです。

この共有棋譜は、もちろんアルファベットの情報は載せず、試行錯誤の跡だけが見えるようになっています。

しかし、多くの人が試行錯誤した経路の情報が十分多くあれば、そこから正答を推測できるのではないか、というのがこのプロジェクトの考え方。

結果報告は上から下に向けて🟩(アルファベットの場所も種類も合致)、🟨(アルファベットの存在は合うが位置が違う)、⬛(外れ)が少なくなるのが普通です。一番下の段は正解なので🟩🟩🟩🟩🟩になります。

正解の一つ前の段は🟩や🟨多めになっているわけですが、どの段もWordle が扱う5文字の英単語ではあるはずです。

あらかじめソルバーをぶん回して得ておいた、間違った単語から正解の単語へたどり着く際に良く起こる単語→単語の現れる割合のデータを元に、⬛🟨🟩のパターンに当てはまりそうな英単語を探すことで、いろいろな人がツイッターで発表した⬛🟨🟩の形の分布だけから、その日の正解の単語を当てることができるということです。

ログではこのプロジェクトを始めた第210回からの予想が出ていますが、14回連続で一発で正答を当てていますね。

「正答は隠すけれど苦闘の過程はみんなに共有したい」という仕組みに対し、「隠されたものを大量に集めれば傾向から全体の答えがわかる」という過程が面白いですね。

ウェブ上にはWordleの正答だけでなく色々な「ぼかして書いた」情報が流れていると思いますが、こんな考え方を適用することでぼかされていたものをプログラムでひそかに当てる、ということもできそうです。

via Hacker News