私は2048を再作成して基本的なコーディングを教えようとしていますが、壁に当たっています。私は何をしようとしているPython 3.5.2 - list.sort()が機能しません
は次のとおりです。
1)空のスペース
2のためにゼロの値によって占められ、ボード上のスペースを表す行列を、作成)によるマトリックスの軸を転置プレイヤが
3のピースを移動させたい軸)(np.tolistを用いて行列の各列からリストを作成する)
4)ソートするlistID.sort(キー= BOOL)を使用しその真理値によってリストを作成し、そのゼロの部分をインプレース
5の値を持つアイテムを並べ替えると、リストを変更することで、スペースを保存せずにリスト)値
6に等しいリスト内の隣接するアイテムをマージ)結合するために使用np.columnstack前の行列
7)彼らはもともと私がつまずい)ステップ4であるそうだ
をしたものに軸を転置をovewriting、マトリックスにリストを並べ替えます。リストはまったくソートされません。何も変わりません。
たとえばa0(最初の行のリスト)は[0,2,0,0]ですが、ソート後はSTILL [0,2,0,0]です。
import numpy as np
a = np.matrix([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
print (a)
b = np.random.randint(low=0, high=3)
c = b
while c == b:
c = np.random.randint(low=0, high=3)
d = np.random.randint(low=0, high=3)
e = d
while e == d:
e = np.random.randint(low=0, high=3)
a.itemset((b, c), 2)
a.itemset((d, e), 2)
print (a)
score = np.sum(a)
print (score)
#while 0 in a:
#direction = input("U, D, L, R?")
#if direction == "U":
# mode = 1
#if direction == "D":
# mode = 2
#if direction == "L":
# mode = 3
#if direction == "R":
# mode = 4
#transpose axes according to mode
#sort each array in matrix by boolean value
#refuses to sort?
a0 = a[0].tolist()
a0.sort(key=bool)
a1 = a[1].tolist()
a1.sort(key=bool)
a2 = a[2].tolist()
a2.sort(key=bool)
a3 = a[3].tolist()
a3.sort(key=bool)
#reverse each list depending on mode
#combine back into matrix
print (a0, a1, a2, a3)
a = np.column_stack([[a0], [a1], [a2], [a3]])
print (a)
私は検索と検索が、私が見たものはどのように私にいくつかの洞察を提供しなかったしました:あなたがそう望むなら、ここ
はWIPコードを見て、自分で見て、私のひどい、noobyです私はこれが間違っていると推測しています。
編集:SOLVED!
import numpy as np
import numpy.matlib
import itertools
a = np.matlib.zeros((4,4))
print (a)
b = np.random.randint(low=0, high=3)
c = b
while c == b:
c = np.random.randint(low=0, high=3)
d = np.random.randint(low=0, high=3)
e = d
while e == d:
e = np.random.randint(low=0, high=3)
a.itemset((b, c), float(2))
a.itemset((d, e), float(2))
print (a)
score = np.sum(a)
print (score)
#while 1 in a:
#direction = input("U, D, L, R?")
#if direction == "U":
# mode = 1
#if direction == "D":
# mode = 2
#if direction == "L":
# mode = 3
#if direction == "R":
# mode = 4
#transpose axes according to mode
#sort each array in matrix by boolean value
#refuses to sort?
a0 = a[0].tolist()
a01 = []
a0_2 = list(itertools.chain.from_iterable(a0))
for item in a0_2:
a01.append(float(item))
a01.sort(key=bool)
a1 = a[1].tolist()
a11 = []
a1_2 = list(itertools.chain.from_iterable(a1))
for item in a1_2:
a11.append(float(item))
a11.sort(key=bool)
a2 = a[2].tolist()
a21 = []
a2_2 = list(itertools.chain.from_iterable(a2))
for item in a2_2:
a21.append(float(item))
a21.sort(key=bool)
a3 = a[3].tolist()
a31 = []
a3_2 = list(itertools.chain.from_iterable(a3))
for item in a3_2:
a31.append(float(item))
a31.sort(key=bool)
#reverse each list depending on mode
#combine back into matrix
print (a01, a11, a21, a31)
a = np.vstack([[a01], [a11], [a21], [a31]])
print (a)
(問題のないものの後のすべてのもののように)重要でないもの、およびすべての冗長性(同じ破損コードの4つのコピー)を取り除きます。 –
印刷コマンドは、私がコードに加えた変更が実際にリストをソートできるかどうかを確認するためのものです。 a(数)ラインの各々は、マトリックスの4つの行のうちの1つから作成された別個のリストである。 –
私は、配列をコピーするための規約は、単に参照を作成するので、c = bではなくc [:] = bであると考えました。 –