Show HN: I made a spreadsheet where formulas also update backwards

2025/12/12 3:00

Show HN: I made a spreadsheet where formulas also update backwards

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Bidicalc は、ユーザーが数式または結果のいずれかを編集できる双方向スプレッドシートです。片方が変更されると、ツールは自動的にもう一方を再計算し、関連するすべてのセルを整合性のある状態に保ちます。これを実現するために、カスタムルート探索ソルバーを使用して制約をシート全体に伝播させます。アルゴリズムは、区間算術(可能な値の範囲を追跡)、方向付きニュートン法(効率的に解へ収束)および二分探索(バイナリスプリット)を組み合わせて、数式が複雑であっても不定形でも目的の結果を見つけます。

このスプレッドシートは、変数・定数・テキストセル・数式セルなど標準的なセルタイプをサポートし、一般的な数学関数を含みます。TypeScript で実装され、勾配計算に TensorFlow.js を組み込んでおり、ブラウザのメインスレッド上で直接動作します。AGPL の下でオープンソースとして公開されています。

将来の計画では、変数範囲の制限(ドメイン制約)を追加し、複数解を持つシステムに対する精度を向上させ、64‑ビット浮動小数点勾配への切替え、重い処理を Web ワーカーへ移行してパフォーマンスを改善し、ユーザーインターフェイスを洗練させることが目標です。これらの拡張により、Bidicalc は既知のスプレッドシート形式で方程式を解くための強力なツールとなり、開発者が Web アプリケーションへ組み込むことを促し、オープンソースライセンスを通じてコミュニティからの貢献を歓迎します。

本文

Bidicalc – 双方向スプレッドシート


概要

式が「前方」だけでなく「逆向き」にも更新できるスプレッドシートです。

  • 通常の表計算は入力が変わると出力を再計算します。
  • Bidicalc逆方向ソルバー を追加し、式を評価した後に結果を変更すると、式が成立するように入力値を自動調整します。

仕組み

  1. 前方更新 – 入力セルを変えると依存関係のある式が自動で再計算されます(従来通り)。
  2. 逆方向更新 – 式を評価した後、表示値を編集するとソルバーが新しい結果になるように変数を探します。

この逆操作は根探索問題です:

F(x) = G
を満たす
x
を求めます。

  • F はセル式で定義される関数、G はユーザー入力の目標値です。

ソルバー

  • 区間算術・方向付きニュートン法・二分探索を組み合わせた独自アルゴリズム。
  • 連続(ほぼ全域)で定義され、構文式が既知ならどんな関数にも対応。
  • TypeScript で実装し AGPL オープンソースです。

セルの種類

種類構文説明
変数
1.0
ソルバーが変更できる数値。
定数
#50
#
付きで、ソルバーは変更しません。
テキスト
"Distance (km)"
ダブルクォートで囲む文字列モード。
任意に先頭に
=
を付ける
例:
A1 + A2
,
exp(A1)

サポート関数

  • 四則演算:
    + - * / ^
  • sqrt(x)
  • pow(a,b)
    (べき乗)
  • pi()
    – π定数
  • abs(x)
  • log(x)
    /
    ln(x)
    – 自然対数
  • exp(x)
  • 三角関数:
    cos
    ,
    sin
    ,
    tan

ユーザーインターフェース

操作ショートカット
グリッド移動
Ctrl + 矢印
下へ移動
Enter
上へ移動
Shift+Enter
右へ移動
Tab
左へ移動
Shift+Tab

式の結果ではなく式自体を編集したいときは F アイコンをクリックします。


ソルバーの挙動

  • 成功 – 方程式を満たす値が見つかりました。
  • 不正解 – バグです。GitHub で報告してください。
  • 解なしと報告 – 根が見つからない場合があります。こちらも報告を。
  • 予期せぬが正しい – 変数が多いときに頻繁に起こります(例:
    a*b*c = 1
    )。

対策

  • 一部の変数を定数 (
    #50
    ) にして自由度を減らす。
  • 問題を再構築し、自由変数を少なくする。
  • 将来リリースでドメイン制限を追加予定。

作者について

  • Victor Poughon – 数学愛好家・オープンソース開発者。
  • プロジェクト: Bidicalc (TypeScript, AGPL)。
  • スポンサーやコーヒー寄付歓迎。

サポート / 貢献

  • Issue、Pull Request、機能要望は GitHub リポジトリへ。
  • 商用利用の場合は別ライセンスを希望する方は連絡ください。

双方向スプレッドシートで実験を楽しんでください! ❤️

同じ日のほかのニュース

一覧に戻る →

2025/12/13 5:57

GNU Unifont

2025/12/13 7:02

Show HN: Tiny VM sandbox in C with apps in Rust, C and Zig

## Japanese Translation: uvm32 は、単一の C ファイルで書かれたミニマリストで依存関係を持たない仮想マシンサンドボックスです。 STM32L0 のような非常に小型のマイクロコントローラ上で動作し、4 KB 未満のフラッシュと 1 KB の RAM を使用します。静的割り当てのみで非同期設計となっています。 この VM は RISC‑V のサブセットを実装しており、軽量な管理インタフェースを公開しています。「if‑this‑then‑that」ロジックのために Lua、Duktape、MicroPython などの軽量スクリプトエンジンを置き換え、信頼できないコンポーネントや不安定な部品をサンドボックス化し、ターゲットコンパイラなしでモダン言語の「一度書けばどこでも実行できる」スクリプトを書けるようにすることが目的です。 主な特徴: - バイトコードアプリは C、Zig、Rust、またはアセンブリで記述可能。 - 非ブロッキングでシンプルな実行モデル。安全かつ最小限の型付けを備えた FFI を使用し、ホスト IO(stdio/ネットワーク)は想定していません。 - デザインは高速よりも安全性を優先しています。 - すべてのソースコードは `uvm32/` ディレクトリにあります。最小限のホスト例は `host‑mini` にあり、より高度なホストは `host/`、`host-parallel`、`host-arduino` にあります。 サンプルアプリケーションは VM の機能を示しています(C: helloworld, heap, conio, lissajous, maze, fib, sketch; Zig: zig‑mandel, zigtris, zigalloc, zigdoom; Rust: rust‑hello; アセンブリ: hello‑asm)。 ビルドとテスト用の Dockerfile が提供されており、`make dockerbuild`、`make dockershell` で構築・起動し、その後 `make` を実行してサンプルをコンパイル・実行します。ドキュメントはヘッダファイル `uvm32/uvm32.h` と `doc/README.md` にあります。本プロジェクトは MIT ライセンスで公開されています。

2025/12/13 5:15

Rats Play DOOM

## Japanese Translation: > **概要:** > 著者らは、ラットがDOOMをプレイできる完全にオープンソースの仮想現実装置をリリースしました。ゼロから構築されたこのシステムには、ハードウェア設計・ファームウェア・ソフトウェアがGitHubに掲載されており、他研究室でも簡単に再現または改良できます。バージョン 1(v1)はニューヨークのヴィクトール・トー氏によって開発され、ラットにDOOMコリドーを走行させるよう訓練しました。この実装はViceとPC Gamerで紹介されました。 > > 改良版(v2)はよりモジュラー化され、180°×80°の視野を持つ折りたたみ可能なAMOLEDスクリーン、新しいボールドライバー、強化された給餌器、ゲームイベントに同期した正確な10 µLの砂糖水投与が可能な改良リワード回路を備えています。追加センサーとランニングマシンのボール周囲に設置された光学フロー運動捕捉システムでトラッキング精度が向上しています。 > > ソフトウェアはPythonベースのモジュラースタック(arena_scenario.py)で、PC上で実行され、Raspberry PiとTCP経由で通信します。Piはリアルタイムセンサー読み取り・ボール駆動・リワード制御を担当します。すべてのコンポーネントはGitHubに文書化されており、3Dプリント可能なパーツや回路図も公開されています。 > > チーム(ヴィクトール・トー=ゲーマーラットコーチ、サンドル・マクラ=電気技師、アコス・ブラシュェク=ドキュメントリード)は、ラットが約2週間で慣れることを示しましたが、完全な訓練はまだ完了していません。 > > 現在の制限として、自動キャリブレーションスイートが無いため、ユーザーはセンサーの整列とリワードタイミングを手動で検証する必要があります。 > > 今後の課題は完全な訓練プロトコルの完成、キャリブレーションツールの改良、および他の行動タスクや種へ装置を拡張することです。低コストで完全にオープンなプラットフォームを提供することで、このプロジェクトは世界中の神経科学研究室の参入障壁を下げ、動物VR実験に依存する研究のスピードアップに寄与できる可能性があります。