ウィークリーチャレンジ 301
Mohammad S. Anwar は毎週、毎週 2 つのタスクに対する解決策を全員が考え出すチャンスであるウィークリー チャレンジを送信します。私のソリューションは最初に Python で書かれ、次に Perl に変換されます。これは、私たち全員がコーディングを練習するのに最適な方法です。
挑戦、私の解決策
タスク 1: 最大の数
タスク
正の整数のリスト @ints が与えられます。
指定されたリスト内のすべての要素を最大の数を形成するように配置し、それを返すスクリプトを作成します。
私の解決策
考えすぎかもしれませんが、これは思ったほど簡単ではありません。
1 つのオプションは、すべての順列を計算し、どの数値が最大であるかを確認することです。ただし、整数を追加すると、リソースが大量に消費されます。 13 個の整数がある場合、60 億を超える順列が存在します。したがって、私はこれを解決策として除外します。
したがって、当然のことは、整数をソートし、結合して結果を出力することです。 Python では文字列と整数の処理が異なるため、ソートされたリストを文字列に変換し、結合して整数に戻す必要があります。
def largest_number(ints: list) -> int: sorted_ints = sorted(ints, key=cmp_to_key(number_sort), reverse=True) return int(''.join(map(str, sorted_ints)))
並べ替えに関しては、少し複雑です。 2 番目に提供された例では、3、30、および 34 がすべて整数として指定されていることがわかります。このため、項目 (最高値から最低値へ) 34、3、および 30 を並べることで最大の数値が得られることがわかりました。
number_sort 関数では、整数を文字列 s1 と s2 に変換します。次に、s1 と s2 を連結した整数 c1 が得られ、c2 は s2 と s1 を連結したものになります。
c1 が c2 より小さい場合、-1 を返します。大きい場合は 1 を返します。同じ場合は 0 を返します。sorted 関数はこの情報を使用して、必要に応じてリストを並べ替えます。
def number_sort(i1: int, i2: int) -> int: s1 = str(i1) s2 = str(i2) c1 = int(s1 + s2) c2 = int(s2 + s1) if c1 c2: return 1 return 0
Perl コードははるかに単純です :)
sub number_sort() { return "$a$b" "$b$a"; }
例
$ ./ch-1.py 20 3 320 $ ./ch-1.py 3 30 34 5 9 9534330
タスク 2: ハミング距離
タスク
整数の配列 @ints が与えられます。
指定された整数配列内のすべての整数ペア間のハミング距離の合計を返すスクリプトを作成します。
2 つの整数間のハミング距離は、それらのバイナリ表現が異なる箇所の数です。
私の解決策
前のタスクでは、Python が整数と文字列を異なる型として扱う方法について説明しました。 Perl の利点の 1 つは、あらゆる点で変数の型指定について心配する必要がないと言われていることです。内部的には異なる方法で保存されていますが、Perl は何をすべきかを知っています。
Perl 5.10 と Perl 5.16 (私は Perl 開発のほとんどをここで行いました) には、2 つの注目すべき例外があります。 1 つは JSON モジュールで、文字列の場合は「10」、整数の場合は 10 を出力します。
もう 1 つはビット単位の演算です。パーロップのページから、105 | 150 (2 つの整数) は 255 ですが、「105」 | 「150」(2つの文字列)は155です。
そこで、perlop ページをもう一度読んで、これが Perl の新しいバージョンで解決されていることを確認して、嬉しい驚きを感じました。 Perl 5.22 で実験的であり、Perl 5.28 で利用できるビットごとの機能が追加されました。これにより、ビット単位の演算子が常に値を整数として扱うことが保証され、文字列ベースのビット単位には新しい演算子が追加されます。
とにかく、目の前の仕事に戻りましょう。このために、2 つの整数のすべての組み合わせを計算します。組み合わせごとに、2 つの値の XOR (排他的論理和) を実行し、バイナリに変換して、バイナリ表現内の 1 の数を数えます。
def largest_number(ints: list) -> int: sorted_ints = sorted(ints, key=cmp_to_key(number_sort), reverse=True) return int(''.join(map(str, sorted_ints)))
例
def number_sort(i1: int, i2: int) -> int: s1 = str(i1) s2 = str(i2) c1 = int(s1 + s2) c2 = int(s2 + s1) if c1 c2: return 1 return 0
以上がハンマーリストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

inpython、youappendelementStoalistusingtheappend()method.1)useappend()forsingleelements:my_list.append(4).2)useextend()or = formultipleElements:my_list.extend(another_list)ormy_list = [4,5,6] .3)forspecificpositions:my_list.insert(1,5).beaware

シェバンの問題をデバッグする方法には次のものがあります。1。シバン行をチェックして、それがスクリプトの最初の行であり、接頭辞スペースがないことを確認します。 2.通訳パスが正しいかどうかを確認します。 3.通訳を直接呼び出してスクリプトを実行して、シェバンの問題を分離します。 4. StraceまたはTrustsを使用して、システムコールを追跡します。 5.シバンに対する環境変数の影響を確認してください。

pythonlistscanbemanipulatedsingseveralmethodstoremoveElements:1)theremove()methodremovesthefirstoccurrenceofaspecifiedValue.2)thepop()methop()methodremovessanelementatagivenindex.3)thedelstatementementementementementementementementementemoritemoricedex.4)

Integers、strings、floats、booleans、otherlists、anddictionaryを含むpythonlistscanstoreanydatype

PythonListsSupportNumersoperations:1)AddingElementSwithAppend()、Extend()、Andinert()

Numpyを使用して多次元配列を作成すると、次の手順を通じて実現できます。1)numpy.array()関数を使用して、np.array([[1,2,3]、[4,5,6]])などの配列を作成して2D配列を作成します。 2)np.zeros()、np.ones()、np.random.random()およびその他の関数を使用して、特定の値で満たされた配列を作成します。 3)アレイの形状とサイズの特性を理解して、サブアレイの長さが一貫していることを確認し、エラーを回避します。 4)np.reshape()関数を使用して、配列の形状を変更します。 5)コードが明確で効率的であることを確認するために、メモリの使用に注意してください。

BroadcastinginNumPyisamethodtoperformoperationsonarraysofdifferentshapesbyautomaticallyaligningthem.Itsimplifiescode,enhancesreadability,andboostsperformance.Here'showitworks:1)Smallerarraysarepaddedwithonestomatchdimensions.2)Compatibledimensionsare

Forpythondatastorage、chooseLists forfficability withmixeddatypes、array.arrayformemory-efficienthogeneousnumericaldata、およびnumpyArrays foradvancednumericalcomputing.listSareversatilebuteficient efficient forlargeNumericaldatates;


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









