Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで昇順で表示できるようにカードを配置するプログラム


カードのリストがあり、昇順で表示されるようにカードを並べ替えたいとします。ご存知のように、カードは次のように公開されます。1.一番上のカードが削除されて公開され、次のカードが後ろに移動します。 2.カードがなくなるまで、手順1を繰り返します。カードが昇順で表示されるように、カードの順序を見つける必要があります。

したがって、入力がcards =[1、2、3、4、5、6、7、8]の場合、出力は[1、5、2、7、3、6、4、8]になります。 1が削除され、5が後ろに移動すると、現在の状況[2、7、3、6、4、8、5]。 2が削除され、7が後ろに移動され、現在の状況[3、6、4、8、5、7] 3が削除され、6が後ろに移動され、現在の状況[4、8、5、7、6] 4が削除され、8が後ろに移動され、現在の状況[5、7、6、8] 5が削除され、7が後ろに移動され、現在の状況[6、8、7]。 6が削除され、8が後ろに移動されます。現在の状況[7、8]。 7が削除され、カードは1枚だけになります[8]。次に、[8]

を削除します

これを解決するには、次の手順に従います-

  • リストカードを並べ替える
  • idx:=要素0からカードの長さまでのリスト
  • order:=新しいリスト
  • q:=idxのキューと挿入要素
  • qがゼロ以外の場合、do
    • qの左側から要素を削除し、順番に挿入します
    • qがゼロ以外の場合、
  • ans:=サイズのカードのリストを作成し、0を入力します
  • 注文からの要素iとカードからのカードごとに、
    • ans [i]:=カード
  • 回答を返す

理解を深めるために、次の実装を見てみましょう-

from collections import deque
class Solution:
   def solve(self, cards):
      cards.sort()
      idx=[i for i in range(len(cards))]
      order=[]
      q=deque(idx)
      while q:
         order.append(q.popleft())
         if q: q.append(q.popleft())
      ans=[0 for _ in cards]
      for i,card in zip(order,cards):
         ans[i]=card
      return ans
ob = Solution()
print(ob.solve([1, 2, 3, 4, 5, 6, 7, 8]))

入力

[1, 2, 3, 4, 5, 6, 7, 8]

出力

[1, 5, 2, 7, 3, 6, 4, 8]

  1. Pythonでお互いを攻撃できないようにn個のルークを配置する方法をいくつか見つけるプログラム

    サイズnxnのチェス盤を表す数nがあるとします。お互いに攻撃できないように、n個のルークを配置できる方法の数を見つける必要があります。ここでは、チェス盤の一部のセルが占有されている場合と、セルが占有されていない場合の2つの方法が異なると見なされます。 (ルークが同じ行または同じ列にある場合、ルークは互いに攻撃する可能性があることを私たちは知っています。) したがって、入力が3のような場合、出力は6になります これを解決するには、次の手順に従います- f=nの階乗 fを返す 理解を深めるために、次の実装を見てみましょう- 例 import math class Solution:

  2. 文の単語を昇順で並べ替えるPythonプログラム

    文の単語を昇順で並べ替えるには、まず、スペースを分割点として文を単語に分割する必要があります。簡単にするために、スペースで分割し、句読点をそこに配置します。 replaceまたはregexを使用してそれを削除することもできます。 文を分割したら、配列をその場で並べ替えるか、並べ替えてから新しい配列を返すかに応じて、sortまたはsortedメソッドを使用して、語彙的に(言語辞書のように)単語を並べ替えることができます。 インプレースソート:配列/リストをインプレースでソートする場合、つまり現在の構造自体の順序を変更する場合は、sortメソッドを直接使用できます。たとえば、 例 sent =