本文目錄一覽:
- 1、python中有 stun包嗎
- 2、如何用Python編寫一個素數環
- 3、python 最簡單的方法寫一個程序。
- 4、英語python supports objects怎麼翻譯?
- 5、你都用Python 來做什麼?
- 6、誰來幫幫我
python中有 stun包嗎
有
stun協議主要用來UDP穿越NAT用的,也就是我們經常聽到的UDP打洞。協議的細節內容大家可以參考rfc3489。
如何用Python編寫一個素數環
此文主要目的,是向大家展示如何才能用python語言,來部署STARK算法。
STARKs(可擴容的透明知識論證)是創建一種證明的技術,這項證明中f(x)=y,其中f可能要花很長的時間來進行計算,但是這個證明可以被很快驗證。STARK是“雙重擴容”:對於一個需要t步驟的計算,這會花費大約O(t * log(t))步驟才能完成這個證明,這可能是最優的情況,而且這需要通過~O(log2(t))個步驟才能驗證,對於中等大小的T值,它比原始計算快得多。STARKs也擁有隱私保護的“零知識證明”的特性,雖然我們將這類使用案例應用到其中,從而完成可驗證的延遲功能,不需要這類性質,所以我們不用擔心。
首先,先請幾項說明:
這個代碼還沒有完全審核;在實際使用案例中的情況,還不能保證
這部分代碼是還沒有達到理想狀態(是用Python語言寫的)
STARKs 的“真實情況” 傾向於使用二進制字段而不是素數域的特定應用程序效率的原因;但是,他們確實也表現出,這裡寫出的代碼是合法並且可用的。
沒有一個真實的方法來使用STARK。它是一個非常寬泛的加密和數學架構,同時為不同的應用有不同的設置,以及連續的研究來減少證明者和驗證者的複雜性,同時提高可用性。
此文希望大家能夠知道,模運算和素數域是如何運行的,
並且和多項式概念,插值和估值進行結合。
現在,讓我們一起來了解吧!
MIMC
下面是STARK的功能展示:
def mimc(inp, steps, round_constants): start_time = time.time() for i in range(steps-1): inp = (inp**3 + round_constants[i % len(round_constants)]) % modulus print(“MIMC computed in %.4f sec” % (time.time() – start_time)) return inp
我們選擇MIMC作為案例,因為它(i)很容易理解,(ii)在真實世界使用的很多。函數功能見下圖:
注意:在很多關於MIMC的討論中,你可以典型地看出使用了XOR,而不是+;這是因為MIMC可以在二進制情況下使用,其中添加是XOR;這裡我們會在素數領域進行。
在我們的案例中,常數相對而言會是比較小的列表(例如,64位),這會一直連續地進行周期循環(也就說,在k[64]之後)。MIMC自身可以獲得這個特性,因為MIMC可以向後進行計算(從相應的輸出獲得輸入),但是往後計算需要比向前計算多花費100倍的時間(並且沒有方向可以同步進行)。所以你可以將往後計算的功能想象成計算不能同步的工作量證明,並且往前方向計算的功能可以作為驗證的過程。
x – x(2p-1)/3 是x – x3 的反函數;根據費馬小定理,這是真實的,儘管這個定理沒有費馬大定理出名,但是依然對數學的貢獻很大。
我們嘗試使用STARK來進行更加有效的驗證,而不是讓驗證者必須在向前方向運行MIMC,在完成向後計算之後,證明者可以在向前方向進行STARK計算,並且驗證者可以很簡單地驗證STARK。我們希望計算STARK可以比MIMC向前和向後之間的運行速度差別要小,所以證明者的時間仍然是有初始的向後計算來主導的。而並不是STARK計算。STARK的認證會相對較快(在python語言算法中,可以是0.05-0.3秒),不論初始的計算時間有多長。
所有的計算會在2256 – 351 * 232 + 1個模內完成;我們使用素數模,因為它是小於2256 最大的素數,其中乘法群包含了232 個子集(也就是說,有這樣一個數g,從而在完全232次循環之後,G素數環的連續冪模繞回到1),而且是按照6k+5的形式。首個特性是保證FFT和FRI算法的有效版本,其次是保證MIMC實際上可以向後計算(請見上面提到的x – x(2p-1)/3 使用方法)。
素域操作
我們通過建立方便的等級來進行素域的操作,同時也有多項式的操作。代碼如下,收首先是小數位數:
class PrimeField(): def __init__(self, modulus): # Quick primality test assert pow(2, modulus, modulus) == 2 self.modulus = modulus def add(self, x, y): return (x+y) % self.modulus def sub(self, x, y): return (x-y) % self.modulus def mul(self, x, y): return (x*y) % self.modulus
並且使用擴展歐幾里得算法,來計算模塊逆轉(這和在素域中計算1/x相同):
# Modular inverse using the extended Euclidean algorithm def inv(self, a): if a == 0: return 0 lm, hm = 1, 0 low, high = a % self.modulus, self.modulus while low 1: r = high//low nm, new = hm-lm*r, high-low*r lm, low, hm, high = nm, new, lm, low return lm % self.modulus
上面的算法是相對昂貴的;幸運地是,對於特定的案例,我們需要做很多的模逆計算,有一個數學方法可以讓我們來計算很多逆運算,被稱為蒙哥馬利批量求逆:
使用蒙哥馬利批量求逆來計算模逆,其輸入為紫色,輸出為綠色,乘法門為黑色,紅色方塊是唯一的模逆。
下面的代碼是算法的體現,其中包含一些特別的邏輯。如果我們正在求逆的集合中包含零,那麼它會將這些零的逆設置為 0 並繼續前進。
def multi_inv(self, values): partials = [1] for i in range(len(values)): partials.append(self.mul(partials[-1], values[i] or 1)) inv = self.inv(partials[-1]) outputs = [0] * len(values) for i in range(len(values), 0, -1): outputs[i-1] = self.mul(partials[i-1], inv) if values[i-1] else 0 inv = self.mul(inv, values[i-1] or 1) return outputs
這部分算法接下來會驗證稱為非常重要的東西,特別是當我們開始和不同階的多項式進行計算的時候。
現在我們來看看一些多項式計算。我們把多項式當做一個數據集,其中的i是第i階(例如,x3 + 2x + 1變成[1, 2, 0, 1])。下面就是在一個點進行多項式估算的方法:
# Evaluate a polynomial at a point def eval_poly_at(self, p, x): y = 0 power_of_x = 1 for i, p_coeff in enumerate(p): y += power_of_x * p_coeff power_of_x = (power_of_x * x) % self.modulus return y % self.modulus
困難和挑戰
f.eval_poly_at([4, 5, 6], 2)的輸出是多少?模是31嗎?
下面的解釋就是答案
.其實也有代碼是多項式加法,減法,乘法和除法;這是很長的加減乘除運算。有一個很重要的內容是拉格朗日插值,它將一組 x 和 y 坐標作為輸入,並返回通過所有這些點的最小多項式(你可以將其視為多項式求值的逆):
# Build a polynomial that returns 0 at all specified xs def zpoly(self, xs): root = [1] for x in xs: root.insert(0, 0) for j in range(len(root)-1): root[j] -= root[j+1] * x return [x % self.modulus for x in root] def lagrange_interp(self, xs, ys): # Generate master numerator polynomial, eg. (x – x1) * (x – x2) * … * (x – xn) root = self.zpoly(xs) # Generate per-value numerator polynomials, eg. for x=x2, # (x – x1) * (x – x3) * … * (x – xn), by dividing the master # polynomial back by each x coordinate nums = [self.div_polys(root, [-x, 1]) for x in xs] # Generate denominators by evaluating numerator polys at each x denoms = [self.eval_poly_at(nums[i], xs[i]) for i in range(len(xs))] invdenoms = self.multi_inv(denoms) # Generate output polynomial, which is the sum of the per-value numerator # polynomials rescaled to have the right y values b = [0 for y in ys] for i in range(len(xs)): yslice = self.mul(ys[i], invdenoms[i]) for j in range(len(ys)): if nums[i][j] and ys[i]: b[j] += nums[i][j] * yslice return [x % self.modulus for x in b]
相關數學知識請參見此文的M-N部分。需要注意,我們也會有特別的方法lagrange_interp_4和lagrange_interp_2來加速次數小於 2 的拉格朗日插值和次數小於 4 的多項式運算。
快速傅立葉變換
如果你仔細閱讀上面的算法,你也許會發現拉格朗日插值和多點求值(即求在N個點處次數小於N的多項式的值)都需要耗費2次時間,例如對於1000個點求拉格朗日插值,需要幾百萬個步驟,而且100萬個點的拉格朗日插值需要萬億個步驟。這是不可接受的低效率,所以我們需要使用更加有效的算法,快速傅立葉變換。
FFT只需要花費O(n * log(n))的時間(也就是說,1000個點的計算需要10,000步,100萬個點的計算需要2000步),雖然它的範圍更受限制;x坐標必須是單位根部的完全集合,必須滿足N = 2k 階。也就是說,如果有N個點,那麼x坐標必須某個P值的連續冪,1, p, p2, p3…,其中pN = 1。這個算法能夠用來進行多點計算和插值計算,而且只需要調整一個小參數。
下面就是算法詳情(這是個簡單的表達方式;更詳細內容可以參閱此處代碼)
def fft(vals, modulus, root_of_unity): if len(vals) == 1: return vals L = fft(vals[::2], modulus, pow(root_of_unity, 2, modulus)) R = fft(vals[1::2], modulus, pow(root_of_unity, 2, modulus)) o = [0 for i in vals] for i, (x, y) in enumerate(zip(L, R)): y_times_root = y*pow(root_of_unity, i, modulus) o[i] = (x+y_times_root) % modulus o[i+len(L)] = (x-y_times_root) % modulus return o def inv_fft(vals, modulus, root_of_unity): f = PrimeField(modulus) # Inverse FFT invlen = f.inv(len(vals)) return [(x*invlen) % modulus for x in fft(vals, modulus, f.inv(root_of_unity))]
你可以自己通過一些輸入來運行代碼,並且看看是否能得到想要的結果,當你使用eval_poly_at的時候,給出你期望得到的答案。例如:
fft.fft([3,1,4,1,5,9,2,6], 337, 85, inv=True) [46, 169, 29, 149, 126, 262, 140, 93] f = poly_utils.PrimeField(337) [f.eval_poly_at([46, 169, 29, 149, 126, 262, 140, 93], f.exp(85, i)) for i in range(8)] [3, 1, 4, 1, 5, 9, 2, 6]
傅里葉變換會把[x[0] …. x[n-1]]作為輸入,並且它的目標是輸出x[0] + x[1] + … + x[n-1]作為首個元素,x[0] + x[1] * 2 + … + x[n-1] * w**(n-1)作為第二個元素,等等;快速傅里葉變換可以通過把數據分為兩半,來完成這個,在兩邊都進行FFT,然後將結果結合在一起。
上圖就是信息如何進行FFT運算的解釋。請注意FFT是如何進行兩次數據複製,並且進行粘合,直到你得到一個元素。
現在,我們把所有部分組合起來,看看整件事情是如何:def mk_mimc_proof(inp, steps, round_constants),它生成運行 MIMC 函數的執行結果的證明,其中給定的輸入為步驟數。首先,是一些 assert 函數:
# Calculate the set of x coordinates xs = get_power_cycle(root_of_unity, modulus) column = [] for i in range(len(xs)//4): x_poly = f.lagrange_interp_4( [xs[i+len(xs)*j//4] for j in range(4)], [values[i+len(values)*j//4] for j in range(4)], ) column.append(f.eval_poly_at(x_poly, special_x))
擴展因子是我們將要拉伸的計算軌跡(執行 MIMC 函數的“中間值”的集合)。
m2 = merkelize(column) # Pseudo-randomly select y indices to sample # (m2[1] is the Merkle root of the column) ys = get_pseudorandom_indices(m2[1], len(column), 40) # Compute the Merkle branches for the values in the polynomial and the column branches = [] for y in ys: branches.append([mk_branch(m2, y)] + [mk_branch(m, y + (len(xs) // 4) * j) for j in range(4)])
我們需要步數乘以擴展因子最多為 2^32,因為當 k 32 時,我們沒有 2^k 次的單位根。
computational_trace_polynomial = inv_fft(computational_trace, modulus, subroot) p_evaluations = fft(computational_trace_polynomial, modulus, root_of_unity)
我們首個計算會是得出計算軌跡;也就是說,所有的計算中間值,從輸入到輸出。
assert steps = 2**32 // extension_factor assert is_a_power_of_2(steps) and is_a_power_of_2(len(round_constants)) assert len(round_constants) steps
然後,我們會從將計算軌跡轉換為多項式,在單位根 g (其中,g^steps = 1)的連續冪的軌跡上“放下”連續值,然後我們對更大的集合——即單位根 g2 的連續冪,其中 g2^steps * 8 = 1(注意 g2^8 = g)的多項式求值。
# Generate the computational trace computational_trace = [inp] for i in range(steps-1): computational_trace.append((computational_trace[-1]**3 + round_constants[i % len(round_constants)]) % modulus) output = computational_trace[-1]
黑色: g1 的冪。紫色: g2 的冪。橙色:1。你可以將連續的單位根看作一個按這種方式排列的圓圈。我們沿着 g1的冪“放置”計算軌跡,然後擴展它來計算在中間值處(即 g2 的冪)的相同多項式的值。
我們可以將MIMC的循環常數轉換為多項式。因為這些循環常數鏈是非常通常發生地(在我們的測試中,每64個步驟都會進行),最終證明他們形成了64階的多項式,而且外面可以很容易計算出它的表達式,以及擴展式:
skips2 = steps // len(round_constants) constants_mini_polynomial = fft(round_constants, modulus, f.exp(subroot, skips2), inv=True) constants_polynomial = [0 if i % skips2 else constants_mini_polynomial[i//skips2] for i in range(steps)] constants_mini_extension = fft(constants_mini_polynomial, modulus, f.exp(root_of_unity, skips2))
假設其中有8192個步驟,並且有64個循環常數。這是我們想要做的:我們正在進行FFT,從而計算循環常數來作為g1128 的功能。然後我們在之間加入很多零,來完成g1本身的功能。因為g1128 大約每64步進行循環,我們知道g1這個功能也會同樣。我們只計算這個擴展中的512個步驟,因為我們知道這個擴展會在每512步之後重複。現在,我們按照斐波那契案例中那樣,計算C(P(x)),除了這次是計算,需要注意,我們不在計算使用係數形式的多項式;而是根據高次單位根的連續冪來對多項式進行求值。
c_of_p需要滿足Q(x) = C(P(x), P(g1*x),K(x)) = P(g1*x) – P(x)**3 – K(x);目標是對於任何我們放入計算軌道的x(除了最後一步,因為在最後一步之後,就沒有步驟),計算軌跡中的下個數值就和之前的相等,再加上循環常量。與第1部分中的斐波那契示例不同,其中如果某個計算步驟是在k向量,下個就會是k+1向量,我們把低次單位根( g1 )的連續冪放下計算軌跡,所以如果某個計算步驟是在x = g1i ,下個步驟就會在g1i+1 = g1i * g1 = x * g1。因此,對於低階單位根( g1 )的每一個冪,我們希望最終會是P(x*g1) = P(x)**3 + K(x),或者P(x*g1) – P(x)**3 – K(x) = Q(x) = 0。因此,Q(x) 會在低次單位根 g 的所有連續冪上等於零(除了最後一個)。
# Create the composed polynomial such that # C(P(x), P(g1*x), K(x)) = P(g1*x) – P(x)**3 – K(x) c_of_p_evaluations = [(p_evaluations[(i+extension_factor)%precision] – f.exp(p_evaluations[i], 3) – constants_mini_extension[i % len(constants_mini_extension)]) % modulus for i in range(precision)] print(‘Computed C(P, K) polynomial’)
有個代數定理證明,如果Q(x)在所有這些x坐標,都等於零,那麼最小多項式的乘積就會在所有這些x坐標等於零:Z(x) = (x – x_1) * (x – x_2) * … * (x – x_n)。通過證明在任何單個的坐標,Q(x)是等於零,我們想要證明這個很難,因為驗證這樣的證明比運行原始計算需要耗費更長的時間,我們會使用一個間接的方式來證明Q(x)是Z(x)的乘積。並且我們會怎麼做呢?通過證明D(x) = Q(x) / Z(x),並且使用FRI來證明它其實是個多項式,而不是個分數。
我們選擇低次單位根和高次單位根的特定排列,因為事實證明,計算Z(x),而且除以Z(x)也十分簡單:Z 的表達式是兩項的一部分。
需要注意地是,直接計算Z的分子和分母,然後使用批量模逆的方法將除以Z轉換為乘法,隨後通過 Z(X) 的逆來逐點乘以 Q(x) 的值。需要注意,對於低次單位根的冪,除了最後一個,都可以得到Z(x) = 0,所以這個計算包含其逆計算就會中斷。這是非常不幸的,雖然我們會通過簡單地修改隨機檢查和FRI算法來堵住這個漏洞,所以就算我們計算錯誤,也沒關係。
因為Z(x)可以簡潔地表達,我們也可以獲得另個好處:驗證者對於任何特別的x,可以快速計算Z(x),而且還不需要任何提前計算。對於證明者來說,我們可以接受證明者必須處理大小等於步數的多項式,但我們不想讓驗證者做同樣的事情,因為我們希望驗證過程足夠簡潔。
# Compute D(x) = Q(x) / Z(x) # Z(x) = (x^steps – 1) / (x – x_atlast_step) z_num_evaluations = [xs[(i * steps) % precision] – 1 for i in range(precision)] z_num_inv = f.multi_inv(z_num_evaluations) z_den_evaluations = [xs[i] – last_step_position for i in range(precision)] d_evaluations = [cp * zd * zni % modulus for cp, zd, zni in zip(c_of_p_evaluations, z_den_evaluations, z_num_inv)] print(‘Computed D polynomial’)
在幾個隨機點上,進行概念檢測D(x) * Z(x) = Q(x),從而可以驗證轉賬約束,每個計算步驟是之前步驟的有效結果。但是我們也想驗證邊界約束,其中計算的輸入和輸出就是證明者所說的那樣。只是要求證明者提供P(1), D(1), P(last_step)還有D(last_step)的數值,這些都是很脆弱的;沒有證明,那些數值都是在同個多項式。所以,我們使用類似的多項式除法技巧:
# Compute interpolant of ((1, input), (x_atlast_step, output)) interpolant = f.lagrange_interp_2([1, last_step_position], [inp, output]) i_evaluations = [f.eval_poly_at(interpolant, x) for x in xs] zeropoly2 = f.mul_polys([-1, 1], [-last_step_position, 1]) inv_z2_evaluations = f.multi_inv([f.eval_poly_at(quotient, x) for x in xs]) # B = (P – I) / Z2 b_evaluations = [((p – i) * invq) % modulus for p, i, invq in zip(p_evaluations, i_evaluations, inv_z2_evaluations)] print(‘Computed B polynomial’)
那麼,我們的論證如下。證明者想要證明P(1) == input和P(last_step) == output。如果我們將I(x)作為插值,那麼就是穿越(1, input)和(last_step, output)亮點的線,於是P(x) – I(x)就會在這亮點上等於零。因此,它會證明P(x) – I(x)是P(x) – I(x)的乘積,並且我們通過提高商數來證明這點。
紫色:計算軌跡多項式 (P) 。綠色:插值 (I)(注意插值是如何構造的,其在 x = 1 處等於輸入(應該是計算軌跡的第一步),在 x=g^(steps-1) 處等於輸出(應該是計算軌跡的最後一步)。紅色:P-I。黃色:在x = 1和 x=g^(steps-1)(即 Z2)處等於 0 的最小多項式。粉紅色:(P – I) / Z2。
現在,我們來看看將P,D和B的默克爾根部組合在一起。
現在,我們需要證明P,D和B其實都是多項式,並且是最大的正確階數。但是FRI證明是很大且昂貴的,而且我們不想有三個FRI證明,所以,我們計算 P,D 和 B 的偽隨機線性組合,並且基於它來進行FRI證明:
# Compute their Merkle roots mtree = merkelize([pval.to_bytes(32, ‘big’) + dval.to_bytes(32, ‘big’) + bval.to_bytes(32, ‘big’) for pval, dval, bval in zip(p_evaluations, d_evaluations, b_evaluations)]) print(‘Computed hash root’)
除非所有這三個多項式有正確的低階,不然幾乎不可能有隨機選擇的線性組合,所以這很足夠。
我們想要證明D的階數小於2 * steps,而且P 和 B 的次數小於steps,所以我們其實使用了隨機的P, P * xsteps, B, Bsteps 和 D的隨機組合,並且可以看出這部分組合是小於2 * steps。
現在,我們來檢查下所有的多項式組合。我們先獲得很多隨機的索引,然後在這些索引上為默克爾樹枝提供多項式:
k1 = int.from_bytes(blake(mtree[1] + b’\x01′), ‘big’) k2 = int.from_bytes(blake(mtree[1] + b’\x02′), ‘big’) k3 = int.from_bytes(blake(mtree[1] + b’\x03′), ‘big’) k4 = int.from_bytes(blake(mtree[1] + b’\x04′), ‘big’) # Compute the linear combination. We don’t even bother calculating it # in coefficient form; we just compute the evaluations root_of_unity_to_the_steps = f.exp(root_of_unity, steps) powers = [1] for i in range(1, precision): powers.append(powers[-1] * root_of_unity_to_the_steps % modulus) l_evaluations = [(d_evaluations[i] + p_evaluations[i] * k1 + p_evaluations[i] * k2 * powers[i] + b_evaluations[i] * k3 + b_evaluations[i] * powers[i] * k4) % modulus for i in range(precision)]
get_pseudorandom_indices函數會回復[0…precision-1]範圍中的隨機索引,而且exclude_multiples_of參數並不會給出特定參數倍數的值。這就保證了,我們不會沿着原始計算軌跡進行採樣,否則就會獲得錯誤的答案。
證明是由一組默克爾根、經過抽查的分支以及隨機線性組合的低次證明組成:
# Do some spot checks of the Merkle tree at pseudo-random coordinates, excluding # multiples of `extension_factor` branches = [] samples = spot_check_security_factor positions = get_pseudorandom_indices(l_mtree[1], precision, samples, exclude_multiples_of=extension_factor) for pos in positions: branches.append(mk_branch(mtree, pos)) branches.append(mk_branch(mtree, (pos + skips) % precision)) branches.append(mk_branch(l_mtree, pos)) print(‘Computed %d spot checks’ % samples)
整個證明最長的部分是默克爾樹分支,還有FRI證明,這是有更多分支來組成的。這是驗證者的實質結果:
o = [mtree[1], l_mtree[1], branches, prove_low_degree(l_evaluations, root_of_unity, steps * 2, modulus, exclude_multiples_of=extension_factor)]
在每個位置,證明者需要提供一個默克爾證明,從而讓驗證者能夠檢查這個默克爾證明,並且檢查C(P(x), P(g1*x), K(x)) = Z(x) * D(x)以及B(x) * Z2(x) + I(x) = P(x)(提醒:對於不在初始計算軌道上的x,Z(x)不會是零,所以C(P(x), P(g1*x), K(x)也不會是零)。驗證者也會檢查線性組合是正確的,然後調用。
for i, pos in enumerate(positions): x = f.exp(G2, pos) x_to_the_steps = f.exp(x, steps) mbranch1 = verify_branch(m_root, pos, branches[i*3]) mbranch2 = verify_branch(m_root, (pos+skips)%precision, branches[i*3+1]) l_of_x = verify_branch(l_root, pos, branches[i*3 + 2], output_as_int=True) p_of_x = int.from_bytes(mbranch1[:32], ‘big’) p_of_g1x = int.from_bytes(mbranch2[:32], ‘big’) d_of_x = int.from_bytes(mbranch1[32:64], ‘big’) b_of_x = int.from_bytes(mbranch1[64:], ‘big’) zvalue = f.div(f.exp(x, steps) – 1, x – last_step_position) k_of_x = f.eval_poly_at(constants_mini_polynomial, f.exp(x, skips2)) # Check transition constraints Q(x) = Z(x) * D(x) assert (p_of_g1x – p_of_x ** 3 – k_of_x – zvalue * d_of_x) % modulus == 0 # Check boundary constraints B(x) * Z2(x) + I(x) = P(x) interpolant = f.lagrange_interp_2([1, last_step_position], [inp, output]) zeropoly2 = f.mul_polys([-1, 1], [-last_step_position, 1]) assert (p_of_x – b_of_x * f.eval_poly_at(zeropoly2, x) – f.eval_poly_at(interpolant, x)) % modulus == 0 # Check correctness of the linear combination assert (l_of_x – d_of_x – k1 * p_of_x – k2 * p_of_x * x_to_the_steps – k3 * b_of_x – k4 * b_of_x * x_to_the_steps) % modulus == 0
其實還沒有完成成功;證明對跨多項式檢查和 FRI 所需的抽查次數的可靠性分析是非常棘手的。但是這些就是所有代碼,至少你不用擔心進行瘋狂的優化。當我運行以上代碼的時候,我們會獲得STARK證明,會有300-400倍的證明成本例如,一個需要 0.2 秒的 MIMC 計算需要 60 秒來證明)。這就使得4核機器計算MIMC中的 STARK,實際上可以比後向計算 MIMC 更快。也就是說,在python語言,這會相對低效的實現,並且這也會證明運行時間比例會不同。同時,也值得指出,MIMC 的 STARK 證明成本非常低,因為MIMC幾乎是完美地可計算,它的數學形式很簡單。對於平均計算,會包含更少的清晰計算(例如,檢查一個數是大於還是小於另一個),其計算成本可能會更高,會有大約10000-50000倍。
python 最簡單的方法寫一個程序。
推薦你去看一看一些簡單的python 遊戲的編程的書
還有就是python 的基礎要練習好,找個人給你寫一段代碼你就能學會嗎?
英語python supports objects怎麼翻譯?
python supports objects可以翻譯為“python支持對象。”
重點單詞:python:英 [ˈpaɪθən] 美 [ˈpaɪθɑːn]
n. 蟒,蚺蛇;(計算機)巨蟒語言(一種高級通用編程語言)
詞形變換: 複數 pythons 。
相關短語:
python reticulatus 網紋巨蛇 ; 蟒蛇皮 ; 網紋蟒蛇
Calabar Python 橡皮蟒
Python anchietae 安哥拉蟒
Reticulated python 網紋蟒 ; 網紋蟒蛇
雙語例句:
An African rock python has become the toy of two leopards!
一隻非洲岩蟒竟然成為了兩隻非洲豹的玩具!
In a Python program, you access each class as a Python module.
在python程序中,您將以python模塊的形式使用這些類
Why is the python protected from getting some type of heart disease?
為什麼巨蟒可以遠離一些種類的心臟病呢?
你都用Python 來做什麼?
當我知道可以做這些之後,我特別想會。因為論文查閱、答案確認查詢;想知道豆瓣8分以上電影,或者穿越類的電影、處理工資數據考核表等。
可以幹什麼
1、上學吧答案神器 主要實現的是無限制獲取上學吧網站上的題目答案(繞過 IP 限制),並實現了自動識別驗證碼,只用輸入某個題目的網址,即可一鍵獲取答案,速度非常快。「想要哈哈,自己或者給孩子輔導作業必備啊?」
2、抓取某系統內全部學生姓名學號及選課信息
3、掃描研究生系統上的弱密碼用戶、模擬登錄圖書館系統並自動續借
4、給釣魚網站批量提交垃圾信息 經常會收到含有釣魚網站鏈接的短信的,一般都是盜取 QQ 密碼的偏多,其實可以使用 Python 來批量給對方的服務器提交垃圾數據(需要先抓包),這樣騙子看到信息之後就不知道哪些是真的哪些是假的了,說不定可以解救一部分填了密碼的同學。
5、網易雲音樂批量下載 可以批量下載網易雲音樂熱歌榜的歌曲,可以自己設定數量,速度非常快。
6、批量下載讀者雜誌某一期的全部文章
7、 獲取城市PM2.5濃度和排名
8、爬取某網商品價格信息
你都用 Python 來做什麼?
那Python 作為一種功能強大的編程語言,因其簡單易學而受到很多開發者的青睞。那麼,Python 的應用領域有哪些呢?
Python 的應用領域非常廣泛,幾乎所有大中型互聯網企業都在使用 Python 完成各種各樣的任務,例如國外的 Google、Youtube、Dropbox,國內的百度、新浪、搜狐、騰訊、阿里、網易、淘寶、知乎、豆瓣、汽車之家、美團等等。概括起來,Python 的應用領域主要有如下幾個。
Web應用開發
Python 經常被用於 Web 開發,儘管目前 PHP、JS 依然是 Web 開發的主流語言,但 Python 上升勢頭更勁。尤其隨着 Python 的 Web 開發框架逐漸成熟(比如 Django、flask、TurboGears、web2py 等等),程序員可以更輕鬆地開發和管理複雜的 Web 程序。例如,通過 mod_wsgi 模塊,Apache 可以運行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標準應用接口來協調 HTTP 服務器與基於 Python 的 Web 程序之間的通信。舉個最直觀的例子,全球最大的搜索引擎 Google,在其網絡搜索系統中就廣泛使用 Python 語言。另外,我們經常訪問的集電影、讀書、音樂於一體的豆瓣網(如圖 1 所示),也是使用 Python 實現的。
圖1用Python實現的豆瓣網
不僅如此,全球最大的視頻網站 Youtube 以及 Dropbox(一款網絡文件同步工具)也都是用 Python 開發的。
自動化運維
很多操作系統中,Python 是標準的系統組件,大多數 Linux 發行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在終端下直接運行 Python。有一些 Linux 發行版的安裝器使用 Python 語言編寫,例如 Ubuntu 的 Ubiquity 安裝器、Red Hat Linux 和 Fedora 的 Anaconda 安裝器等等。另外,Python 標準庫中包含了多個可用來調用操作系統功能的庫。例如,通過 pywin32 這個軟件包,我們能訪問 Windows 的 COM 服務以及其他 Windows API;使用 IronPython,我們能夠直接調用 .Net Framework。通常情況下,Python 編寫的系統管理腳本,無論是可讀性,還是性能、代碼重用度以及擴展性方面,都優於普通的 shell 腳本。
人工智能領域
人工智能是項目非常火的一個研究方向,如果要評選當前最熱、工資最高的 IT 職位,那麼人工智能領域的工程師最有話語權。而 Python 在人工智能領域內的機器學習、神經網絡、深度學習等方面,都是主流的編程語言。可以這麼說,基於大數據分析和深度學習發展而來的人工智能,其本質上已經無法離開 Python 的支持了,原因至少有以下幾點:
目前世界上優秀的人工智能學習框架,比如 Google 的 TransorFlow(神經網絡框架)、FaceBook 的 PyTorch(神經網絡框架)以及開源社區的 Karas 神經網絡庫等,都是用 Python 實現的;微軟的 CNTK(認知工具包)也完全支持 Python,並且該公司開發的 VS Code,也已經把 Python 作為第一級語言進行支持。Python 擅長進行科學計算和數據分析,支持各種數學運算,可以繪製出更高質量的 2D 和 3D 圖像。總之,AI 時代的來臨,使得 Python 從眾多編程語言中脫穎而出,Python 作為 AI 時代頭牌語言的位置,基本無人可撼動!最後,如果你的時間不是很緊張,並且又想快速的提高,最重要的是不怕吃苦,建議你可以價位@762459510 ,那個真的很不錯,很多人進步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
網路爬蟲
Python 語言很早就用來編寫網絡爬蟲。Google 等搜索引擎公司大量地使用 Python 語言編寫網絡爬蟲。從技術層面上將,Python 提供有很多服務於編寫網絡爬蟲的工具,例如 urllib、Selenium 和 BeautifulSoup 等,還提供了一個網絡爬蟲框架 Scrapy。
科學計算
自 1997 年,NASA 就大量使用 Python 進行各種複雜的科學運算。並且,和其它解釋型語言(如 shell、js、PHP)相比,Python 在數據分析、可視化方面有相當完善和優秀的庫,例如 NumPy、SciPy、Matplotlib、pandas 等,這可以滿足 Python 程序員編寫科學計算程序。
遊戲開發
很多遊戲使用 C++ 編寫圖形顯示等高性能模塊,而使用 Python 或 Lua 編寫遊戲的邏輯。和 Python 相比,Lua 的功能更簡單,體積更小;而 Python 則支持更多的特性和數據類型。比如說,國際上指明的遊戲 Sid Meier’s Civilization(文明,如圖 2 所示)就是使用 Python 實現的。
圖2Python開發的遊戲
除此之外,Python 可以直接調用 Open GL 實現 3D 繪製,這是高性能遊戲引擎的技術基礎。事實上,有很多 Python 語言實現的遊戲引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。以上也僅是介紹了 Python 應用領域的“冰山一角”,例如,還可以利用 Pygame 進行遊戲編程;用 PIL 和其他的一些工具進行圖像處理;用 PyRo 工具包進行機器人控制編程,等等。有興趣的讀者,可自行搜索資料進行詳細了解。
誰來幫幫我
全部攻略都在下面 你可以把它複製到自己的文當 然後把已經做過的任務從裡面刪除掉
Grand Theft Auto: Vice City(簡稱GTAVC)是一款高自由度的美版遊戲,任務繁多,多是以黑幫生活為背景的競速和射擊任務,每個任務都有不同的難度和獎金,完成主流任務通關大約需要50小時(個人經驗),100%任務通關需要80-100小時。以下為各主流及支線任務及資產任務詳解,歡迎大家及時補充。
序接受任務前的準備
初期的任務不需要什麼裝備,以搶車和熟悉環境為主。
此時應重點熟記噴漆處/換衣處/武器商店及存盤點的位置。
第一章:主流任務(大部分任務與過關有着必然的聯繫,有些雖沒有聯繫,但可以增加財產,提供免費槍支和車輛等)
1) Ken Rosenberg(律師處)的任務
******An Old Friend******到達指定地點。
******The Party******到換衣點換好衣服到達海邊的遊艇處參加晚會,駕車送Mercedes到Pole Position Club。報酬:100
******Back Alley Brawl******到Malibu Club找Kent Paul了解情況後,到綠點標誌處找到廚師,擊倒他並拿他的電話,這時Lance Vance出現,2人被其它廚師追殺,不要戀戰,開Lance的車和他一起逃跑到指定地點。
報酬:200
******Jury Fury******用鎚子恐嚇兩個陪審員,按黃點所指找到第一個,用鎚子擊打車門,直到他下車逃離,按黃點找到第二個人的車,用鎚子打車門直到人出來後逃離。
報酬:400
******Riot******先到Raphael’s處,後到罷工工人處,擊打工人引發騷亂後,進門殺死警衛,射擊油桶引發3輛車爆炸(用其它車撞擊也行)
報酬:1000
2) Juan Garcia Cortez- The Colonel(海邊)的任務
******Treacherous Swine******用電鋸殺死Gonzalez,會引發2個警星,到噴漆處消除報酬:250
******Mall Shootout******到指定地點找一個信使取文件,見面後,信使叛變並逃離,殺死附近槍手後,驅車追擊信使,將他殺死後,取得文件,消除警星後到指定地點。
報酬:500
******Guardian Angels******取到槍後和Lance一起到指定地點參加交易,先到側面的樓上持槍掩護,待另一伙人引發衝突後,射殺敵人,保護Diaz和Lance,殺光敵人後,會出現兩個騎摩托的人搶走錢,其中一人逃離時翻車,騎上該車追擊另一人,殺死該人後,把錢帶回還給Diaz報酬:1000(本任務較難,當衝突發生後,最好在地面用電鋸或自動瞄準的武器將敵人全部殺死,後追擊時,邊追邊開槍射擊較有效)
******Sir, Yes Sir!******偷一輛坦克到指定地點,可以直接搶,如果被士兵發現,會打不開門也可以一直跟隨等他們停車離開時,再搶。
報酬:2000
******All Hands On Deck******保護Colonel安全離開。
先射殺跟隨遊艇四周的槍手,後擊毀前方阻截的遊艇,這時會出現直升飛機,擊毀後過關。
報酬:5000任務必備M60/M4/機槍和火箭筒(打飛機最有效),一定要在直升機尚未飛臨遊艇上空時擊毀它,否則會有敵人下來。
3) Ricardo Diaz- Coke Baron(中心島莊園處)的任務
******The Chase******尾隨一個毒販直到他的目的地。報酬:1000
******Phnom Penh ’86******乘坐Lance駕駛的直升飛機消滅一個莊園的敵人,後下飛機取幾個裝錢的文件包。報酬:2000本任務要點是空中多打油桶引爆,下飛機後還會有敵人
******The Fastest Boat******激戰後,到船廠內啟動開關放下船後,駕船到指定地點。
報酬:4000
******Supply And Demand******駕船第一個到達目的地,後射殺所有跟隨敵人。
本任務考驗駕駛技術,記熟路線就可過關。
報酬:10000
4) Tommy Vercetti- Criminal Empire(V點)的任務
******Death Row******在限制時間內,開車到指定地點,救出Lance後,將他送到醫院本任務一定要有重型武器,能有坦克是最好,而且速度要快,因為Lance正在慢慢死去。報酬:沒有
******Rub Out******和Lance一起,闖入Diaz的豪宅殺死他!
應該先在外圍用狙擊步槍殺死保鏢後再攻入室內。
報酬:50000並且擁有了Diaz的豪宅,可以存盤/換衣,還有常備的跑車和加長豪華車,樓頂還有停機坪!
******Shakedown******在五分鐘內,來到North Point Mall並打碎所有紅點顯示的玻璃。
報酬:2000
******Bar Brawl******帶領手下來到Front Page Bar殺死守衛後,在五分鐘內殺死指定的其他人。報酬:4000
******Copland******到達指定地點後,增加警星以來警察,將警車引入車庫後,換警裝到達North Point Mall,在咖啡廳內裝如炸彈,5秒之內逃離,帶Lance一起上車到達指定地點。
報酬:10000
******Cap The Collector******阻止Mafia到你的產業去收錢雷達上會顯示黃點並告訴你敵人正在幹什麼,在敵人收取全部產業錢之前,追上並殺死敵人。報酬: $30,000
******Keep Your Friends Close******最後一個任務(在完成夜總會和印鈔廠等資產任務後出現):殺死搶上門來的朋友任務開始,Lance和Sonny Forelli打上門來,撬保險柜,這時錢數在瘋狂的減少,先殺死嘍羅,後到頂層殺死Lance,下樓後,遇到Sonny Forelli及其手下,殺死他們,全部清關。
報酬:30000
5) Avery Carrington的任務(接受任務地點在未竣工的大樓附近)
******Four Iron******換上高爾夫球衣,來到球場,乘球車來到指定地點,殺死在場所有人(頭目和保鏢)。報酬:500
******Demolition Man*******縱模型飛機到對面的大樓安裝炸彈。
比較穩妥的辦法是先別取炸彈,*縱飛機到目的地從一樓到四樓先用飛機翅膀將工地工人和守衛屠殺一遍,然後回來取炸彈,此時記時開始,*縱飛機來到各層有標記的油桶上方投放即可。
報酬:1000
******Two Bit Hit******換衣後,駕車來到指定地點,撞死附近的敵人後,靈車會逃跑,在其側面撞擊直至其爆炸(尾隨的話,它會扔棺材,車撞上即炸)。
報酬:2500
6) Love Fist(合唱團)的任務
******Love Juice******先到指定地點為LOVE FIST買毒品,當毒販交易後逃跑時,開車追上並殺死他並取他身上的東西,隨後應要求去接Mercedes,限時送回地點。
報酬:2000
******Psycho Killer******乘坐LOVE FIST的車(很慢)到指定地點,一狂人殺人後逃跑,追殺之。
報酬:4000
******Publicity Tour******(好像生死時速的情節)
上車後,發現有炸彈,車必須保持全速,否則會爆炸,小心駕駛直到炸彈排除。報酬:8000
7) Big Mitch Baker(黑心標誌)的任務
******Alloy Wheels of Steel******駕駛摩托車,參加競賽取得第一報酬:1000
******Messing With The Man******時限內將警星達到4顆以上(盡情的射擊吧,但要注意安全)
簡單的做法是對準一輛車及其廢墟不停的射擊。
報酬:2000
******Hog Tied******騎摩托車,到指定地點殺死所有的人,後到一斜坡處—精彩的摩托飛躍!之後,找到指定的紅色車,回到領取任務處。
報酬:4000
8) Phil Cassidy(P點)的任務
******Gun Runner******駕車追擊運送槍支的車輛,撞擊後拾取掉落的槍支,全部取得後,殺死和擊毀剩餘的人員和車輛。
報酬:2000
******Boomshine Saigon******送受傷的PHIL去醫院,抵達時又改去另一地方。
(開車的時候真好像喝了二斤白酒,整個畫面天旋地轉)
報酬:4000
9) Auntie Poulet- The Haitians(胖黑女人)的任務
******Juju Scramble******在警察到來之前取得三處物品,之後,警星變為四顆,逃吧。
報酬:1000
******Bombs Away*******縱模型飛機炸毀逃跑的汽車和海面的船(黃點標誌)
這種飛機不好*縱,但炸彈是無限的,找到目標放就是了(還有兩架備用)報酬:2000
******Dirty Lickin’s******在Haitians全死之前,殺死所有的Cubans。
先到對面從樓梯到上到屋頂,用狙擊步槍快速殺死敵人,當敵人增援抵達時,採用機槍或火箭筒射殺。
報酬:4000
Umberto- The Cubans(Cuba Cafe處)的任務
******Stunt Boat Challenge******又是賽艇比賽報酬:1000
******Cannon Fodder******駕車帶領同夥抵達指定地點與Haitians作戰,先用火箭筒射殺前方敵人,後用狙擊步槍射殺屋頂的人,再用重武器射殺倉庫中的敵人,後駕車逃回領取任務地點。(警星會有兩顆)
報酬:1000
******Naval Engagement******由RICO駕船,你來開槍,到指定地點殺死所有船上的敵人,取得文件箱後,逃離。(此時,警星會到五顆!)
報酬:4000
******Trojan Voodoo******先搶一輛的Haitian的車(最好是Haitian Voodoo,在不遠的衚衕里有一輛)到達指定地點後,尾隨入工廠,射殺所有Haitian後,安放三顆炸彈後,限時從進來的大門(已鎖住)右側的樓梯上到二樓後逃離。
報酬:10000
10)佔有資產的任務
先買下相關資產,按要求完成任務後,會開始盈利,每天記着來收錢。
1。碼頭(Boatyard)
******Checkpoint Charlie******到碼頭邊,上賽艇後,任務開始,開船完成即可完成後,顯示碼頭開始為你盈利,每天2000
2。冰激凌店(Cherry Popper Ice Cream Factory)
******Distribution******開冰激凌車到市內賣50根不被警察抓即可完成,沒賣完前不能下車。
一定要到人多而且好逃跑的地方,不要到幫會聚集的地方。
每賣3-4根就會增加警星,這時一定要逃跑,待警星沒了再賣。
完成後,顯示冰激凌店為你盈利,每天3000
3。脫衣舞廳(Pole Position)
******Helping Out The Strippers******到裡面的第一間房看舞女表演(不要讓家人看到呀),花費600後,任務完成。完成後,顯示舞廳為你盈利,每天4000
4。計程車公司(Kaufman Cabs)
******VIP******開車到指定地點接一VIP,這時另一輛車搶生意,緊追並撞擊它直到VIP下車到你的車上後,將VIP送到機場。
報酬:1000
******Friendly Rivalry******找到另一家公司的計程車並撞毀它們。
報酬:3000
******Cabmageddon******駕車到指定地點接客人,結果發現是敵對公司的圈套,一堆車向你湧來,要撞毀你,你要在限時內保持車的安全,之後,敵對車隊的首腦駕駛着斑馬紋的車和你決鬥,撞毀並殺死他。
報酬:3000完成後,顯示計程車公司為你盈利,每天5000
5。電影廠(Film Studio)
******Recruitment Drive******到指定地點接Candy和Mercedes回電影廠,追擊並殺死阻止的人。
報酬:1000
******Dildo Dodo******到指定地點駕駛海上飛機散發新電影海報。
先找到最遠的一個藍點,駕機穿越它,會出現一個紅點,再穿越,則會出現下一個藍點,依次在油耗盡前完成。
報酬:2000
******Martha’s Mug Shot******先駕駛骨架飛機追蹤汽車到目的地,後降落飛機,從側面的樓梯進入大廈到標誌指定處,拿出相機向對面游泳池方向,對準目標拍三張照片,會觸發警星至兩顆,消滅阻擊的警衛後回電影廠(最好不要乘飛機,因為電影廠也有敵人在攻擊你)。
報酬:4000
******G Spotlight******駕駛摩托車飛躍一個又一個標誌點,最後來到有探照燈的屋頂處,扭轉燈的方向,將它對準你的XXX廣告。
其實有更簡單的方法來完成,就是當你乘電梯來到樓頂準備第一跳時(第一個標誌點已經出現),這時你下樓在對面樓的院內(上兩層陡坡)平台上,有一架直升飛機,開着它去穿越紅色標誌點吧。
報酬:8000完成後,顯示電影廠為你盈利,每天7000
6。印鈔廠(Print Works)
******Spilling The Beans******先到酒吧處得到信息,後到碼頭的一艘船上的上三層甲板處取得相關資料,出來後,警零大做(兩顆警星),射殺警衛,快跑吧。
報酬:2000在登船前,要先用狙擊步槍將船高處的警衛射殺,之後衝到船上射殺遇到的警衛出來後,遇到的警衛是殺不完的,看準間隙逃跑是上策。
******Hit The Courier******到碼頭處,等直升飛機降落後,一個信使會攜帶偽鈔電版上車,殺死敵人撞毀該車,取得電版,回印刷廠。
報酬:5000完成後,顯示印鈔廠為你盈利,每天8000
7。夜總會(Malibu Club)
******No Escape******開車到警察局門前,進入到側面房間換裝,到另房間取鑰匙,釋放CAM後,殺死阻攔的警察後,帶領CAM逃離,到噴漆處取消警星後,去CAM的住處。
報酬:1000
******The Shootist******到射擊場限時射擊目標,在三場中,取得60分。
報酬:2000此處通過後,會常備一個射擊任務,就是限時一場取得30分,報酬500
******The Driver******在警察的攔截下和他人瘋狂飆車,駕車穿越一個又一個標誌點吧
******The Job******打劫銀行(真是無惡不作呀,越打越感到禍國殃民的說)
進到銀行,射殺警衛(不要殺死在裡面房間的經理),到金庫門前打不開,要回來帶經理去,還是不行,再到大廳去詢問PHIL,這時SWAT攻入,及時射殺並逃離銀行,這時外面已被包圍,血戰後,駕車帶領你的兩名同犯回CAM處。報酬:30000完成後,顯示夜總會為你盈利,每天10000
8。汽車展示廳(Car Showroom)
汽車展示廳需要汽車的名單有四組,每組六款車找齊第一組,展示廳每天為你盈利1500,第二/三/四組,每天盈利2500全部集齊,每天盈利9000第一組A)Landstalker:連接Starfish Island和Little Havana的大橋附近的建築處B)Idaho:常見於downtownC)Esperanto:常見於downtown和Vice Point。
D)Stallion:常見於downtown和Little Havana。
E)Rancher:常見於Ocean Beach和Vice PointF)Blista Compact:常見於Ocean Beach和Washington Beach報酬:Deluxo第二組A)Sabre:常見於downtownB)Virgo:常見於downtownC)Sentinel:Sunshine Autos Showroom停有一輛,街上也可找到D)Stretch:Vercetti Estate處停放一輛E)Washington:常見於WashingtonF)Admiral:常見於Washington報酬:Sabre Turbo第三組A)Cheetah:連接Washington和Starfish Island的大橋附近的建築處B)Infernus:Vercetti Estate處C)Banshee常見於Ocean BeachD)Phoenix:常見於Ocean BeachE)Comet:常見於Ocean BeachF)Stinger:常見於Ocean Beach報酬:Sandking第四組:A)Voodoo:常見於Little HavanaB)Cuban Hermes:常見於Little HavanaC)Caddy:高爾夫球場附近的路上D)Baggage Handler:Escobar機場停車坪E)Mr. Whoopee:在冰激凌廠內F)Pizza Boy:賣Pizza處報酬:Hotring Racer
***找車的經驗:以上只是指出了車的常見位置,其實你如果原地轉的話,大部分的車(指前三組,第四組大多是特殊車輛)都可以遇到。
車輛清單是先給出第一組,找齊後,再給第二組,依次類推為了節省時間,你最好先買幾個車庫,在找當組的車輛時,如果找到後面組的車輛你就把車開到車庫存放,這樣如果需要這種車的話,你直接來提車就可以。在離LOVE FIST合唱團不遠的位置,有個三個位置停車庫,你先將它買下,然後到離此不遠的海邊的一個大型停車場,開始兜圈,你會發現每轉一圈,停的車種都有不同,這樣,你發現需要的,就開到車庫(一個車庫可停2-3輛)只要你不停的轉下去,相信前三組車就會到手的。
第四組中,Voodoo在胖黑女人門前停了一輛,Cuban Hermes就是曾經在出租公司任務中對手公司頭目坐的那輛,Caddy在燈塔附近的草叢中有一輛,具體位置就是走過指向燈塔的小橋後,走沿海邊的路,你會看到右邊的草中有閃光,那就是了。
強烈推薦完成這一任務,因為完成後,獎勵的4輛車中,樓上的兩輛最酷,一輛越野車一輛是號碼為27的賽車,用這輛賽車,在所有的賽車任務中,都會無敵!
當你擁有好車時,還可以到展示廳來參加飆車比賽,勝利會有不同獎金,但是有時飆車的同時會引發兩顆警星相關比賽如下:第一場:Terminal Velocity參賽費:100報酬:400第二場:Ocean Drive參賽費:500報酬:2000第三場:Border Run參賽費:1000報酬:4000第四場:Capital Cruise參賽費:2000報酬:8000第五場:Tour!參賽費:5000報酬:20000第六場:Vice City Endurance參賽費:10000報酬:40000
第二章:支線任務(與正常通關沒有關係,但涉及到100%任務完成度)
1.電話任務(Phone Missions)
******Road Kill******在pizza小子送完貨前殺死他報酬:500
****** Waste The Wife******開車到指定地點,當你主婦出來並啟動車後,於其後追擊並將車撞毀至爆炸然後棄車脫身,讓一切發生的像一場汽車肇事。(只能如此,並且你要離現場足夠遠)報酬:2000
****** Autocide******9分鐘內,殺死指定的幾個人。
第一個人在頭頂的廣告牌上工作,所以你要仰視狙擊第二個人在街角的保安車中坐着,保持一定的距離(太近會被發現)狙擊。第三和第四人在街角的車中,保持一定的距離狙擊,嫌麻煩的話,用火箭筒一擊斃命(最好先擊斃司機,另一人有武器)
第五個人在橋邊的遊艇上,狙擊第六個人在街上騎着摩托車,衝過去撞擊。
由於有限時,所以前四組一定要狙擊斃命,讓他們發現逃跑的話,你就有得追了。報酬:4000
****** Check out at the check in******先行跟蹤,保持不被發現,當雷達上的標誌消失後,射殺和女人講話的男人(手持文件箱)上去奪過箱子後開車將文件送至郊區的武器店(中途會有敵人截殺,作好換車的準備)。報酬:8000
****** Loose Ends******乘直升機到交易進行處,儘可能用狙擊步槍射殺所有在場黑幫,後奪取文件箱,飛往飛機場停機坪。
報酬:16000
2.特技跳躍任務(Unique Jumps)
遊戲中有36處供你駕駛摩托車展示特技跳躍,並且有精彩的多角度慢動作。摩托車一定要高速的,首選PCJ-600
第一個集中地點:起始賓館附近(7處)
01)路邊靠牆的一處木板,從草地方向跳躍02)《Guardian Angels》任務處的樓梯03)同上任務處的斜後方的樓梯04)沿衚衕向前,離此不遠的一處樓梯05)再向前的木箱,沖向它並落到衚衕的中間(不是屋頂)
06)再向前,沖向另一個箱子,以求落到街對面的屋頂07)T型停車場南向斜坡
第二處集中地點:夜總會附近(4處)
08)西向,跳躍水泥台,飛躍河09)南向,跳躍另一處水泥台,飛躍橋10)從上面的橋來到通往Starfish Island的橋,找到土丘,飛躍河11)飛躍後,找到附近一處水泥台,飛躍河
第三處集中地:OCEAN BEACH(3處)
12)一處沒有窗戶的工地,到三層北向跳躍13)一處白色底柱的建築,南向跳躍樓梯,到對面屋頂14)繼續跳躍南向小樓梯,飛躍街道
第四處集中地:Washington Mall停車場(2處)
15)到頂層東向飛躍到對面建築16)在該建築上有一排通風口,從最左邊的飛躍到下一建築
第五處集中地:北邊的碼頭(2處)
17)在第一處泊位間作飛躍18)在另一處泊位間作飛躍
第六處集中地:Starfish Island(1處)
19)一處橘黃色房屋側面的小樓梯
第七處集中地:Prawn Island(1處)
20)一處白色階梯,再連躍緊接着的陡坡後,到一屋頂,通過屋頂陡坡,飛躍電影廠的門
第八處集中地:飛機場(8處)
21)”VC Surf 3D”廣告牌的南向陡坡,可躍至機場屋頂22)主建築內東向機動車坡路,躍至VC Transport大廈頂23)再向南有一長陡坡,可躍至大街上24)機場東向引橋的附近的機動車坡路,作西向跳躍25)機場西向引橋,作西向跳躍26)接上一個動作後,發現另一條東向機動車坡路27)引橋附近找到一紅色雷達,東向是機動車坡路,借雷達飛躍屋頂28)西向沖向一黃黑標誌物,飛躍雷達屋頂(不是雷達)
第九處集中地:Little Haiti and Havana(4處)
29)計程車公司東向斜坡30)計程車公司南向報廢公車附近的斜坡,飛躍公車31)公車附近有下水道管,找到飛躍管道的斜坡32)Cuban’s caf向南,找到在雷達上顯示為+的衚衕,選擇最南的一個作連續跳躍
第十處集中地:〈Hog Tied〉任務(1處)
33)任務中的陡坡
第十一處集中地:〈G-Spotlight〉任務(3處)
34)任務中第一個飛躍(打破玻璃那個)
35)任務中從醫院樓頂的陡坡飛躍至Secondhand Circuitry shop36)任務中最後一個飛躍(至探照燈)
報酬:每次正確的跳躍+100,全部動作完成,報酬:1000000
3.體育館賽車任務(Hyman Memorial Stadium Races)
體育館每晚2000點開門,舉行車賽,勝利有獎金獲得。
以下為相關比賽介紹:
******Bloodring******
駕駛Bloodring Banger穿越足夠多的目標點(每過一點有加秒獎勵),以湊足到一分鐘為限。
中途會有其它車圍追堵截,車毀或時間為零則失敗,不要戀戰。
報酬:1000每撞毀一輛車+100
******Dirtring******駕駛Sanchez穿越所有目標點。
較難的之處是穿越窄牆上的點,你需要不停的變化遠近和左右視角以確定你的車開在上面。
報酬:50000(5分鐘內完成)
10000(5-10分鐘內完成)
5000(超過10分鐘完成)
******Hotring******駕駛Hotring Racer穿越目標點跑12圈報酬:5000(第一名)
1500(第二名)
500(第三名)
4.隱藏包裹(Hidden Packages)
和GTA3一樣,本遊戲也有100個隱藏的包裹等待你去尋找,對應不同的數目,獎勵如下:10個—-防彈衣20個—-電鋸30個—-PYTHON40個—-火焰噴射器50個—-鐳射狙擊槍60個—-機槍70個—-火箭筒(以上出現在豪宅和起始賓館門口)
80個—-水上直升機(在你的豪宅的頂層停機坪)
90個—-坦克(空軍基地中)
100個—100000+阿帕奇(空軍基地中)
5.街頭暴力任務(Rampages)
當你看到有一個中間有骨頭(更像是眼鏡或錄音磁帶的標誌)標誌的粉紅色轉動的光盤時,走過去,你就會接到街頭暴力任務。這種任務都是讓你限時2分鐘內用各種武器殺一定數量的人或毀壞一定數量的車,第一次完成,報酬是50再完成的話,在前一次的基礎上+50以下,列出所有的標誌地點,計35個:
東島任務:
01)***Kill 30 Gang Members in 2 Minutes with Molotov Cocktails***
地點:Ocean View Hotel處向南走,找到指向燈塔的車道,沿着該路走,到草叢附近會發現標誌
02)***Run Over and Kill 30 Gang Members in 2 Minutes***
地點:來到Ocean Beach海灘,在主海灘和燈塔之間有標誌
03)***Destroy 10 Vehicles in 2 Minutes with the Rocket Launcher***
地點:到在遊戲開始時曾經去參加聚會的遊艇碼頭,在另一個門處找到一艘船離港後往南找一排茅屋,在一個沒頂的茅屋裡有標誌
04)***Kill 25 Gang Members in 2 Minutes with the Shotgun***
地點:Washington Mall的屋頂
05)***Kill 10 Gang Members in 2 Minutes with a Katana***
地點:從hospital in Washington南向沿路至第一個左轉後,有一排建築,在第個建築物,兩座房屋之間的樹後有標誌
06***Kill 20 Gang Members in 2 Minutes with a Chainsaw***
地點:同上區域,找到“TO LET”字樣的門,附近有標誌
07)***Kill 25 Gang Members in 2 Minutes with a PSG-1***
地點:自Ocean View Hotel向南走第一個路口右轉直走到路的盡頭,找到一個長着植物的汽車修理廠,開車到屋頂後經過坡路到下一層屋頂,在一個角落裡有標誌
08)***Kill 25 Gang Members in 2 Minutes with the M4***
地點:從醫院朝南方向經過第一個路口右轉後沿路直行,找到右邊兩棟帶樓梯的樓,上到第二座樓,右邊的牆上有標誌,想辦法爬上去
09)***Kill 25 Gang Members in 2 Minutes with an MP5***
地點:從Starfish Island出發,上large east island的橋,下橋後,上右邊的坡路,進到一個有水池和酒店的區域,找到有水池圍繞的矩形建築,正門東向有標誌
10)***Kill 30 Gang Members in 2 Minutes with the SPAS-12***
地點:自Ocean View Hotel向南行,當路不再朝南,而改向西時下車,找到一酒店,面向海灘方向,在酒店的牆和草叢間,有一個標誌
11)***Kill 10 Gang Members in 2 Minutes with the PSG-1***
地點:上述酒店的後面,越過低圍牆,找到有乾涸泳池的區域,在跳水板找到標誌
12)***Drive-by and Waste 35 Gang Members in 2 Minutes with an Uzi***
地點:Starfish Island東向下橋後,第一個路口左轉,朝北走到路的盡頭,靠近水的附近找到標誌
13)***Kill 20 Gang Members in 2 Minutes with a Chainsaw***
地點:east island連接Leaf Links的橋附近,右邊牆的豁口處可抵達海邊泊位,泊位邊,靠近橋的方向,找到標誌
14)***Kill 30 Gang Members in 2 Minutes with a Rocket Launcher***
地點:North Point Mall,進入商場2樓有植物的區域,找到標誌
15)****Kill 35 Gang Members in 2 Minutes with an M4***
地點:North Point Mall,商場東門外,一堵矮牆後找到目標
16)***Kill 25 Gang Members in 2 Minutes with a Python***
地點:North Point Mall和海灘間的建築中,找一個黃白門前有樓梯的矮建
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/300852.html