Orivel Orivel
メニューを開く

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

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

比較ジャンル

モデル一覧

プログラミング

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

履歴クエリ対応のバージョン付きキー・バリューストアを実装する

履歴参照をサポートする、インメモリのバージョン管理付きキー・バリューストアを実装するコードを書いてください。ストアは空の状態で開始し、一連のコマンドを処理します。成功した各更新系コマンドは、1 から始まるグローバルなバージョン番号をちょうど 1 つ新たに作成します。読み取り専用コマンドはバージョンを作成してはなりません。 キーと値は、スペースを含まない大文字小文字を区別する文字列です。バージョンは正の整数です。 コマンド: SET key value value で key を作成または上書きします。 DELETE key 存在する場合は key を削除します。 GET key key の現在の値を返します。key が存在しない場合は NULL を返します。 GET_VERSION key version 指定されたグローバルバージョンが作成された直後の key に対応する値を返します。そのバージョン時点で key が存在しなかった場合は NULL を返します。version が最新の既存バージョンより大きい場合は無効とみなし、INVALID_VERSION を返します。 HISTORY key その key のすべての履歴状態を、削除も含めて、バージョン昇順で返します。形式は version:value の組をカンマで区切ったものとします。削除された状態、または更新後に存在しない状態には NULL を使用してください。その key がいかなる更新系コマンドによっても一度も影響を受けたことがない場合は、EMPTY を返します。 入力形式: 1 行目にはコマンド数を表す整数 N が含まれます。 次の N 行には、それぞれ 1 つのコマンドが含まれます。 出力形式: 各 GET、GET_VERSION、HISTORY コマンドについて、結果を 1 行ずつ出力してください。 動作の詳細と境界ケース: - 値が変わらない場合でも、すべての SET は常に新しいバージョンを作成します。 - キーが存在しない場合でも、すべての DELETE は常に新しいバージョンを作成します。 - バージョンはキーごとではなく、すべてのキーで共有されるグローバルなものです。 - ある key の HISTORY には、その key が SET または DELETE によって直接影響を受けたバージョンのみを含めてください。 - key が削除された後で再び設定された場合は、両方の出来事が HISTORY に現れなければなりません。 - 効率性が重要です: コマンド数は最大 200000 で、多数の履歴クエリがあるものと仮定してください。 あなたの解答は標準入力から読み取り、標準出力に書き込む必要があります。完全に動作するプログラム全体を 1 つのファイルに含めてください。一般的なプログラミング言語であればどれを使用してもかまいませんが、コードは完全であり、書かれたとおりに実行可能でなければなりません。

61
2026/03/18 22:33

プログラミング

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Pythonで依存関係リゾルバを実装する

あなたは、シンプルなパッケージ管理システム向けの依存関係リゾルバを作成する任務を与えられています。指定されたパッケージとその依存関係について、正しいインストール順序を決定する Python 関数 `resolve_dependencies(package_definitions, target_package)` を書いてください。 `package_definitions` 引数は文字列のリストです。各文字列は、`'PackageName: Dep1, Dep2, ...'` という形式で、あるパッケージとその直接依存関係を定義します。パッケージに依存関係がない場合の形式は `'PackageName:'` です。 あなたの関数は次のことを行う必要があります: 1. 入力文字列を解析して依存関係グラフを構築する。 2. `target_package` が与えられたとき、そのすべての依存関係(推移的依存関係を含む)を見つける。 3. インストール順序を表す文字列の単一のリストを返す。このリストはトポロジカルソートされていなければならない(依存先は、それに依存するパッケージより常に前に現れなければならない)。`target_package` 自体はリストの最後の項目でなければならない。リストには重複を含めてはならない。 4. 循環依存を検出する。循環が見つかった場合は、循環を明確に示すメッセージ付きで `ValueError` を送出すること(例: `'Circular dependency detected involving: A -> B -> A'`)。 5. 不足しているパッケージを検出する。あるパッケージが `package_definitions` 内で定義されていない依存関係を列挙している場合は、`'Missing package definition for: C'` のようなメッセージ付きで `ValueError` を送出すること。

63
2026/03/18 20:21

プログラミング

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

関連リンク

X f L