問題タブ [morse-code]
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.
python - モールス符号に基づく姪の単純な圧縮アルゴリズムを分析または改善するにはどうすればよいですか?
私の 8 歳の姪は、昨日学校でモールス信号のレッスンを受けました。彼女の課題は、さまざまなフレーズをモールス信号に変換することでした。フレーズの 1 つに彼女の年齢が含まれていまし---..
た3-2.
。この初歩的な「圧縮アルゴリズム」が私の好奇心をかき立てたので、それを実装するためのコードを少し書きました。
ただし、途中でいくつかの変更を加えました。私は彼女に、あなたが単に と書いた場合、その書き手が を意図していたのか、それとも.....-----
を意図していたのかを判断する方法はないことを指摘しました。実際には、各単語の各文字とすべての単語の間に一時停止があるため、これは問題にはなりませんが、私たちのスキームにはそれがありませんでした。私は方眼紙をいくつか取り出し、コーディングを容易にし、スキームからあいまいさを取り除くために、各シンボルのモールス符号を別のシンボルでパディングすることを提案しました。私のいい人は、「誰もそれらを文章で書いたことがない」ので、使用を提案しました。(ああ、私は最近数学の学位を取得して卒業しましたが、十分公平です。)50
eeeeettttt
+
私たちの何人かはで書き、+
全員がハイフンとピリオド/ドットを使用していますが、これはモールス信号の標準的な定義と矛盾するため、これらの記号はそれぞれp
、h
、 に置き換えられd
ます。もちろん、これにより、拡張モールス信号で定義されていない記号をどうするかという問題が生じます。私の姪は単にそれらを無視したかったので、それが私たちがしたことです。テキストメッセージの大文字と小文字を区別して保存するために、大文字はコード内で小文字になりません。それらはそのまま実行され、 で埋められ+
ます。
アルゴリズムの要約:
- モールス信号は、右に 5 文字までパディングされます。
+
- モールス信号を拡張して、 、 、を置き換え
p
ました。+
d
.
h
-
- 「拡張」モールス符号で定義されていない記号は、そのまま渡されます。
- 連続する文字が 1 つしかない場合は、数字が省略されます。
潜在的な落とし穴:
- 私のパディングスキームは、おそらく圧縮の有効性を低下させます。
- 5 文字を超えるブロックを使用すると、圧縮率が向上する場合があります
- 私の姪または私が圧縮アルゴリズムについて何か知っていれば、おそらくそれを使用してそれらを成功させることができたでしょう.
- これは明らかに生産には適していませんが、そのような目的のための効率的な圧縮アルゴリズムが多数あるため、当面はその問題を無視しています。
- ???
例:
私たちのアルゴリズムでは、「Hello, World」は次のように変換されます
圧縮して
一緒に投げたPythonコードは次のとおりです。
a) アルゴリズムを改善し、b) 8 歳の姪に比較的簡単に説明できる簡単な方法は何ですか? 最後の点は明らかに主観的なものですが、それでも私は彼女の好奇心を可能な限り甘やかそうとしています。
コードの改善も歓迎します。コードの構造が非常によくないためです (実際には、構造がかなり貧弱であると確信していますが、速くて汚いです)。 Python (まだ) を使用します。
アップデート
これは、アルゴリズムに対する user1884905 の変更と、コード自体に対する Karl の改善の両方を組み込むことを試みる、コードの更新バージョンです。
java - 静的を使用したモールスコード
私はこのプログラムを持っていますが、いくつか問題があります: これは私が計算を行う場所です。
主な方法:
したがって、私のプログラムは、入力を入力すると、モールス信号に変換する計算を行ったメインメソッドでも出力が黒く表示されます。また、メソッドのいずれかで静的識別子を使用できるかどうかについての提案はありますか。
テキストファイルは次のとおりです。
java - モールス符号を英語に?
英語をモールス信号に、またはその逆に変換するものを書こうとしています。英語からモールスへの変換は問題なく実行できましたが、逆に変換するのに苦労しています。私は|
言葉の間のスペースとして使用することを意図しているので、- --- | -... .
「ある」ことを意味します. にある私のコードのセクションで何が問題なのか誰か教えてもらえますcase:1
か?
python - Python -- 二分木によるモールス符号変換
私は、モールス符号のアルファベット (ピリオドとアポストロフィーも同様) のバイナリ ツリーを作成し、モールス符号の行を読み取って英語に翻訳するプログラムを作成しています。(はい、ルックアップ テーブルの方が簡単なのはわかっていますが、バイナリ ツリーを整理する必要があります)。私の問題のかなりの部分は、シンボル順ではなくアルファベット順で値をツリーに入れたいということだと思います。しかし、確かにそれを行う方法があるに違いありませんか?数値ではないそのような値が100万個ある場合、それらを挿入するために最も単純な順序に並べ替える必要がないからです...そうですか?
各行にモールス符号の 1 つの文が含まれるテキスト ファイルから読み取っています。- .... ... ... ... ... ..-. ..--. .-.-.- たとえば、これは「これは楽しい」です。記号の間の 1 つのスペースは新しい文字であることを意味し、2 つのスペースは新しい単語であることを意味します。
現状では、上記の行の出力「.$$$」を取得しています。これは、ピリオドを読み取ってから、('$$$') で表されるエラーを取得していることを意味します。これは明らかに間違っています。 ..
前に言ったように、私は複雑であることを知っていますが、最初にツリー内の値をソートせずにこれを行う方法があることは確かです。噛み砕く。
誰にも洞察力がありますか?これは、私がそれについて尋ねるのを恥ずかしく思うほど、恐ろしく明白なことですか?
while-loop - Arduino LEDが点滅するメッセージSOSをエレガントにループ
初めての実際のプログラミング プロジェクトとして、モールス信号で Arduino を「SOS」で点滅させようとしています。
私はそうすることに成功しましたが、今はもっと効率的にコードを書きたいと思っています。これが私のバージョンです。S を 2 回点滅させるために while ループを実装するにはどうすればよいですか? これは、カウンターを使用して反復を追跡することを複雑にしているようです。
python - sudo python3.2 setup.py : コマンドが提供されていません
以下のリンクを使用して、ubuntu12.4 に MORSE をインストールします。
http://www.kevindemarco.com/tutorials/morse-ros-installation/
しかし、stap8 では、ターミナルで「sudo python3.2 setup.py install」を実行すると、次のエラーが発生します。
私はそれを解決しました: sudo apt-get install python-rospkg
しかし、それはpython2.7にrospkgをインストールします。「sudo python setup.py install」を使用すれば問題ありません。しかし、python3.2で試してみると、 http : //www.kevindemarco.com/tutorials/morse-ros-installation/で「ImportError:setuptoolsという名前のモジュールがありません」というエラーが発生しました
とにかく配布しても私の問題は解決できません。
助けてください!
c - 文字列と配列との strcmp の混乱
モールス符号を文字に変換しようとする次のコードがあります。
私が抱えている問題は strcmp(morseLetter,morse[i]) にあります
gdb を実行すると、次のようになります。
if (strcmp(morseLetter,morse[i]) == 0) {
(gdb) モールス文字を表示
1: モールスレター = 0x7fffffffe4d0 "...."
(gdb) モールス表示[i]
2: morse[i] = "·–\000\000\000\000\000\000\000\000\000"
したがって、モールス符号の正しい文字列に到達すると、「...\000\000\000\000\000\000」と表示され、比較に失敗します。ここでは論理に従っていません。C の文字列は \0 を含む配列になると思いました。なぜこれが失敗するのですか?
ありがとう