問題タブ [pseudocode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
203 参照

compiler-construction - Are .FRM .ARC .4GO .4GI portable p-code?

Assuming compilers and runners are from same versions, can they be executed on any platform (i.e. UNIX, LINUX, WINDOWS, DOS, etc.) without the need to re-compile the source code?

0 投票する
2 に答える
207 参照

refactoring - if ステートメント コードをリファクタリングする

このコードを 1 時間以上いじって、別の方法で再配置しようとしました。もっと簡単に書く方法はありますか?

0 投票する
1 に答える
4123 参照

recursion - パーリンノイズやその他のアルゴリズムを使用して、ポイントツーポイントの「稲妻」をどのように作成しますか?

私が遭遇したパーリン ノイズ生成のすべての実装は、2D 地形などの生成用でした。ポイント ツー ポイントの稲妻生成の適切な例はどこにも見つかりません。

「稲妻」を生成する他の多くの形態はありますか? これが欲しいと言われました。分岐した稲妻、または 2D ツリーにはどのようなアルゴリズムが存在しますか (稲妻についてはこれを逆にすることもできます)

私は複数の言語で作業しているため、疑似コードの例も問題ありません。

0 投票する
2 に答える
1116 参照

pseudocode - 簡単な擬似コード コードの質問

私は疑似コードに少し慣れていません。コードが何を言っているのかは理解できますが、ピースをまとめるのに苦労しています。このコードが何をしているかを理解するには、どのように考えればよいでしょうか。

a1、a2、.. . 、ak は k 個の数値の配列です。次のコード フラグメントは何をしますか? その理由を簡単に説明します。インデントされたすべての行がループ内にあると仮定します。

0 投票する
3 に答える
459 参照

pseudocode - 単に擬似コードの質問

私は擬似コードを初めて使用しますが、すべての要素をまとめるのに問題があります。

これは、入力が2つの整数と整数の配列であるfooという名前の関数の定義ですa[1] ... a[n]

入力整数がk=2m=5であり、入力配列にが含まれているとします[5, 6, 2, 3, 4, 8, 2]。Fooはどのような値を返しますか?総和表記を使用して、Fooが計算するものの一般式を与えます。

これは私の頭を傷つけています。これが私がこれまでにしたことです:

2行目には3つの条件文があります。

  • k<1の場合//2<1の場合..これはfalseです
  • m> nの場合//5が配列内の値の量(7)より大きい場合、これはfalseです。
  • k>mの場合//2>5の場合、これはfalseです

したがって、この関数は3行目を表示します。3行目は次のように述べています。

  • 配列の2番目の値である6を返します。したがって、6を取得してに追加しa[k]ます。a[2](2+1, 5, a[1].....,a[n])

私がやったことはそこまで正しいですか?もしそうなら、私はどのように何であるかを知ることa[n]ができますか?私はそれを見つけることになっていますか?このすべての最終結果は何でしょうか?

0 投票する
2 に答える
356 参照

algorithm - 一連の乱数から同じサイズの数グループを選択する

私は100個の数字のリストを持っているとします。それらを5つのグループに分割し、各グループ内の合計が数字の平均に最も近いとします。

最も簡単な解決策は、100 個の数字を並べ替えて最大数を取り、合計が平均を超えるまで最小の数字を追加し続けることです。

明らかに、それは最良の結果をもたらすことはありません。BFS、DFS、またはその他の検索アルゴリズムを使用できると思います。最良の結果を得るには、A* のようにします。

誰かがそこに簡単な解決策を持っていますか? 擬似コードで十分です。ありがとう!

0 投票する
6 に答える
46246 参照

c++ - C++ でサイン ルックアップ テーブルを作成する

次の疑似コードを C++ で書き直すにはどうすればよいですか?

sine_table ルックアップ テーブルを作成する必要があります。

0 投票する
3 に答える
1185 参照

pseudocode - ISBN のチェック ディジットの計算

これは実際には宿題ではありません。来週コンピューター サイエンスを始める前に、個別の数学の本でいくつかの問題を調べているだけです。

とにかく、質問の 1 つは、このアルゴリズムを実行するためのプログラムを作成するように私に求めています (説明しています)。私が立ち往生している部分は、9桁の数字を取得してそれを単一の整数に「分割」する方法であるため、各桁で計算を実行できます。

数値を 100,000,000 で割ってから、この整数値を取得して最初の桁を取得することを考えましたが、他の桁を取得する方法がわかりません。

これが PHP などの場合は、explode() を使用できますが、ここでのポイントではないと思います:P

0 投票する
8 に答える
10227 参照

algorithm - 疑似コードインタープリター?

SO の多くの皆さんと同じように、私はよく複数の言語で記事を書いています。そして、物事を計画するとき (または、いくつかの SO の質問に答えるとき) は、実際には特定されていないハイブリッド言語で考えたり書いたりします。以前はフロー図や UML に似た図を使用してこれを行うように教えられていましたが、振り返ってみると、「私の」疑似コード言語には、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、コンセプト/アルゴリズムを表現するのに最適なイディオムを無意識に選択しているようです。CPythonJavabashMatlabperlBasic

一般的なイディオムには、Java に似たスコープ用の中かっこ、pythonic リスト内包表記またはインデント、C++ に似た継承、C# スタイルのラムダ、matlab に似たスライス、および行列演算が含まれる場合があります。

私がやろうとしていることを人々が正確に認識するのは実際には非常に簡単であり、人々が知的に他の言語に翻訳するのは非常に簡単であることに気付きました. もちろん、そのステップには、コーナー ケースと、各言語が特異な動作をする瞬間を考慮することが含まれます。

しかし実際には、これらの言語のほとんどは、一般的に同じように動作するキーワードとライブラリ関数のサブセット (数学関数、型名など) を共有していますwhile。明らかに、LispforifAPL 派生物のような多くの「奇妙な」言語を除外する必要がありますが、 ...

だから私の質問は、

  1. テキスト ファイルのプログラミング言語を認識するコードは既に存在しますか? (確かに、これは eclipse の構文ツリーや Google 翻訳の言語推測機能よりも単純なタスクに違いありませんよね?) 実際、SO 構文ハイライターはこのようなことをしますか?

  2. 理論的には、使用している言語イディオムをいつでも認識し、(おそらく「インテリジェントに」) 実行または実行可能な形式に変換する単一のインタープリターまたはコンパイラーを作成することは可能ですか? また、私の構文が動作に関してあいまいなコーナーケースにフラグを立てます。私が目にする当面の困難には、インデント依存モードとブレース依存モードをいつ切り替えるかを知ること、変な演算子 ( *pointervs*kwargsなど) を認識すること、リストと配列のような表現をいつ使用するかを知ることなどがあります。

  3. このような柔軟な通訳をこなせる言語や通訳者は存在するのでしょうか。

  4. これが可能であることに対する明らかな障害を見逃しましたか?

編集

あなたの答えとアイデアをありがとう。私は、意図した意味でコードを「解決」し、実際の Python コードに変換できる可能性のある制約ベースのヒューリスティック トランスレータを作成することを計画しています。多くの一般的な言語のキーワードに気づき、構文の手がかりを使用して、人間の意図を明確にします-スペース、括弧、またはのようなオプションのヘルパーワード、let変数thenが以前にどのように使用されたかのコンテキストなど、さらに一般的な慣習の知識(大文字の名前、反復のためのi、および変数/メソッドの命名に関するいくつかの単純化された限定的な理解(たとえば、単語、、、、、などgetを含むasynchronous)。実際の疑似コードでは、変数の命名は操作自体と同じくらい有益です!countlastpreviousmy

これらの手がかりを使用して、各操作の実装に関する仮定を作成します (0/1 ベースのインデックス作成、例外をキャッチまたは無視する必要がある場合、どの変数を const/global/local にする必要があるか、どこで実行を開始および終了するか、および何を実行するか)。ビットは別のスレッドにある必要があります。数値単位が一致する/変換が必要な場合に注意してください)。それぞれの仮定には一定の確実性があります。プログラムは、実行可能ファイルに書き込んだ内容を誘導するため、各ステートメントに仮定をリストします。

各仮定について、最初の解釈が気に入らない場合は、コードを「明確化」できます。ライブラリの問題は非常に興味深いものです。私のトランスレータは、一部の IDE と同様に、すべてのモジュールから利用可能なすべての定義を読み取り、どのクラス/メソッドがどのコンテキストで最も頻繁に使用されているかについての統計を使用して、推測します! (プログラムにメモを追加して、なぜそのように推測したかを説明します...)すべてを実行しようとし、気に入らないことについて警告する必要があると思います。何でも許可する必要がありますが、あいまいな場合は、いくつかの代替解釈が何であるかを知らせてください。

@Albin Sunnanbo のImportantCustomer例のような異常な例を管理できるようになるには、確かに時間がかかります。しかし、私は私がどのようにうまくいくかをあなたに知らせます!

0 投票する
3 に答える
1533 参照

algorithm - コンピュータプログラミングの分野におけるほぼ等しいと本質的に等しい間の違い

このコードスニペットは他の場所から入手しています。ウェブマスターによると、コードはクヌースによるコンピュータープログラミングの芸術から選ばれています

その本を持っていないので、2つの機能の違いを教えてください。