Orivel Orivel
メニューを開く

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

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

比較ジャンル

モデル一覧

プログラミング

Anthropic Claude Haiku 4.5 VS OpenAI GPT-5.2

カスタム形式の高度なログファイルパーサー

Python関数 `parse_log(log_content: str) -> list` を作成してください。この関数はカスタム形式のログファイルを解析します。関数はログ内容を単一の複数行文字列として受け取り、各辞書が正常に完了したトランザクションを表す辞書のリストを返す必要があります。 **ログ形式のルール:** 1. **`START <transaction_id> <timestamp>`**: トランザクションの開始を示します。`transaction_id` は空白を含まない文字列です。`timestamp` は ISO 8601 形式の文字列です。 2. **`END <transaction_id> <status> <timestamp>`**: トランザクションの終了を示します。`transaction_id` は開いているトランザクションと一致しなければなりません。`status` は単語1つ(例: `SUCCESS`, `FAIL`)です。 3. **`EVENT <key1>=<value1> <key2>="<value with spaces>" ...`**: 現在アクティブなトランザクション内のイベントを表します。1つ以上のキーと値のペアで構成されます。空白を含む値は二重引用符で囲まれている必要があります。 4. **`COMMENT # <any text>`**: 無視すべきコメント行です。 **処理ロジック:** * 関数は行を順次処理する必要があります。 * `EVENT` 行は、まだ終了していない直近に開始されたトランザクションに関連付けられます。 * トランザクションは、同じ `transaction_id` を持つ `START` と `END` 行が対応している場合のみ完了かつ有効と見なされます。 * 出力は辞書のリストとします。各辞書は1つの完了したトランザクションを表し、以下のキーを持たなければなりません: * `transaction_id` (string) * `start_time` (string) * `end_time` (string) * `status` (string) * `events` (辞書のリスト。各内側の辞書は1行の `EVENT` のキーと値のペアを表します。) **エラー処理と特殊ケース:** * 任意の `COMMENT` 行、空行、または指定された形式に一致しない不正な行は無視してください。 * 最初の `START` の前やトランザクションが閉じられた後など、アクティブなトランザクションの外で発生する `EVENT` は無視してください。 * 新しい `START` 行が前のトランザクションが `END` で閉じられる前に出現した場合、前のトランザクションは「破棄(abandoned)」されたものと見なし破棄してください。新しい `START` 行は新しいトランザクションを開始します。 * ログファイルの終わりでまだ開いているトランザクションも「破棄」され、最終出力に含めないでください。

41
2026/03/23 08:42

プログラミング

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

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

Pythonで、次の機能をサポートするスレッドセーフなレートリミッタを設計・実装してください。 1. **スライディングウィンドウによるレート制限**: 固定時間ウィンドウを使うのではなく、真のスライディングウィンドウアルゴリズムを実装してください。各クライアント(文字列キーで識別)は、任意の連続する window_seconds 秒の間に最大で max_requests 件のリクエストを許容されます。 2. **優先度レベル**: 各リクエストには優先度レベル(整数 1-5、1 が最も高い優先度)が付与されます。クライアントのレート上限に達した場合、低優先度(数値が大きい)なリクエストが優先的に拒否されるべきです。具体的には、優先度 P の新しいリクエストが到着しウィンドウが満杯である場合、リミッタは現在のウィンドウ内に P より厳密に低い優先度(すなわち数値が P より大きい)を持つリクエストが存在するかを確認します。存在する場合は、最も低優先度(数値が最大)のリクエストのスロットを「取り上げ(revoked)」て、新しい高優先度リクエストを受け入れます。取り上げられたリクエストは報告できるよう記録されるべきです。取り上げ可能な低優先度のリクエストが存在しない場合は、新しいリクエストは拒否されます。 3. **バースト許容**: 各クライアントはオプションで burst(デフォルトは 0)というバースト許容量を持てます。これはウィンドウ内で max_requests に加えて最大 burst 件まで追加のリクエストを許容します。ただし、これはクライアントの現在のウィンドウにおける最初のリクエストから半分以上のウィンドウ時間が経過している場合に限ります。 4. **スレッドセーフ**: レートリミッタは複数のスレッドから同時に使用しても安全でなければなりません。これをテストシナリオで実証してください。 5. **統計**: リミッタはクライアントごとの統計を追跡する必要があります: 許可された(admitted)合計リクエスト数、拒否された(rejected)合計、取り上げられた(revoked、より高優先度のリクエストにより追い出された)合計、現在のウィンドウ利用率(0.0〜1.0 の浮動小数点)を追跡してください。 次のインターフェースを実装してください: ```python class RateLimiter: def __init__(self, max_requests: int, window_seconds: float, default_burst: int = 0): ... def set_client_burst(self, client_id: str, burst: int) -> None: """Override burst allowance for a specific client.""" ... def allow(self, client_id: str, priority: int = 3, timestamp: float = None) -> bool: """ Check if a request is allowed. If timestamp is None, use current time. Returns True if the request is admitted, False if rejected. """ ... def get_stats(self, client_id: str) -> dict: """ Return a dict with keys: 'admitted', 'rejected', 'revoked', 'utilization' """ ... def get_revoked_log(self, client_id: str) -> list: """ Return a list of (timestamp, priority) tuples for revoked requests for the given client, in chronological order. """ ... ``` 完全かつ実行可能な実装を提供し、次を含むデモスクリプトを添付してください: - max_requests=5, window_seconds=10.0, default_burst=2 でリミッタを作成 - 2 人のクライアントからの優先度とタイムスタンプが異なる一連のリクエストをシミュレートし、すべての機能(スライディングウィンドウの期限切れ、優先度による取り上げ、バーストの発動、拒否)を網羅する - 最後に各クライアントの統計と取り上げログを表示 - 少なくとも 4 スレッドを使った簡潔なマルチスレッドテストを含め、同時実行を確認する 次のようなエッジケースにも対応してください: - 優先度値検証(1-5 の範囲でなければならない) - ウィンドウ境界でちょうど到着するリクエスト - 連続した複数の取り上げが発生する場合 - バースト許容がちょうどウィンドウ半分の時点で発動する場合 - 空または未知のクライアント ID に対する統計問い合わせ

50
2026/03/19 14:46

プログラミング

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

ロックフリーの並行LRUキャッシュを実装する

PythonでスレッドセーフなLRU(Least Recently Used、最小最近使用)キャッシュを設計および実装してください。各操作ごとにグローバルロックを使用せずに、同時並行の読み取りおよび書き込みをサポートすること。実装は次の要件を満たす必要があります: 1. キャッシュは、コンストラクタ時に指定された固定の最大容量を持つこと。 2. 次の3つの操作をサポートすること: - get(key): キーに関連付けられた値を返す。キーが存在しない場合は None を返す。キーへのアクセスは、そのキーを最も最近使用されたものとしてマークすること。 - put(key, value): キーと値のペアを挿入または更新する。キャッシュが容量に達しており新しいキーを挿入する場合、最も最近使用されていない(LRU)エントリを追い出すこと。 - delete(key): キーが存在する場合はキャッシュから削除する。キーが見つかって削除された場合は True を、そうでなければ False を返すこと。 3. キャッシュは複数のスレッドから同時に安全に使用できること。異なるキーに対する同時の get 操作は互いにブロックすべきではない。競合を最小化すること — 全てに対して粗い単一のロックをかける設計は許容されない。 4. 追い出しポリシーは厳密な LRU であること:get または put によって最も最近アクセスされていないエントリが追い出されること。 5. エッジケースを扱うこと:容量が1の場合、追い出しを引き起こす急速な同時 put 操作、異なるスレッドから同一キーに対する get/put/delete の交錯、容量がゼロまたは負の場合(ValueError を送出)を含む。 単一の Python モジュールとして完全な実装を提供してください。並行性戦略とそれが整合性を保つ理由の簡潔な説明を付けてください。また、main ブロックまたはテスト関数内で複数のスレッドを生成し、混合した get/put/delete 操作を実行してキャッシュが決して容量を超えずデータ破損が発生しないことをアサートする短いデモも含めてください。

64
2026/03/19 11:51

プログラミング

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

範囲クエリを備えたロックフリー並行スキップリストを実装する

任意の言語(C++、Java、Rust、Go、または Python)で、以下の操作をサポートする並行スキップリストデータ構造を設計し、実装してください。 1. **insert(key, value)** – キーと値のペアを挿入する。キーがすでに存在する場合は、値をアトミックに更新する。新しいキーが挿入された場合は true、更新だった場合は false を返す。 2. **remove(key)** – キーと値のペアを論理削除する。キーが見つかって削除された場合は true、それ以外は false を返す。 3. **find(key)** – キーに対応する値を返すか、存在しないことを示す。 4. **range_query(low, high)** – low <= key <= high を満たすすべてのキーと値のペアを、キー順にソートされたリストとして返す。結果は一貫したスナップショットでなければならない。すなわち、操作の実行中に同時に存在したことが一度もないキーを含んではならない。 5. **size()** – アクティブな(削除されていない)要素数のおおよその値を返す。 要件と制約: - スキップリストは、上記の操作を任意に組み合わせて同時実行する複数スレッドによる並行利用に対して安全でなければならず、単一のグローバルロックを用いてはならない。細粒度ロック、ロックフリー技法(CAS)、またはその組み合わせを使用してよい。 - 遅延削除は許容される。ノードは物理削除の前に、削除済みとして論理的にマークされてもよい。 - 確率的なレベル生成は、p=0.5、最大レベル 32 の標準的な幾何分布を使用しなければならない。 - キーは 64 ビット整数、値は文字列とする。 - 適切なメモリ安全性への配慮を含めること。ガベージコレクションのない言語を使用する場合は、再利用戦略(例: エポックベース再利用、ハザードポインタ)を説明するか実装すること。 提出物: 1. 並行性戦略を説明するコメント付きの、完全でコンパイル可能/実行可能なソースコード。 2. 複数スレッドを起動して insert、delete、find、range query を並行実行し、正しさを検証するテストまたはデモンストレーション(例: 更新の取りこぼしがないこと、範囲クエリでファントムリードがないこと、クラッシュしないこと)。 3. 以下を論じる簡潔な分析セクション(コメントまたは docstring でも可): - あなたの実装が提供する線形化可能性(またはスナップショット分離)の保証。 - 各操作の期待時間計算量。 - 既知の制限や潜在的な ABA 問題、およびそれにどう対処しているか。 あなたの解答は、並行実行下での正しさ、コードの明瞭性、並行性戦略の堅牢性、範囲クエリのスナップショット機構の品質、分析の徹底性に基づいて評価されます。

61 1
2026/03/18 22:05

プログラミング

OpenAI GPT-5.2 VS Google Gemini 2.5 Flash

Least Recently Used (LRU) キャッシュの実装

LRU(Least Recently Used)キャッシュクラスをPythonで実装してください。以下の操作をサポートする必要があります。 1. `LRUCache(capacity)` — キャッシュを正の整数容量で初期化します。 2. `get(key)` — キーが存在する場合は、それに関連付けられた値を返します。存在しない場合は -1 を返します。キーにアクセスすると、そのキーが最近使用されたものとしてマークされます。 3. `put(key, value)` — キーと値のペアを挿入または更新します。挿入後にキャッシュが容量を超えた場合、最も最近使用されていないキーを削除します。 `get` と `put` の両方は、平均 O(1) の時間計算量で実行される必要があります。 完全で自己完結したPython実装を提供してください。`functools.lru_cache` または `collections.OrderedDict` を使用しないでください。基盤となるデータ構造(例:双方向連結リストとハッシュマップ)を自分で実装する必要があります。 クラス定義の後、容量 2 の `LRUCache` を作成し、以下の操作を実行して、各 `get` の結果を印刷する短いデモンストレーションを含めてください。 ``` 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 ```

84
2026/03/10 15:38

プログラミング

OpenAI GPT-5.2 VS Google Gemini 2.5 Pro

LRUキャッシュの実装

PythonでLRU(Least Recently Used)キャッシュデータ構造を実装してください。実装は`LRUCache`という名前のクラスで、以下の操作をサポートする必要があります。 1. `__init__(self, capacity: int)` — キャッシュを正の整数`capacity`で初期化します。 2. `get(self, key: int) -> int` — キーが存在する場合は、それに関連付けられた値を返します。存在しない場合は-1を返します。キーへのアクセスは「使用」とみなされます。 3. `put(self, key: int, value: int) -> None` — キーと値のペアを挿入または更新します。挿入後、キャッシュが容量を超えた場合は、最も最近使用されていないキーを削除します。 `get`と`put`の両方は、平均O(1)の時間計算量で実行される必要があります。 完全なクラス実装を提供してください。次に、次の操作シーケンスの出力によってその正しさを実証してください。 ``` 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 ``` 実装によって両方の操作でO(1)の時間計算量がどのように達成されるか簡単に説明してください。

151
2026/03/09 03:54

関連リンク

X f L