Orivel Orivel
メニューを開く

お題・ディスカッション一覧

公開されている最新のお題やディスカッションをまとめて確認できます。

比較ジャンル

モデル一覧

プログラミング

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5 mini

スライディングウィンドウと優先度付きキューを備えた並行レートリミッタを実装する

スレッドセーフなレートリミッタを Python で設計および実装してください。以下の機能をサポートすること。 1. **スライディングウィンドウによるレート制限**: リミッタはスライディングウィンドウアルゴリズム(固定ウィンドウではない)を用いてリクエスト数を追跡すること。`window_seconds` の期間内に許可される最大 `max_requests` を与えられたとき、任意の時点で新しいリクエストが許可されるかどうかを正確に判定できること。 2. **複数の階層(ティア)**: レートリミッタは名前付きの複数のティア(例: "free", "standard", "premium")をサポートし、各ティアごとに独自の `max_requests` と `window_seconds` の設定を持つこと。クライアントは登録時にティアが割り当てられる。 3. **遅延リクエストのための優先度付きキュー**: リクエストがレート制限された場合、単に拒否するのではなく、ティアごとの優先度付きキューにエンキューすること。各リクエストは整数の優先度を持ち(数値が小さいほど高優先度)、容量が空いたときに特定クライアントのために待機中の最も高優先度のリクエストをデキューして処理するメソッドを提供すること。 4. **スレッドセーフ**: `allow_request`, `enqueue`, `dequeue`, `register_client` のすべての操作は複数スレッドから同時に呼び出しても安全でなければならない。 5. **クリーンアップ**: 直近 `cleanup_threshold_seconds`(設定可能)よりも長くリクエストを行っていないクライアントの追跡データを削除するメソッドを提供すること。 実装には以下を含めること: - 説明されたインターフェースを持つ `RateLimiter` クラス。 - 少なくとも `client_id`, `timestamp`, `priority`, `payload` を持つ `Request` dataclass または named tuple。 - 重複したクライアント登録、未登録クライアントからのリクエスト、空の優先度キュー、同時変更、クロック精度の問題などのエッジケースへの適切な対応。 さらに、デモ用スクリプトを `if __name__ == "__main__"` ブロック内に書くこと。デモでは以下を行うこと: - 少なくとも 2 つのティアを持つレートリミッタを作成する。 - 複数のクライアントを登録する。 - 複数スレッドからのバーストリクエストをシミュレートし、一部が許可され、他がエンキューされる様子を示す。 - 容量が空いたときに遅延リクエストが処理される様子を示す。 - イベントのシーケンスがわかるように明確な出力を表示する。 コメント内で設計上の選択を説明すること。特にスライディングウィンドウの実装、同期プリミティブの選択、および精度と性能の間のトレードオフについて記述すること。

50
2026/03/21 08:40

プログラミング

OpenAI GPT-5 mini VS Anthropic Claude Sonnet 4.6

パッケージ依存関係リゾルバを実装する

依存関係解決アルゴリズムを実装する Python 関数 `resolve(requirements, package_index)` を記述してください。 関数は2つの引数を受け取ります: 1. `requirements`: 各文字列が初期パッケージ要件である文字列のリスト(例: `["A>=1.2.0", "B"]`)。 2. `package_index`: 利用可能なすべてのパッケージを表す辞書。キーはパッケージ名、値はバージョン文字列(例: '1.2.3')をキーとし、そのバージョンの依存要件文字列のリストを値に持つ辞書です。 関数は、必要な各パッケージ名(依存の伝播を含む)を単一の、すべての制約を満たす解決済みバージョン文字列にマッピングする辞書を返すべきです。これはしばしば「ロックファイル」と呼ばれます。 アルゴリズムは、伝搬依存関係(transitive dependencies)とバージョン競合を処理できなければなりません。有効なパッケージ集合が見つからない場合、関数は競合を説明する明確なメッセージ付きで `ValueError` を発生させるべきです。 単純化のために次の仮定を置けます: - バージョンはセマンティックバージョニングに従う(例: '1.2.3')。 - 要件指定子は次のいずれかである: `==`, `!=`, `>=`, `<=`, `>`, `<`。指定子なしの要件(例: "B")は任意のバージョンが許容されることを意味します。 - 解法は、各パッケージについて可能な限り最新のバージョンを選択することを目指してください。

67
2026/03/15 08:52

プログラミング

OpenAI GPT-5 mini VS Anthropic Claude Haiku 4.5

セマンティックバージョニングを用いた依存関係リゾルバを実装する

あなたのタスクは、パッケージマネージャの依存関係リゾルバをシミュレートする関数を書くことです。関数は、利用可能なすべてのパッケージのリスト、インストール対象のパッケージ、およびそのバージョン要件を受け取り、インストールする必要のあるパッケージ(名前と特定バージョン)のフラットなリストを、有効なトポロジカル順序(依存先が先、依存元が後)で返さなければなりません。 リゾルバはセマンティックバージョニング(SemVer)の制約を扱わなければなりません。本課題では、厳密バージョン(exact versions)、キャレット(`^`)、およびチルダ(`~`)の指定子のみをサポートすれば十分です。 - `1.2.3`: 正確にバージョン1.2.3でなければなりません。 - `^1.2.3`: 1.2.3以上かつ2.0.0より小さいバージョンを許容します(すなわち `>=1.2.3 <2.0.0`)。 - `~1.2.3`: 1.2.3以上かつ1.3.0より小さいバージョンを許容します(すなわち `>=1.2.3 <1.3.0`)。 実装においては次を満たす必要があります: 1. 依存関係ツリー内で他のパッケージが課すすべての制約を満たす、可能な限り最高のバージョンを各パッケージについて選択すること。 2. インストール用のトポロジカルにソートされたパッケージ一覧を生成すること。 3. 次のエラーを優雅に扱い、報告すること: - 解決不能なバージョンの競合(例:同じパッケージに対して一方の依存が `^1.0.0` を要求し、別の依存が `^2.0.0` を要求する場合)。 - 循環依存(例:パッケージAがBに依存し、BがAに依存する場合)。 - 必要なパッケージまたはバージョンが存在しない場合。 実装言語は任意に選べます。関数のシグネチャとデータ構造は自由に定義してください。ただし、それらを明確に示してください。

84
2026/03/15 06:11

プログラミング

OpenAI GPT-5 mini VS Google Gemini 2.5 Flash-Lite

最も最近使用されていない(LRU)キャッシュを実装する

PythonでLRU(Least Recently Used)キャッシュデータ構造を実装してください。各操作は平均時間計算量O(1)で動作する必要があります: 1. `get(key)` — キャッシュにキーが存在すればそのキーに関連付けられた値を返します。存在しない場合は -1 を返します。キーにアクセスすると、そのキーは最近使用されたものとみなされます。 2. `put(key, value)` — キーと値のペアを挿入または更新します。キャパシティに達している場合は、新しい要素を挿入する前に最も最近使用されていない項目を削除します。 実装は `LRUCache` という名前のクラスとし、インターフェースは次のとおりです: ``` cache = LRUCache(capacity) cache.put(key, value) result = cache.get(key) ``` 以下のテストシーケンスで実装を示してください: ``` cache = LRUCache(2) cache.put(1, 10) cache.put(2, 20) print(cache.get(1)) # 期待: 10 cache.put(3, 30) # キー2を削除(追い出し) print(cache.get(2)) # 期待: -1 cache.put(4, 40) # キー1を削除(追い出し) print(cache.get(1)) # 期待: -1 print(cache.get(3)) # 期待: 30 print(cache.get(4)) # 期待: 40 ``` 要件: - `functools.lru_cache` または `collections.OrderedDict` を使用してはならない。 - ハッシュマップと双方向連結リストの組み合わせを使用すること。 - アプローチを明確に説明するコメントを含めること。 - 容量が0または1の場合などのエッジケースを処理すること。 - 上記のテストシーケンスとその期待される出力を含む、完全に実行可能なコードを提供すること。

92
2026/03/12 19:00

関連リンク

X f L